<SEC-DOCUMENT>0000851205-22-000008.txt : 20220217
<SEC-HEADER>0000851205-22-000008.hdr.sgml : 20220217
<ACCEPTANCE-DATETIME>20220217160708
ACCESSION NUMBER:		0000851205-22-000008
CONFORMED SUBMISSION TYPE:	10-K
PUBLIC DOCUMENT COUNT:		136
CONFORMED PERIOD OF REPORT:	20211231
FILED AS OF DATE:		20220217
DATE AS OF CHANGE:		20220217

FILER:

	COMPANY DATA:	
		COMPANY CONFORMED NAME:			COGNEX CORP
		CENTRAL INDEX KEY:			0000851205
		STANDARD INDUSTRIAL CLASSIFICATION:	INDUSTRIAL INSTRUMENTS FOR MEASUREMENT, DISPLAY, AND CONTROL [3823]
		IRS NUMBER:				042713778
		STATE OF INCORPORATION:			MA
		FISCAL YEAR END:			1231

	FILING VALUES:
		FORM TYPE:		10-K
		SEC ACT:		1934 Act
		SEC FILE NUMBER:	001-34218
		FILM NUMBER:		22648102

	BUSINESS ADDRESS:	
		STREET 1:		ONE VISION DR
		CITY:			NATICK
		STATE:			MA
		ZIP:			01760
		BUSINESS PHONE:		5086503000

	MAIL ADDRESS:	
		STREET 1:		ONE VISION DRIVE
		CITY:			NATICK
		STATE:			MA
		ZIP:			01760
</SEC-HEADER>
<DOCUMENT>
<TYPE>10-K
<SEQUENCE>1
<FILENAME>cgnx-20211231.htm
<DESCRIPTION>10-K
<TEXT>
<XBRL>
<?xml version="1.0" ?><!--XBRL Document Created with Wdesk from Workiva--><!--Copyright 2022 Workiva--><!--r:4878a129-9b80-4a38-a303-2b34e8ac6131,g:f27b0d4b-0a26-4a3f-9754-6435629f6abe,d:929e97f6a142453c8a8057dbb6451118--><html xmlns:dei="http://xbrl.sec.gov/dei/2021q4" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:cgnx="http://cognex.com/20211231" xmlns:country="http://xbrl.sec.gov/country/2021" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:us-gaap="http://fasb.org/us-gaap/2021-01-31" xmlns:srt="http://fasb.org/srt/2021-01-31" xmlns="http://www.w3.org/1999/xhtml" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:currency="http://xbrl.sec.gov/currency/2021" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2020-02-12" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xml:lang="en-US"><head><meta http-equiv="Content-Type" content="text/html"/>


<title>cgnx-20211231</title></head><body><div style="display:none"><ix:header><ix:hidden><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:AmendmentFlag" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18yLTEtMS0xLTI4ODA1_96c4b33c-4ce3-4130-b9b2-59c8082307da">false</ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:DocumentFiscalYearFocus" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM180LTEtMS0xLTI4ODA1_10f46249-f5cb-4c36-9134-725f22c37537">2021</ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:DocumentFiscalPeriodFocus" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM181LTEtMS0xLTI4ODA1_7bff3197-4c9c-4d32-bfa7-c95732e3c4ac">FY</ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityCentralIndexKey" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM184LTEtMS0xLTI4ODA1_9d522d7c-aded-4a81-9385-7e99de9ede19">0000851205</ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:CurrentFiscalYearEndDate" format="ixt:date-month-day" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM185LTEtMS0xLTI4ODA1_07a7ab5b-c856-4a84-bd84-41588cc32226">12/31</ix:nonNumeric><ix:nonFraction unitRef="shares" contextRef="i8d58524b17ed4bb29e951219ac0be8d4_I20220130" decimals="0" name="dei:EntityCommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18xNy0yLTEtMS0yODgwNQ_623b05d3-f151-4608-9ada-b360087dd5c0">173,915,951</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704" decimals="0" name="dei:EntityPublicFloat" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18xOC0zLTEtMS0yODgwNQ_58cd1bc5-4454-40ca-a624-4feebaf40856">14,919,879,186</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMS0xLTEtMS0yODgwNQ_83a8cb10-16a4-40b6-8fe9-849f80787413">776</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMS0yLTEtMS0yODgwNQ_631b2888-620d-4792-b00f-1b18efca405e">831</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0xLTEtMS0zNjE5Mw_4fed5f3f-060e-4c3d-942d-87fb3f35b180">137,124</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0yLTEtMS0zNjE5NQ_89e781cc-e420-4fc7-a6d4-759ea08f963c">102,258</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0xLTEtMS0zNjE5Nw_4dc47643-8ab9-4a72-8f4c-94d2b8d70733">587,981</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0yLTEtMS0zNjIwMA_dbdb6e3a-9cb3-43e9-a616-4ebdc34da03e">390,417</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0zNjIyNQ_54c9d95e-5fee-48f0-a663-9785d86bd2a1">0</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0zNjIyNQ_d649e1c1-e3dc-4e47-8349-d990f93d7ce3">0</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0zNjIyNw_a9ead8f8-6394-46ed-a1d6-02037a432097">0</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0zNjIyNw_f370e15e-1ec4-4d36-a05d-4e0aeed10307">0</ix:nonFraction><ix:nonFraction unitRef="usdPerShare" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0xLTEtMS0yODgwNQ_b63cef7d-d425-4617-8ff4-6da0c68d7b94">0.01</ix:nonFraction><ix:nonFraction unitRef="usdPerShare" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0yLTEtMS0yODgwNQ_63e63726-e154-470c-a563-bbceb4afeeed">0.01</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0xLTEtMS0yODgwNQ_08af655f-6423-4502-9b7e-51a11a0ab7bc">400</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0yLTEtMS0yODgwNQ_1b20f052-e697-43aa-937f-0fee38445e6c">400</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesIssued" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0yODgwNQ_801947d5-0d41-4804-bec2-a183e8648086">&#8212;</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="INF" name="us-gaap:PreferredStockSharesIssued" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0yLTEtMS0yODgwNQ_93a5a155-d8d6-474e-8900-5a2fe5331385">&#8212;</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesOutstanding" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0yODgwNQ_15a939cb-85e6-40cc-a000-1238f8859044">&#8212;</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="INF" name="us-gaap:PreferredStockSharesOutstanding" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0yLTEtMS0yODgwNQ_bf780bba-da16-487d-95c6-dc97a08f599d">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usdPerShare" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNi0xLTEtMS0yODgwNQ_8864173d-3b7d-4ca6-b3e8-2b2534c1b3ac">0.002</ix:nonFraction><ix:nonFraction unitRef="usdPerShare" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNi0yLTEtMS0yODgwNQ_d63bff3a-9f20-4bad-9e25-c86270c913ba">0.002</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNy0xLTEtMS0yODgwNQ_4867219a-e15c-459d-b791-ba2bfaa16214">300,000</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNy0yLTEtMS0yODgwNQ_6c50ed95-5f9f-4d9d-84db-390459ec4a60">300,000</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:CommonStockSharesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOC0xLTEtMS0yODgwNQ_fd0f716b-376e-4c9a-aa0d-20c1d975335a">175,481</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:CommonStockSharesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOC0yLTEtMS0yODgwNQ_74165429-953f-42c4-92df-8759c83fcc78">175,790</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:CommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOS0xLTEtMS0yODgwNQ_d7df0d42-18d2-4f16-b050-e2adb810f97f">175,481</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:CommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOS0yLTEtMS0yODgwNQ_229ee341-6e69-476b-b35e-4d502d22d6d1">175,790</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0xLTEtMS0yODgwNQ_03184ed3-fabc-433d-bb15-c8ab04367271">2,206</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0yLTEtMS0yODgwNQ_9c1ff91f-f0d4-4169-a2d8-92ea42c27903">981</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0zLTEtMS0yODgwNQ_0f290fc4-9459-493c-87a5-54f83094d026">515</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0xLTEtMS0yODgwNQ_15f4f65a-5101-47f4-83b7-3a6cadd4347c">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0yLTEtMS0yODgwNQ_5b8ab6ff-7ea9-4417-bfec-546e2e590793">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0zLTEtMS0yODgwNQ_2d300d2a-6bf8-4a53-8e2f-cbb0f1b5691f">&#8212;</ix:nonFraction><ix:nonNumeric contextRef="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad">P2Y</ix:nonNumeric><ix:nonNumeric contextRef="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e">P11Y</ix:nonNumeric><ix:nonNumeric contextRef="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c">P5Y</ix:nonNumeric><ix:nonNumeric contextRef="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467">P5Y</ix:nonNumeric><ix:nonNumeric contextRef="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3">P3Y</ix:nonNumeric><ix:nonNumeric contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231" name="cgnx:ProductWarrantyPeriod" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79">P1Y</ix:nonNumeric><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzEtMS0xLTEtMjg4MDU_19b8b182-396a-4f76-abcb-787b5092c642">1,271,000</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzEtMi0xLTEtMjg4MDU_56545d09-8dc0-46c0-8f60-597270c7de1c">1,271,000</ix:nonFraction><ix:nonNumeric contextRef="i4edf2b491ae343058e414bb114b696ff_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzMtMS0xLTEtMjg4MDU_c3a44025-8221-45c1-968a-1fda78340a61">2</ix:nonNumeric><ix:nonNumeric contextRef="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzMtMi0xLTEtMjg4MDU_43f7fe37-6c90-4c0b-97bd-a13614a09d2e">P2Y</ix:nonNumeric><ix:nonNumeric contextRef="i487b1fa56179474584006ee96f49cb3b_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzQtMS0xLTEtMjg4MDU_85657f51-b583-48d9-b367-109fd1fb54a7">5</ix:nonNumeric><ix:nonNumeric contextRef="icac4a2d4e54740b7ba386ffd5cac93b9_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzYtMS0xLTEtMjg4MDU_bcf9da19-9308-49bf-bdc9-d0c1df8dec7f">2</ix:nonNumeric><ix:nonNumeric contextRef="i867b84c7e5284728a5c3229df8312988_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzctMS0xLTEtMjg4MDU_bc23334d-439e-4227-ac15-c8b6e2ff7299">5</ix:nonNumeric><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="cgnx:MaximumInvestmentOfCompanyInPartnership" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzgtMS0xLTEtMjg4MDU_7ef726fc-7212-4c85-9e91-3652f1102396">5</ix:nonFraction><ix:nonNumeric contextRef="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzEtMS0xLTEtMjg4MDU_ce6a46d0-92af-4737-85b1-7a9128340cc1">11</ix:nonNumeric><ix:nonNumeric contextRef="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzItMS0xLTEtMjg4MDU_e930a41e-faf8-4792-af26-1fc6957e10d1">5</ix:nonNumeric><ix:nonNumeric contextRef="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzMtMS0xLTEtMjg4MDU_a7d6b555-53e4-465e-96e7-f1e169c45f3e">5</ix:nonNumeric><ix:nonNumeric contextRef="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzQtMS0xLTEtMjg4MDU_87507c2d-9122-4650-a296-806dc98ad785">3</ix:nonNumeric><ix:nonNumeric contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231" name="cgnx:ProductWarrantyPeriod" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTpmZmNmMjY5MDIwODQ0OWY1OWFkMWFlZGViYmY0YjQ2Ny90YWJsZXJhbmdlOmZmY2YyNjkwMjA4NDQ5ZjU5YWQxYWVkZWJiZjRiNDY3XzEtMS0xLTEtMjg4MDU_1b6414ee-54ad-432f-8e6a-3295d3c232b3">1</ix:nonNumeric><ix:nonNumeric contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231" name="cgnx:RevenuePaymentTerms" format="ixt-sec:durday" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo5YjkxY2YxYWU2NDQ0NzEwYjlkMzg2ZmQyODQwMWFmMS90YWJsZXJhbmdlOjliOTFjZjFhZTY0NDQ3MTBiOWQzODZmZDI4NDAxYWYxXzEtMS0xLTEtMjg4MDU_a959b7b6-1bba-4c75-88be-130943c35d0d">30</ix:nonNumeric><ix:nonFraction unitRef="usd" contextRef="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231" decimals="INF" name="us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMS0xLTEtMjg4MDU_1a7229af-29cd-4f5a-966d-7eb6cd6d5004">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231" decimals="INF" name="us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMi0xLTEtMjg4MDU_a9997be3-20bb-40fb-9903-94c992ee26ee">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i985bf57ca9034add86f8477105710972_D20190101-20191231" decimals="INF" name="us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMy0xLTEtMjg4MDU_0176e4f9-b3aa-41dc-b4ab-2ccbb6198491">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231" decimals="INF" name="cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMS0xLTEtMjg4MDU_cd33a4f3-f3e7-4c93-9606-f8ddf1248d0f">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231" decimals="INF" name="cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMi0xLTEtMjg4MDU_75d1868b-911d-414a-8974-9db2e6f51fad">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i985bf57ca9034add86f8477105710972_D20190101-20191231" decimals="INF" name="cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMy0xLTEtMjg4MDU_240c8e6c-f35e-41a1-b4e7-c014e96f1213">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDU5L2ZyYWc6NTU5MmI4ODNiMWVjNDlhZmFiM2E3ODdmYWFlZDhkYTAvdGFibGU6MmNiMzAzMWI5MTBlNDI5OGE4NTUyNmZkMTc0ZTJiMWEvdGFibGVyYW5nZToyY2IzMDMxYjkxMGU0Mjk4YTg1NTI2ZmQxNzRlMmIxYV8xLTEtMS0xLTQ3NjM3_3cc1c130-c4ac-453a-b792-c5e254287fe0">0</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDU5L2ZyYWc6NTU5MmI4ODNiMWVjNDlhZmFiM2E3ODdmYWFlZDhkYTAvdGFibGU6MmNiMzAzMWI5MTBlNDI5OGE4NTUyNmZkMTc0ZTJiMWEvdGFibGVyYW5nZToyY2IzMDMxYjkxMGU0Mjk4YTg1NTI2ZmQxNzRlMmIxYV8yLTEtMS0xLTQ3NjM5_7f5da7d7-1e28-4be0-b441-f75316f6e46b">0</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDUyL2ZyYWc6ZjQ0YWRlYjg5YmQwNDBkNGEyNjdmNzg4MTVjODQ5ZTcvdGV4dHJlZ2lvbjpmNDRhZGViODliZDA0MGQ0YTI2N2Y3ODgxNWM4NDllN18xNjQ5MjY3NDQxNzMx_17dabb41-6ec0-4c46-bd6b-7d52cd0d26f0">2,148,000</ix:nonFraction><ix:nonNumeric contextRef="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQxOQ_cac7f81a-55a4-43ac-b985-ca51aa05fe04">P4Y</ix:nonNumeric><ix:nonNumeric contextRef="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzItMS0xLTEtMjg4MDU_1bcc7ee2-6437-4560-bcb9-76e4a03f470e">4</ix:nonNumeric><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMS0xLTEtMjg4MDU_16d6a44a-df22-40eb-897b-ab0bd0506541">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="0" name="cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMi0xLTEtMjg4MDU_9782b5bf-cb2e-4a41-98d4-845f843b32cc">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="0" name="cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMy0xLTEtMjg4MDU_b79f38a1-b934-4a08-b8de-665830cc28f4">&#8212;</ix:nonFraction><ix:nonNumeric contextRef="ie2cecd8166824b219b0f762f0d92690b_D20210101-20211231" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzYtMS0xLTEtMjg4MDU_cf8a4e04-7919-4319-ada7-18af17a039cf">3</ix:nonNumeric><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjkvZnJhZzo0MzE0ZmU4ZWMzNDM0MThkODlkNmMwNzExZmU0YTUxYi90YWJsZTpiODM5MjFkODAzMTg0MTlhYjVlMGRjYmEyNDk1OTg3Ny90YWJsZXJhbmdlOmI4MzkyMWQ4MDMxODQxOWFiNWUwZGNiYTI0OTU5ODc3XzEtMS0xLTEtMjg4MDU_3efe0d04-b2ec-434c-a86c-da2c01d788d0">50</ix:nonFraction><ix:nonFraction unitRef="segment" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="INF" name="us-gaap:NumberOfReportableSegments" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODQvZnJhZzpkNDVjNDljNjcyZGU0ZjUyYTAyZTU3Nzc4Y2E3Mjk3MC90ZXh0cmVnaW9uOmQ0NWM0OWM2NzJkZTRmNTJhMDJlNTc3NzhjYTcyOTcwXzMw_8e6d808e-86ea-43c7-9e6b-d1438214067d">one</ix:nonFraction></ix:hidden><ix:references xml:lang="en-US"><link:schemaRef xlink:type="simple" xlink:href="cgnx-20211231.xsd"></link:schemaRef></ix:references><ix:resources><xbrli:context id="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-07-04</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="usd"><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unit><xbrli:context id="i8d58524b17ed4bb29e951219ac0be8d4_I20220130"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2022-01-30</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="shares"><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unit><xbrli:context id="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:unit id="usdPerShare"><xbrli:divide><xbrli:unitNumerator><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unitNumerator><xbrli:unitDenominator><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unitDenominator></xbrli:divide></xbrli:unit><xbrli:context id="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic4a82097975f4c7480e06bdb28375b4a_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia991b13c7b074439964a26d579235ee4_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i96c261e6b700458483d45a690ef3428a_I20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id5144431cfa8410c8f5604b0516d97a6_I20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4c4fc943007b4423b33adbf4b3ff8a57_I20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7df50ac0cf1c4b6eb205200699db5753_I20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i11575d448348449484334a63f5c382ec_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i453cd53948004e0aa6fa938860922977_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i030b7b3d0bcc48ecaee75f945d4b0453_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7081618970d14cb2b47071acddcb076f_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iad4f0d348bb84191a2d66c6f05e66a42_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9c19e11e3b0440699b8af52e65c3c7df_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i82c8153d3c304531b0e739269e49f99c_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5da6d6afe29042359bdc6f1b874d4cb9_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ie93e1f918c464567bea84b17ce78960c_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia417c41204b44fc68c2a79deecb306f3_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i279b29b9bc484ec9be070b54e58d3f78_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id7e84bf16cc948edbbb96f1890b28baa_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i09333c39ce8e4914b814b0cf653db4b2_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i042f17eb78834accb0d70fa7b6537a83_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id801c8716b924358a2daa2c6f91c5f88_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:ComputerHardwareAndSoftwareMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i12cf82d7d05c43c78d4287e35cb1a678_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:ComputerHardwareAndSoftwareMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i826aff0c969544a5a804571eeeecac12_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologiesAndOtherIntangibleAssetsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7caad8bad2f949faa4c2da1d3c09973c_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologiesAndOtherIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic244bf99eff947c5a9ba44ab7a5b9152_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8f47b56746584e8cb790dd66dabcb5bd_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i498bff2ae83341f19a665c2ba6f5f152_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4edf2b491ae343058e414bb114b696ff_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i487b1fa56179474584006ee96f49cb3b_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="icac4a2d4e54740b7ba386ffd5cac93b9_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i867b84c7e5284728a5c3229df8312988_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:unit id="number"><xbrli:measure>xbrli:pure</xbrli:measure></xbrli:unit><xbrli:context id="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i596d75bc930d4fa195d274ceea0712fa_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icbe413b8380b4b74b96766d056cfe1be_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7916769b28254833942a005f3b6b3b20_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:ChiaroTechnologiesLLCMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i1ba31dc29f6e4fd583635b026a78c70e_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iff8191abdb834fa281b3e2476e14a7dc_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id9c74275ab59442fb9ded8deb5674d28_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7222cc20036644a3b44ea75faaa45733_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-03-30</xbrli:startDate><xbrli:endDate>2020-06-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i985bf57ca9034add86f8477105710972_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="idc23ae27e8c045be80b9ae12562de1e4_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iba5325337fb447629dd40761b20085ac_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4f034dcc34ec4f97b1b287538da11e25_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryBillSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id45501f2632647e7bbcd9975d9d5f9b8_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryBillSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2e6e3966f74d464096c8781827b91619_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i70319cf3a4cf43499a8860f2430ec150_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5270f007445d4f288628feb6aa72bd8d_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5bcf06fc6e654f668da80ed998328a22_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i146468f197ec4ffaaf568dea9d808150_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ie09121a494bc4ffb945fdfa43d22add3_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i901039d16aa346d6b2d5832a09c9e94e_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id5d7726e056e4214aa7f49e065353761_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i64fc80d231e947aa9bf222b2de427dac_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i8bbd57d8b5e24e379260a83a26e0335d_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6c11c5f296d94cb8b215d81fb2599862_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i941a6d85ef5e4db6887a4477c54ad5ec_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iaa0e107732624743b8b9116c079cf534_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ifa4fc42921044fb2acd09f06fc702f0e_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i783fdc7f101e437ca76e266767bbed79_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i93a793acd6604354bfdeb7a098a7ab7c_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:HardwareAndSoftwareMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i82d6f2a16b9647c5a4153885f8b16d0f_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:HardwareAndSoftwareMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i237f0e88a14e4c138cf770014c3cff20_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib4078ec246234f17861cbe7d06d41e4b_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i72196343338a4ad09f7dac2538d4ed3b_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i22b7a4443157492c859ccb73ff921a37_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i9680e81eb9994576b1c178a64360acd9_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:PropertySubjectToOrAvailableForOperatingLeaseAxis">cgnx:SouthboroughMassachusettsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic0eb9a7570944c1ab9168006bb2aa1e2_I20200628"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-06-28</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i955fae1ce0f246f2a6383d7e4314f3aa_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="idaa85ffc8fe24348a2c3c89ee7ee05da_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i30b6dbba7a294a05a1de3af16074b12b_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9077befdd9a24efd88f7a65bb72737eb_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i79c23c3a546a49569d45604d210eade1_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i10f501ebc93e427c829a4d3c79634b1f_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ie2a20d1e0bed4733afa945949392815a_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i497cc41f6abb47b884fd3672c59e3cb5_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if1cc1bfb37c149759d1841760856c173_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ie0c7309d4e304594823af30b7f8c6732_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OtherIntangibleAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icc1eb3d1f8994634b4304b31764535fe_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-03-30</xbrli:startDate><xbrli:endDate>2020-06-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InProcessResearchAndDevelopmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-03-30</xbrli:startDate><xbrli:endDate>2020-06-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-03-30</xbrli:startDate><xbrli:endDate>2020-06-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib58b9b72d04944dca738439418889e81_I20200526"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-05-26</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i632328a9aece45169ee9a65a27b7de43_I20200628"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-06-28</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i868c84ba01b343969f185bfae762ea09_D20200330-20200628"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-03-30</xbrli:startDate><xbrli:endDate>2020-06-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8403092ce78e46f287d80209e29e1af1_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:EUR</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="eur"><xbrli:measure>iso4217:EUR</xbrli:measure></xbrli:unit><xbrli:context id="i46b3383699f54592b7ede9d54961aeb6_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:EUR</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i00459c765246439382160d7274b765d4_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="cny"><xbrli:measure>iso4217:CNY</xbrli:measure></xbrli:unit><xbrli:context id="ia68a5da34e724a81893bf9be3e413d8c_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:MXN</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="mxn"><xbrli:measure>iso4217:MXN</xbrli:measure></xbrli:unit><xbrli:context id="iad34d6812e224628aaf77d2b49448365_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:MXN</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia4ac27b77f9347d59de048dc447103ab_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:JPY</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="jpy"><xbrli:measure>iso4217:JPY</xbrli:measure></xbrli:unit><xbrli:context id="i93ebcd0f4d05432abddab316785497af_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:JPY</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i71a8b16636c744088ae729b18fffb3af_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:GBP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="gbp"><xbrli:measure>iso4217:GBP</xbrli:measure></xbrli:unit><xbrli:context id="i233b3e65c4014824a116028552a33e6b_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:GBP</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4c575fbed7374c838d828cf6cf30c79c_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:HUF</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="huf"><xbrli:measure>iso4217:HUF</xbrli:measure></xbrli:unit><xbrli:context id="i45f95c900587476f9a93fde30adfbaf1_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:HUF</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iccaf5fac85854bc78b3b41877b85ec45_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CAD</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="cad"><xbrli:measure>iso4217:CAD</xbrli:measure></xbrli:unit><xbrli:context id="iec122b031b4a4ca6b3633d5405753240_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CAD</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibaaae7dc618d498782e79c903a2d481b_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="krw"><xbrli:measure>iso4217:KRW</xbrli:measure></xbrli:unit><xbrli:context id="i497d9d68981c44ebb35250193a714eb7_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i00a64ebf1e97460399ab2caa80730e9b_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:TWD</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="twd"><xbrli:measure>iso4217:TWD</xbrli:measure></xbrli:unit><xbrli:context id="ia7422c5d263441d58ee5c68d7143fed0_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:TWD</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if322716820c4489ab6cadd0ef3660c0a_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:SGD</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="sgd"><xbrli:measure>iso4217:SGD</xbrli:measure></xbrli:unit><xbrli:context id="i6c8355418cf24fdd81200d77b1ee46b9_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:SGD</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i9c4108ecbb154b9689e5bb60e97d0990_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if647a88887404ad0929e10c5f5dee470_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7b4846a2320b403d951b251fe43bd88b_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">cgnx:AccruedExpensesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7d912f3d97904dfbba9ec1dc3cc1dfda_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">cgnx:AccruedExpensesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7738a97fca024a00829bfaed4f536e63_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9ba0ae2aca854dc3accbe251cf58f567_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i80a722d47fc34f3388de28ec4399d41e_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i60257de642494bd1a3f4066707e2f9c2_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8b857d6347784d988a40fca03c6bd5be_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i565882183d72492aba9afe23745416e2_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9478b847f49e4115928476734dea9c64_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if9fc10a69f254823a47c3b4444adf857_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia09d8e352163476a90fdecfca35298c5_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i978d0a39464248048a6adfb0338684b7_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if8ddf600fc0548fd9b6824b8496ad6bd_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="icccce2aa3ff74ec8a00c89034af41fc6_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4d3eb05597f64cf7a138bef69f2aa751_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i25c7239e696d401ab604a30f0c0518a0_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i3215f7665a784c45aa04c3aae867d897_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia18096d71003430faf7fc3b7199862b2_I20160427"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2016-04-27</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibc957dc1955640e68337295dda8c967f_I20180425"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2018-04-25</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic97efe271a134f3bb78c5e0f0c609dcf_I20160428"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2016-04-28</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="vote"><xbrli:measure>cgnx:Vote</xbrli:measure></xbrli:unit><xbrli:context id="icee5a3a1e242481d9356d6512fd34156_I20181029"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-10-29</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib603cdbab9484789a7f90ba5470fa1fc_I20200312"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-03-12</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i10dc5333496046ad93d3758e0acfd0ad_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6b8a386974cc4d9ba5c5b000e859ee31_D20190101-20190929"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-09-29</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idf4cd8f218d9414faa06b3c55217d8fe_D20190930-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2019-09-30</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="icf5af4f37b30453da1856b17e836038f_D20200928-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-09-28</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i92b408fed68541808d3ffb0dc09c1308_D20211004-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2021-10-04</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i22ac892990aa4be6bea90ca4813eba67_D20201228-20201228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-12-28</xbrli:startDate><xbrli:endDate>2020-12-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i39707b072766401697c047f98d14f735_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idd5ac6d2068247fbaaf23d9582522e3a_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib1a2499886a74a06992d20a3f6b53efb_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0d2d7b131c914aa3813c98711237ce0c_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icace5d553dd64444a04f231db888b7ef_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ie01ba116a66c474d84265161be749d7d_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i84da32e16b6e4d98bbab4cb608388e92_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:unit id="group"><xbrli:measure>cgnx:group</xbrli:measure></xbrli:unit><xbrli:context id="ia5a436cb2a4b40208126b213a56803a5_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id25aced7c5bb44fe800cc559f6166ff8_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i2f165371239b461d8c3a62bad05a3b86_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if8ab3d4c8f6a477f9e4c9e2b8888052a_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i6b6b154e38b2410788bce4314a3d47bf_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id16927732c3f42ae9f82e1e9ddd307ed_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i52df1bc9391d4aeeb11bfa4d9b3d10b8_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i5b1d16e2e3c74de6973268b28ba5fc9c_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if66ef68195be46f98ef233ab367cb7c7_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ie2cecd8166824b219b0f762f0d92690b_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RestatementAxis">srt:ScenarioPreviouslyReportedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ChangeInAccountingEstimateByTypeAxis">cgnx:ChangeinGlobalIntangibleLowTaxedIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RestatementAxis">srt:ScenarioPreviouslyReportedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ChangeInAccountingEstimateByTypeAxis">cgnx:ChangeinGlobalIntangibleLowTaxedIncomeMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i9c502ee279f04030a69eee355d54bd16_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:ForeignTaxBenefitGainsTaxedOutsideUSMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9f2450d3a26446f4b85444fb9284cece_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:ForeignTaxExpenseTransferPriceAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia5768b0e810e4157b4eae97d0d1b08c6_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4452ed78907f4d219ac405351100fab2_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4bc97ab3a3094188b15fe79424b28ed5_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iffc7295ab67445f8bd6fc5841d17366c_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">us-gaap:RevenueCommissionersIrelandMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i6a2c8b01c55f45a383585d973a17734e_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">us-gaap:StateAdministrationOfTaxationChinaMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia7b70df5ca144c19aa32c0b1861d055c_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">country:KP</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0c3c1c01066849da8660af393f5f2d8c_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id624ea8a42db4ca6a9c8968c5c834a62_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">us-gaap:ResearchMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2d7f829283d84ef790a2db8c1f7a3fcc_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">cgnx:StateResearchAndExperimentationMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7c9f8c01dcbb4324b28ecd41ace87fd9_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8bd1c6a0aebf4c03923831a10dbbf2a6_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i197680ce6f4a47b08921cc9e95e40369_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic686f763cf704bc2867ccfd9c33dc6c7_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i35cd9fec0a4c4a84826235af293727b2_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ica46cebde58f4747ba082879193d850e_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:unit id="segment"><xbrli:measure>cgnx:Segment</xbrli:measure></xbrli:unit><xbrli:context id="ia69b052cbadd44c094541da53ba42a51_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic575a52a81ce437ca78b900c07321681_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idcbb00e30a054c9b8dc545052284d730_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib4cda65b83b74a7dbc080d8fedc4d2d9_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib4944b90959b4b208c0bdfb2c87ee10e_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic40beac310a64112b7eb01f6089573c1_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id5d24b55c6524d6790756827a7d2e825_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ibf814c6bf04c4e9f9549f0a609b74a55_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iaa126896ec044da89c6508ff396378a1_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibf2b1fc85cfa4174b619517220508ae0_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3c5581736dbd4ad78c3d6e655e93c4ea_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ife8b2f31ce1a4b4faa1a745448f716d4_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i14b5eafbd9ff4be7b9cc2e0919d2dbc7_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4921f86f652d4f2e94c4bf9eb25c62e9_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i6413254449a541988fcda017a15d0532_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ieee8eed26dbb44f6aae613473b0dd2ef_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic693d5b307414a6c964e0ec425adb970_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic325874dd99f48839c0a0457e159b140_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if4d3420bee2e4188a13523c87c8f50bf_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7f7dc7e149214e86b41eb5b243af420c_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4b9aad94c75f49d5ae535996bb5e0901_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7c5b8c599c9542b590f4d0e8f2ced040_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i64c87fe8f4fd462c8a6abc5bb13ea76c_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iaf6c363e3eef41d1b00219abbd835f2d_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i93b04104f7b44c7996743be1d0745981_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-10-16</xbrli:startDate><xbrli:endDate>2019-10-16</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i237d35dadb3345778dc0eb90a293a886_D20200928-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-09-28</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9d7909d7f5534ecaae7d688eb528cbe5_I20191016"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-10-16</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i9ff3a1f2d3354f8b9e1a3862c0d45393_I20200526"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2020-05-26</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i37df6f70493e443da67537c212115ae6_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0045cc5a44304747895b82294c5175c6_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if297a806261f492eba965b248dda338d_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:unit id="employees"><xbrli:measure>cgnx:Employees</xbrli:measure></xbrli:unit><xbrli:context id="i7a0d52863fc64903a1109399c06704c4_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="idb40d4ead52e4f36857491315a43c857_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iba8f6eeab77d4be9ab1ba46ab39e7c44_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic9333dbc34ff416cb78724fc271fe455_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib7bc21127ccf42c5bc8aaa79832c5c1a_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ie3121f3a9e4f4a46a3cc68910d57a5fd_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia644d53df91e4028845acea026614935_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i718830787ba64d9698a6ce9053392157_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib389c9638e4c4a1d98465f63dd2ef34f_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iee99fc76bf3243cbb665a0905540cbb9_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0c0cc45df87a4b288075510563ebd8e5_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iac93fa12ce9346e89d74784d16a4f197_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia0707d1af0314a219bcf26b1a7beb49a_I20220217"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2022-02-17</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2022-02-17</xbrli:startDate><xbrli:endDate>2022-02-17</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i6d0d3605ae3a47539276eb78b04403f8_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i5ee1836468e946feba304dc524cc45e2_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3dbe155ff0004ff98791a6784bd4c861_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i770852fc55a6463e8da481d0bf571699_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id3be38a15bc644abb5cb39c413e9327b_I20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iee5da482094546e299baa3d92293d330_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i2131ea7c04b54b24a5d7cbceda55413f_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i32a8205607454b739eb248993c515fd1_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i72aa6831b808442cacbb8b5967d7fa20_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib429e8609f0f44a1954e51d83ac80522_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i407ba1b76823440abdd13f6172c63277_I20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if82943db9b87496a88e504bd346dacaa_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i1602cc3e102c42a98e804619365a09b5_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2021-01-01</xbrli:startDate><xbrli:endDate>2021-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idf98d43520b547b68e3e7b727e376e60_I20211231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2021-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i3c925d5554374d1da0be16bce2fc2da0_I20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><ix:relationship arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" fromRefs="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58 id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9 id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d" linkRole="http://www.xbrl.org/2003/role/link" toRefs="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21" order="1"></ix:relationship></ix:resources></ix:header></div><div id="i929e97f6a142453c8a8057dbb6451118_1"></div><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:3pt;text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:11pt;font-weight:700;line-height:120%">UNITED STATES</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:11pt;font-weight:700;line-height:120%">SECURITIES AND EXCHANGE COMMISSION</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:11pt;font-weight:700;line-height:120%">Washington, D.C. 20549</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:22pt;font-weight:700;line-height:120%">FORM <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:DocumentType" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYx_06284f82-4344-4b0d-9ab7-6a6010dff5f2">10-K</ix:nonNumeric> </span></div><div style="margin-top:2pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-style:italic;font-weight:400;line-height:120%">(Mark One)</span></div><div style="margin-top:2pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:DocumentAnnualReport" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYy_9876166c-0457-454c-a55e-4ef7b62c998c">&#9746;</ix:nonNumeric></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">   Annual report pursuant to Section&#160;13 or 15(d) of the Securities Exchange Act of 1934 for the fiscal year ended <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:DocumentPeriodEndDate" format="ixt:date-monthname-day-year-en" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yMTQ_6e095cce-7998-43f4-967d-e8eca71f1719">December 31, 2021</ix:nonNumeric> or</span></div><div style="margin-top:2pt;text-indent:24.75pt"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:DocumentTransitionReport" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYz_4d9a3c67-6e34-491a-88d1-617e8ab94100">&#9744;</ix:nonNumeric> </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%"> Transition report pursuant to Section&#160;13 or 15(d) of the Securities Exchange Act of 1934 for the transition period from </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%;text-decoration:underline">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">to</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%;text-decoration:underline">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">.</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:120%">Commission File Number </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:120%;text-decoration:underline"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityFileNumber" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY0_b48c3cc7-ca0f-4c34-b9f4-e89ea66dc5a5">001-34218</ix:nonNumeric></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:120%"> </span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:17pt;font-weight:700;line-height:120%;text-decoration:underline"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityRegistrantName" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY1_a3c6aad8-ac86-4000-992e-bae571b5ba6a">COGNEX CORP</ix:nonNumeric>ORATION</span></div><div style="margin-top:2pt;text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-style:italic;font-weight:400;line-height:120%">(Exact name of registrant as specified in its charter)</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:511.50pt"><tr><td style="width:1.0pt"></td><td style="width:13.75pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:136.75pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:252.25pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:85.00pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:13.75pt"></td><td style="width:1.0pt"></td></tr><tr style="height:11pt"><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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityIncorporationStateCountryCode" format="ixt-sec:stateprovnameen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDYyMWM2ZmJhMDAxNDhhODk3NTczZjVmZWVjZjJiNmEvdGFibGVyYW5nZTpkNjIxYzZmYmEwMDE0OGE4OTc1NzNmNWZlZWNmMmI2YV8wLTEtMS0xLTI4ODA1_be72d44d-9862-429b-8b70-f60e605dccfa">Massachusetts</ix:nonNumeric></span></td><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:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityTaxIdentificationNumber" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDYyMWM2ZmJhMDAxNDhhODk3NTczZjVmZWVjZjJiNmEvdGFibGVyYW5nZTpkNjIxYzZmYmEwMDE0OGE4OTc1NzNmNWZlZWNmMmI2YV8wLTMtMS0xLTI4ODA1_f56577dd-07d5-4003-8c21-f94585433ac3">04-2713778</ix:nonNumeric></span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:21pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:100%">(State or other jurisdiction of<br/>incorporation or organization)</span></td><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:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-style:italic;font-weight:400;line-height:100%">(I.R.S. Employer<br/>Identification No.)</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityAddressAddressLine1" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY4_2b688482-908c-45fc-9166-e45e1ac8cffc">One Vision Drive</ix:nonNumeric> </span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:120%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityAddressCityOrTown" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY5_dc6691fa-9f38-42c9-9b64-ad0d7316887a">Natick</ix:nonNumeric>,&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityAddressStateOrProvince" format="ixt-sec:stateprovnameen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDcw_c03341e0-f275-413d-97d1-1c90cd1b5775">Massachusetts</ix:nonNumeric>&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityAddressPostalZipCode" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY2_3f3c79cf-7381-4087-9768-c40f27bf7b15">01760</ix:nonNumeric>-2059</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:120%">(<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:CityAreaCode" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDU5_ab15c2d6-bb85-4096-bfb5-8261b83e7861">508</ix:nonNumeric>) <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:LocalPhoneNumber" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYw_4e25b5b5-3520-45d0-9343-d897513db50a">650-3000</ix:nonNumeric> </span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:512.25pt"><tr><td style="width:1.0pt"></td><td style="width:78.25pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:85.75pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:174.25pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:85.75pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:78.25pt"></td><td style="width:1.0pt"></td></tr><tr style="height:21pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="9" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-style:italic;font-weight:400;line-height:100%">(Address, including zip code, and telephone number,<br/>including area code, of principal executive offices)</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Securities registered pursuant to Section&#160;12(b) of the Act:</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:37.609%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:19.574%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:39.517%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%;text-decoration:underline">Title of Each Class</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%;text-decoration:underline">Trading Symbol(s)</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%;text-decoration:underline">Name of Exchange on Which Registered</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:Security12bTitle" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTAtMS0xLTI4ODA1_f742d775-afe1-476f-8170-9717a7959f22">Common Stock, par value $.002 per share</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:TradingSymbol" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTEtMS0xLTI4ODA1_7888db19-4168-4609-ba8e-ec27d9875298">CGNX</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:SecurityExchangeName" format="ixt-sec:exchnameen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTItMS0xLTI4ODA1_f33b0a2b-8c46-4318-98f4-73ff3b14e757">The NASDAQ Stock Market LLC</ix:nonNumeric></span></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Securities registered pursuant to Section&#160;12(g) of the Act: None</span></div><div style="margin-top:2pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Indicate by check mark if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act.</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:22.507%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.536%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.814%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.738%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.047%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityWellKnownSeasonedIssuer" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6NDc4NzQzYjZhYzcwNGRmMWFjNzNjMjFlOWUxYTU0NjYvdGFibGVyYW5nZTo0Nzg3NDNiNmFjNzA0ZGYxYWM3M2MyMWU5ZTFhNTQ2Nl8wLTItMS0xLTI4ODA1_09bbb11a-6fd9-4b8f-85b7-676f912cce64">Yes</ix:nonNumeric></span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9746;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">No</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9744;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Indicate by check mark if the registrant is not required to file reports pursuant to Section&#160;13 or Section&#160;15(d) of the Act.</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:22.507%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.536%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.814%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.738%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.047%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Yes</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9744;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityVoluntaryFilers" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDQ1YzFlYmRhOTg3NDUwM2E4YWU1NTc0NDE4MGNlMDAvdGFibGVyYW5nZTpkNDVjMWViZGE5ODc0NTAzYThhZTU1NzQ0MTgwY2UwMF8wLTgtMS0xLTI4ODA1_4b838c7a-761f-4b2c-8b39-43031e060274">No</ix:nonNumeric></span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9746;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant (1)&#160;has filed all reports required to be filed by Section&#160;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)&#160;has been subject to such filing requirements for the past 90 days.</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:22.507%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.536%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.814%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.738%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.047%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityCurrentReportingStatus" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZWE0M2IyOTUxNzA0NDZkOWJiNGE0ZTM2NjE2Y2M1MDIvdGFibGVyYW5nZTplYTQzYjI5NTE3MDQ0NmQ5YmI0YTRlMzY2MTZjYzUwMl8wLTItMS0xLTI4ODA1_b6e81b1b-deac-496a-bcfb-ef35cd895d26">Yes</ix:nonNumeric></span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9746;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">No</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9744;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">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).</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:22.507%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.536%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.814%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.738%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.047%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityInteractiveDataCurrent" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6NzFhMjg0ODczNGYwNDI2MGEzYTJkOTg1NzU3OTgyZTMvdGFibGVyYW5nZTo3MWEyODQ4NzM0ZjA0MjYwYTNhMmQ5ODU3NTc5ODJlM18wLTItMS0xLTI4ODA1_a51d289f-cb75-4181-8bb9-438a2c2c1dcc">Yes</ix:nonNumeric></span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9746;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">No</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9744;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant is a large accelerated filer, an accelerated filer, a non-accelerated filer, a smaller reporting company, or emerging growth company. See the definitions of &#8220;large accelerated filer,&#8221; &#8220;accelerated filer,&#8221; &#8220;smaller reporting company&#8221; and "emerging growth company" in Rule 12b-2 of the Exchange Act. (Check one):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:0.1%"></td><td style="width:2.732%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:45.967%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:2.272%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:44.796%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9746;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityFilerCategory" format="ixt-sec:entityfilercategoryen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18wLTEtMS0xLTI4ODA1_27ff78c2-9e8f-4ade-8d7e-34c710b089d2">Large accelerated filer</ix:nonNumeric></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:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9744;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Accelerated filer</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9744;</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Non-accelerated filer</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:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntitySmallBusiness" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18xLTMtMS0xLTI4ODA1_8e0c41bd-ad28-4332-b173-d116de389527">&#9744;</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Smaller&#160;reporting&#160;company</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></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:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityEmergingGrowthCompany" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18yLTMtMS0xLTI4ODA1_373dc028-4297-4788-8967-f8752613d0bb">&#9744;</ix:nonNumeric></span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Emerging growth company</span></td></tr></table></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">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. </span><span style="color:#000000;font-family:'Wingdings',sans-serif;font-size:8pt;font-weight:400;line-height:120%">o</span></div><div style="margin-top:2pt"><span><br/></span></div><div style="margin-top:2pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant has filed a report on and attestation to its management&#8217;s assessment of the effectiveness of its internal control over financial reporting under Section 404(b) of the Sarbanes-Oxley Act (15 U.S.C. 7262(b)) by the registered public accounting firm that prepared or issued its audit report. </span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:22.507%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.536%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.814%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.738%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.047%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Yes</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:IcfrAuditorAttestationFlag" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6Njg3NzU3NWMxMGNkNDM2YzhkNWZjYjY4NGRlM2I3M2IvdGFibGVyYW5nZTo2ODc3NTc1YzEwY2Q0MzZjOGQ1ZmNiNjg0ZGUzYjczYl8wLTQtMS0xLTI4ODA1_c254510e-92f0-41dc-96fd-d53cd9f47140">&#9746;</ix:nonNumeric></span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">No</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:11pt;font-weight:400;line-height:100%">&#9744;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Indicate by check mark whether the registrant is a shell company (as defined in Rule 12b-2 of the Exchange Act).</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:22.507%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.536%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.814%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.738%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.791%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.146%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.047%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Yes</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:EntityShellCompany" format="ixt-sec:boolballotbox" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ODk0YjRjZTE5ZjQxNDAyMWI2ZjgxMzBkYTFlYWE1MjEvdGFibGVyYW5nZTo4OTRiNGNlMTlmNDE0MDIxYjZmODEzMGRhMWVhYTUyMV8wLTQtMS0xLTI4ODA1_a4eef1c6-0280-41d6-9f0e-9ec59db3e3c6">&#9744;</ix:nonNumeric></span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">No</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial Unicode MS',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#9746;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;&#160;</span></td><td colspan="3" style="padding:0 1pt"></td></tr></table></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Aggregate market value of voting stock held by non-affiliates of the registrant as of July&#160;4, 2021: $<ix:nonFraction unitRef="usd" contextRef="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704" decimals="0" name="dei:EntityPublicFloat" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yNzEz_58cd1bc5-4454-40ca-a624-4feebaf40856">14,919,879,186</ix:nonFraction> </span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">Common stock, par value $.002 per share, outstanding as of January&#160;30, 2022: <ix:nonFraction unitRef="shares" contextRef="i8d58524b17ed4bb29e951219ac0be8d4_I20220130" decimals="0" name="dei:EntityCommonStockSharesOutstanding" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yNzgw_623b05d3-f151-4608-9ada-b360087dd5c0">173,915,951</ix:nonFraction> shares</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">DOCUMENTS INCORPORATED BY REFERENCE:</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">The registrant intends to file a Definitive Proxy Statement pursuant to Regulation 14A within 120&#160;days of the end of the fiscal year ended December&#160;31, 2021. Portions of such Proxy Statement are incorporated by reference in Part&#160;III of this report.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div><span><br/></span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_7"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ANNUAL REPORT ON FORM 10-K</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">FOR THE YEAR ENDED DECEMBER 31, 2021 </span></div><div style="margin-top:18pt;text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">INDEX</span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:5pt"><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:14.104%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:72.584%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.012%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_10">PART I</a></span></div></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_10">1</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 1.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_13">BUSINESS</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_13">1</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 1A.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_16">RISK FACTORS</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_16">5</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM&#160;1B.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_19">UNRESOLVED STAFF COMMENTS</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_19">13</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 2.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_22">PROPERTIES</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_22">13</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 3.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_25">LEGAL PROCEEDINGS</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_25">14</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 4.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_28">MINE SAFETY DISCLOSURES</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_28">14</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 4A.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_31">INFORMATION ABOUT OUR EXECUTIVE OFFICERS</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_31">14</a></span></div></td></tr><tr style="height:15pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_34">PART II</a></span></div></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_34">15</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 5.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_37">MARKET FOR REGISTRANT&#8217;S COMMON EQUITY, RELATED STOCKHOLDER MATTERS, AND ISSUER PURCHASES OF EQUITY SECURITIES</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_37">15</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 6.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_40">[RESERVED]</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_40">17</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 7.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_43">MANAGEMENT&#8217;S DISCUSSION AND ANALYSIS OF FINANCIAL CONDITION AND RESULTS OF OPERATIONS</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_43">17</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM&#160;7A.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_58">QUANTITATIVE AND QUALITATIVE DISCLOSURES ABOUT MARKET RISK</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_58">27</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 8.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_61">FINANCIAL STATEMENTS AND SUPPLEMENTARY DATA</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_61">30</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 9.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_205">CHANGES IN AND DISAGREEMENTS WITH ACCOUNTANTS ON ACCOUNTING AND FINANCIAL DISCLOSURE</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_205">69</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 9A.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_208">CONTROLS AND PROCEDURES</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_208">69</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 9B.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_211">OTHER INFORMATION</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_211">71</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 9C.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_2036">DISCLOSURE REGARDING FOREIGN JURISDICTIONS THAT PREVENT</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_2036"> </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_2036">INSPECTIONS</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_2036">71</a></span></div></td></tr><tr style="height:15pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_214">PART&#160;III</a></span></div></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_214">71</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM&#160;10.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_217">DIRECTORS, EXECUTIVE OFFICERS, AND CORPORATE GOVERNANCE</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_217">71</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM&#160;11.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_220">EXECUTIVE COMPENSATION</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_220">71</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM&#160;12.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_223">SECURITY OWNERSHIP OF CERTAIN BENEFICIAL OWNERS AND MANAGEMENT AND RELATED STOCKHOLDER MATTERS</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_223">71</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM&#160;13.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_226">CERTAIN RELATIONSHIPS AND RELATED TRANSACTIONS, AND DIRECTOR INDEPENDENCE</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_226">72</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM&#160;14.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_229">PRINCIPAL ACCOUNTING FEES AND SERVICES</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_229">72</a></span></div></td></tr><tr style="height:15pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_232">PART&#160;IV</a></span></div></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_232">72</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM&#160;15.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_235">EXHIBITS AND FINANCIAL STATEMENT SCHEDULES</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_235">72</a></span></div></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">ITEM 16.</span></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_238">FORM 10-K SUMMARY</a></span></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_238">72</a></span></div></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div><span><br/></span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_10"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">PART I</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">This Annual Report on Form 10-K contains forward-looking statements within the meaning of the federal securities laws. Readers can identify these forward-looking statements by our use of the words &#8220;expects,&#8221; &#8220;anticipates,&#8221; &#8220;estimates,&#8221; &#8220;believes,&#8221; &#8220;projects,&#8221; &#8220;intends,&#8221; &#8220;plans,&#8221; &#8220;will,&#8221; &#8220;may,&#8221; &#8220;shall,&#8221; &#8220;could,&#8221; &#8220;should,&#8221; and similar words and other statements of a similar sense. Our future results may differ materially from current results and from those projected in the forward-looking statements as a result of known and unknown risks and uncertainties. Readers should pay particular attention to considerations described in the section captioned &#8220;Risk Factors,&#8221; appearing in Part&#160;I&#160;- Item&#160;1A of this Annual Report on Form 10-K. We caution readers not to place undue reliance upon any such forward-looking statements, which speak only as of the date made. We disclaim any obligation to subsequently revise forward-looking statements to reflect the occurrence of anticipated or unanticipated events or circumstances after the date such statements are made.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Unless the context otherwise requires, the words &#8220;Cognex</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:6.5pt;font-weight:400;line-height:120%;position:relative;top:-3.5pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">,&#8221; the &#8220;Company,&#8221; &#8220;we,&#8221; &#8220;our,&#8221; &#8220;us,&#8221; and &#8220;our company&#8221; refer to Cognex Corporation and its consolidated subsidiaries.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_13"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 1: BUSINESS</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Corporate Profile</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex Corporation was incorporated in Massachusetts in 1981. Our corporate headquarters are located at One Vision Drive, Natick, Massachusetts 01760 and our telephone number is (508)&#160;650-3000.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex is a leading worldwide provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required. Machine vision is the technology that gives computers and automation equipment the ability to see. Machine vision products are used to automate the manufacturing and tracking of discrete items, such as mobile phones, aspirin bottles, and automobile tires, by locating, identifying, inspecting, and measuring them during the manufacturing or distribution process. Machine vision is important for applications in which human vision is inadequate to meet requirements for size, accuracy, or speed, or in instances where substantial cost savings are obtained through the reduction of labor or improved product quality. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex operates in one segment, machine vision technology. We offer a variety of machine vision products that have similar economic characteristics, have the same production processes, and are distributed by the same sales channels to the same types of customers. Although Cognex sells to customers in a variety of industries, our largest industries are logistics, automotive, and consumer electronics, which combined represented approximately 70% of our total revenue in 2021. A large customer in the logistics industry represented approximately 17% of our total revenue in 2021.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Machine Vision Market</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex machine vision is used to automate manufacturing and distribution processes in a variety of industries, where the technology is widely recognized as an important component of automated production and quality assurance. Virtually every manufacturer or distributor can achieve better quality and efficiency by using machine vision, and therefore, Cognex products are used by a broad base of customers across a variety of industries, including logistics, automotive, consumer electronics, medical-related, semiconductor, consumer products, and food and beverage.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Although we consider Cognex to be one of the leading machine vision companies in the world, reliable estimates of the machine vision market and the number and relative size of competitors are not readily available. Our competitors include other vendors of machine vision systems, controllers, and components; manufacturers of image processing systems, sensors, and components; and system integrators. We also compete with internal engineering departments of current or prospective customers, as well as open-source tools available for free from various companies.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex&#8217;s ability to compete depends on our ability to design, manufacture, and sell high-quality products, as well as our ability to develop new products and functionality that meet evolving customer requirements. The primary competitive factors affecting the choice of a machine vision system include product functionality and performance, ease of use, vendor reputation, price, and post-sales support. The importance of each of these factors varies depending on the specific customer&#8217;s needs.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">1</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Business Strategy</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our goal is to expand our position as a leading worldwide provider of machine vision products for industrial customers. We are selective in choosing growth opportunities that we believe will maintain our historically high gross margin percentages, which have been in the mid 70 percent range for the past several years and reflect the value our customers place on our innovative products. Our high gross margins have the potential to provide us with strong operating leverage in our financial model, as any incremental revenue at such margins falls through to operating income at a high ratio. Our strong and unique corporate culture reinforces our values of customer first and innovation, and enables us to attract and retain smart, energetic, and creative talent who are motivated to solve the most challenging vision tasks.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We invest heavily in research and development in order to maintain our position as a technology leader in machine vision. We invest in technology that makes vision easier to use and more affordable, and therefore, available to a broader base of customers, such as our vision sensor products that enable customers with a lower budget to use machine vision without the help of sophisticated engineers. We also invest in technology that addresses the most challenging vision applications, such as our 3D vision products that solve applications where a height or volume measurement is required and our deep learning vision software that solves complex applications with unpredictable defects and deviations. We invest through internal development, as well as the acquisition of businesses and technologies.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We continue to invest in our core markets, such as automotive and consumer electronics, where we are a leading provider of vision and ID products for factory automation, while making significant investments in the logistics market, where we are moving beyond barcode reading into more complex applications in e-commerce and omni-channel retail distribution centers, as well as parcel and post warehouses.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We reach a broad base of customers through our worldwide direct sales force that sells to large, strategic customers, as well as through our network of distributors and integrators that sell primarily to smaller customers who may be more geographically remote or may require supplemental technical support or integration assistance. We invest in emerging, high-growth regions where many manufacturers can benefit from incorporating machine vision into their production processes.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Acquisitions</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our business strategy includes selective expansion into new machine vision applications and markets through the acquisition of businesses and technologies. We consider business acquisitions to be an important part of our growth strategy, and although we continue to actively seek out acquisition opportunities, we are selective in choosing businesses that we believe will enhance long-term growth and profitability, as well as fit within our corporate culture. We plan to continue to seek opportunities to expand our product lines, customer base, distribution network, and technical talent through acquisitions in the machine vision industry.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Products</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex offers a full range of machine vision systems and sensors, vision software, and industrial image-based barcode readers designed to meet customer needs at different performance and price points. Our products range from low-cost vision sensors that conduct simple presence/absence inspections, to deep learning solutions that solve complex applications with unpredictable defects and deviations. Our products also have a variety of physical forms, depending on the user's needs. For example, customers can purchase vision software to use with their own camera and processor, or they can purchase a standalone unit that combines camera, processor, and software into a single package.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Vision Systems and Sensors</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Vision systems combine smart cameras and software to perform a wide range of inspection tasks including part location, identification, measurement, assembly verification, and robotic guidance. Vision sensors deliver an easy-to-use, low-cost, reliable solution for simple pass/fail inspections, such as checking the presence and size of parts. In-Sight</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:6.47pt;font-weight:400;line-height:120%;position:relative;top:-3.48pt;vertical-align:baseline">&#174;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> vision systems and sensors, which includes 2D, 3D, and deep learning models, meet various price and performance requirements for factory automation customers. Our deep learning-based systems automate and solve complex inline inspections that typically require human judgment for defect detection, optical character recognition (OCR), assembly verification, or classification.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Vision Software</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Vision software offers customers the flexibility of the Cognex vision tools library to use with the cameras, frame grabbers, and peripheral equipment of their choice. Cognex VisionPro&#174; software offers an extensive suite of patented vision tools, including both traditional rule-based tools and deep learning-enabled tools, for advanced programming. Its QuickBuild prototyping environment allows customers to build complete vision applications with the simplicity of a graphical, flowchart-based programming interface.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Industrial Image-Based Barcode Readers</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex industrial image-based barcode readers quickly and reliably read 1D, 2D, label-based, and direct part mark (DPM) codes found in nearly every industry including automotive, consumer products, medical-related, and logistics. The DataMan&#174; product line, which includes fixed-mount, handheld, and mobile models, as well as barcode verifiers, help organizations optimize performance, increase throughput, and control traceability.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Research, Development, and Engineering</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex engages in research, development, and engineering (RD&amp;E) to enhance our existing products and to develop new products and functionality to address market opportunities. In addition to internal research and development efforts, we intend to continue our strategy of gaining access to new technology through strategic relationships and acquisitions where appropriate.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RD&amp;E expenses as a percentage of revenue were 13% in 2021, 16% in 2020, and 16% in 2019. We believe that a continued commitment to RD&amp;E activities is essential in order to maintain or achieve product leadership with our existing products and to provide innovative new product offerings, as well as to provide engineering support for large customers. In addition, we consider our ability to accelerate time to market for new products to be critical to our revenue growth. Therefore, we expect to continue to make significant RD&amp;E investments in the future, and intend to continue our product development plans during periods of lower revenue levels. At any point in time, we have numerous research and development projects underway.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We rely on the technical expertise, creativity, and knowledge of our personnel, and therefore, we utilize patent, trademark, copyright, and trade secret protection to maintain our competitive position and protect our proprietary rights in our products and technology. While our intellectual property rights are important to our success, we believe that our business as a whole is not materially dependent on any particular patent, trademark, copyright, or other intellectual property right.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Manufacturing and Order Fulfillment</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex&#8217;s products are manufactured utilizing third-party contractors, whereby the majority of component procurement, system assembly, and initial testing are performed by electronics manufacturing services suppliers. Cognex&#8217;s primary contract manufacturer is located in Indonesia. Our contract manufacturers use specified components sourced from a vendor list approved by Cognex and assembly/test documentation created and controlled by Cognex.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">After the completion of initial testing, assembled products from our contract manufacturers are routed to our distribution centers in Cork, Ireland or Natick, Massachusetts, USA, where trained Cognex personnel load Cognex software onto the products, provide additional assembly and image alignment as needed, and perform quality control procedures. Fully-configured finished products for customers in the Americas, with the exception of certain products stocked locally in Mexico, are then shipped from our Natick, Massachusetts distribution center, while finished products for customers outside of the Americas are shipped from our Cork, Ireland distribution center.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Sales Channels and Support Services</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex sells its products through a worldwide direct sales force that focuses on the development of strategic accounts that generate or are expected to generate significant sales volume, as well as through a global network of distribution and integration partners. Our distribution partners provide sales and local support to help Cognex reach the many prospects for our products in factories around the world, and our integration partners are experts in vision and complementary technologies that can provide turnkey solutions for complex automation projects using vision. Sales engineers call directly on targeted accounts, with the assistance of application engineers, and manage the activities of our distribution and integration partners within their territories in order to provide an advantageous sales model for our products. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sales to customers based outside of the United States represented approximately 62% of our total revenue in 2021, with approximately 24% from customers based in Europe, 19% from customers based in Greater China, and 19% from customers based in other regions outside the United States. Sales to customers based in Europe are denominated in Euros and U.S. Dollars, sales to customers based in Greater China are denominated in Renminbi </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">for sales within Mainland China and U.S. Dollars in other territories, and sales to customers based in other regions are denominated in U.S. Dollars, Japanese Yen, Korean Won, and Mexican Pesos.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex&#8217;s service offerings represent less than 10% of our total revenue and include maintenance and support, consulting, and training services. Maintenance and support programs include hardware support programs that entitle customers to have failed products repaired, as well as software support programs that provide customers with application support and software updates to the latest software releases. Application support is provided by technical support personnel located at Cognex regional offices, as well as by field service engineers that provide support at the customer&#8217;s production site. We provide consulting services that range from a specific area of functionality to a completely integrated installed application. Training services include a variety of product courses that are available at our offices worldwide, at customer facilities, and online.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Human Capital</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our employees are our most valuable assets and critical to our success. We create and maintain an environment where &#8220;Cognoids,&#8221; a unique name for our employees, can engage with each other, perform their best work, develop their careers, and be creative. As of December&#160;31, 2021, Cognex employed 2,257 Cognoids globally, including 1,280 in sales, marketing, and service activities; 569 in research, development, and engineering; 198 in manufacturing and quality assurance; and 210 in information technology, finance, and administration. Of our 2,257 Cognoids, 1,362 are based outside of the United States.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:112%;text-decoration:underline">Culture and Values</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We pride ourselves on having a unique culture that exemplifies our motto of </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Work Hard, Play Hard, Move Fast</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">. Our culture guides the actions and behaviors of our Cognoids, and is defined by our ten values - </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Customer First, Excellence, Perseverance, Enthusiasm, Creativity, Pride, Integrity, Recognition, Sharing, and Fun</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">. We are committed to finding the very best talent to be part of our growing technology company. We believe our culture enables us to attract and retain smart, energetic, and creative talent, and is central to our ability to execute on our operating plans and strategic initiatives. To preserve and enhance our corporate culture, while recognizing differences across and within regions, we have a global team of Cognoids who serve as Ministers of Culture, led by our Chief Culture Officer.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:112%;text-decoration:underline">Learning and Development</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex invests in tools and resources that support employees&#8217; learning and development. We employ a team that creates content to provide skills and coaching to employees on a variety of topics, such as leading teams, as well as to support continued understanding of our culture, values, organization, and products. We believe these efforts better position Cognex to operate as a leader in the machine vision industry.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Compensation and Benefits</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our compensation programs reflect a pay-for-performance philosophy. As Cognoids advance in their careers, an increasing percentage of total compensation is tied to variable incentive programs, such as performance-based bonuses and stock-based awards. In addition, we care about the health and well-being of our employees and provide access to a host of benefits, including health, vision, a student loan repayment program, and reward and recognition programs.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Regulatory Compliance</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex&#8217;s capital expenditures, earnings, and competitive position are not materially affected by compliance with federal, state, and local environmental provisions which have been enacted or adopted to regulate the distribution of materials into the environment.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Available Information</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex maintains a website at www.cognex.com. We make available, free of charge, on our website in the &#8220;Company&#8221; section under the caption &#8220;Investor Information&#8221; followed by &#8220;Financial Reports&#8221; and then &#8220;SEC FiIings,&#8221; our Annual Report on&#160;Form 10-K, Quarterly Reports on Form 10-Q, and Current Reports on Form 8-K, including exhibits, and amendments to those reports filed or furnished pursuant to Section&#160;13(a) or 15(d) of the Securities Exchange Act of 1934, as amended, as soon as reasonably practicable after such reports are electronically filed with, or furnished to, the SEC. Cognex&#8217;s reports filed with, or furnished to, the SEC are also available at the SEC&#8217;s website at www.sec.gov. Information contained on our website is not a part of, or incorporated by reference into, this Annual Report on Form 10-K.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_16"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;1A: RISK FACTORS</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The risks and uncertainties described below are not the only ones that we face. Additional risks and uncertainties that we are unaware of, or that we currently deem immaterial, also may become important factors that affect our company in the future. If any of these risks were to occur, our business, financial condition, or results of operations could be materially and adversely affected. This section includes or refers to certain forward-looking statements. We refer you to the explanation of the qualifications and limitations on such forward-looking statements, appearing under the heading "Forward-Looking Statements" in Part II - Item&#160;7 of this Annual Report on Form 10-K.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Risks Related to our Supply Chain</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">The failure of a key supplier to manufacture and deliver quality product in a timely manner could negatively affect customer satisfaction and our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A significant portion of our products is presently manufactured by a third-party contractor located in Indonesia. This contract manufacturer has agreed to provide Cognex with termination notification periods and last-time-buy rights, if applicable. We rely on our contract manufacturers to provide quality product. We engage in extensive product quality programs and processes, including actively monitoring the performance of our third-party manufacturers; however, we may not detect all product quality issues through these programs and processes. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We also rely on our contract manufacturers to meet delivery schedules. We have experienced, and may continue to experience, delays in the delivery of our products from our contract manufacturers due to the impact of the COVID-19 pandemic or other factors. Although our primary contract manufacturer has the ability to shift production to plants in other regions when operations in its Indonesia plant are disrupted, production and test equipment located at the Indonesia plant that is unique to the manufacture of Cognex products creates practical challenges to doing so in a timely manner. Furthermore, this contract manufacturer sources components for our products and has experienced, and may continue to experience, disruptions in the supply of these components. These challenges in obtaining components and maintaining production have resulted in delays, and may continue to result in delays, in meeting our delivery schedules that, as a result, delay deliveries to our customers past their requested delivery date. These delays of customer orders could result in delayed revenue recognition which could impact our operating results in a particular quarter. In addition, delays of customer orders could negatively impact customer satisfaction and, in turn, cause loss of sales, which could adversely affect our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our inability to obtain components for our products could adversely affect our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain key electronic and mechanical components, such as integrated circuit chips, are fundamental to the design of Cognex products. Due to the impact of the COVID-19 pandemic and other factors, we have experienced, and may continue to experience, disruptions to the supply of components for our products that have resulted, and may continue to result, in higher purchase costs, delivery costs, and manufacturing delays.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company sources components from preferred vendors that are selected based on price and performance considerations. In the event of a supply disruption from a preferred vendor, these components may typically be purchased from alternative vendors, which may result in higher purchase costs and manufacturing delays based on the time required to identify and obtain sufficient quantities from an alternative source.</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain of the Company&#8217;s products utilize components that are available from only one source. If we are unable to secure adequate supply from these sources, we may have to redesign our products, which may lead to higher costs, delays in manufacturing, and possible loss of sales.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Although we are taking certain actions to mitigate supply risk and the Company has entered into agreements, including in broker markets, for the supply of many components, there can be no assurance that the Company will be able to extend or renew these agreements on similar terms, such as purchase prices, or at all. Component suppliers may suffer from poor financial conditions, which can lead to business failure for the supplier, further limiting the Company&#8217;s ability to obtain sufficient quantities of components on reasonable terms, or at all. Therefore, the Company remains subject to risks of supply shortages and price increases that can adversely affect its business and operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our failure to effectively manage product transitions or accurately forecast customer demand could result in excess or obsolete inventory and resulting charges.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Because the market for our products is characterized by rapid technological changes, we frequently introduce new products with improved ease-of-use, improved hardware performance, additional software features and functionality, or lower cost that may replace existing products. Among the risks associated with the introduction of new products are difficulty predicting customer demand and effectively managing inventory levels to ensure adequate supply of the new product and avoid excess supply of the legacy product. </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">5</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We may strategically enter into non-cancelable commitments with vendors to purchase materials for our products in advance of demand to address concerns about the availability of future supplies, build safety stock to help ensure customer shipments are not delayed should we experience higher than anticipated demand for materials with long lead times, or take advantage of favorable pricing. Disruptions in both the supply of materials for our products and delivery of products from our contract manufacturers, such as those caused by the impact of the COVID-19 pandemic or other factors, have resulted, and may continue to result, in the Company purchasing a significant amount of inventory in response to these disruptions and in advance of demand. These measures to purchase inventory may expose us to an increased risk of excess or obsolete inventory and resulting charges if actual demand is lower than anticipated.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">If components purchased by our primary contract manufacturer have not been consumed in the production of our finished goods within a certain period of time, we have been required, and may continue to be required, to purchase these components from our contract manufacturer and later sell them back when they are needed to meet our demand. While we typically expect these components to be consumed in the production of our finished goods, this arrangement may expose us to an increased risk of excess or obsolete inventory and resulting charges.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2020, deteriorating global economic conditions from the COVID-19 pandemic resulted in lower projected sales of excess inventories, for which the company recorded provisions totaling $7,718,000 in the second quarter. Our failure to effectively manage product transitions or accurately forecast customer demand, in terms of both volume and configuration, has led to, and may again in the future lead to, an increased risk of excess or obsolete inventory and resulting charges.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Disruptions to one of our distribution centers could adversely affect our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company ships finished products for customers located in the Americas from its Natick, Massachusetts distribution center, and finished products for customers located outside of the Americas from its Cork, Ireland distribution center. Due to the impact of the COVID-19 pandemic, the Company has experienced, and may continue to experience, labor shortages and working restrictions due to factors such as health and safety concerns or governmental regulations. Although we have the ability to shift operations from one distribution center to another, there are practical challenges to doing so in a timely, cost-effective manner, and we may experience delays in shipping customer orders. These delays could negatively impact customer satisfaction and, in turn, cause loss of sales, which could adversely affect our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our products may contain design or manufacturing defects, which could result in reduced demand, significant delays, or substantial costs.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">If flaws in either the design or manufacture of our products were to occur, we could experience a rate of failure in our products that could result in significant delays in shipment and material repair or replacement costs. Our release-to-market process may not be robust enough to detect significant design flaws or software bugs. While we engage in product quality programs and processes, including actively monitoring and evaluating the quality of our component suppliers and contract manufacturers, these actions may not be sufficient to avoid a product failure rate that results in:</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">substantial delays in shipment,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">significant repair or replacement costs,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">product liability claims or lawsuits, particularly in connection with life sciences customers or other high-risk end-user industries, or</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">potential damage to our reputation.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Any of these results could have a material adverse effect on our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Risks Related to the COVID-19 Pandemic</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">The extent to which the COVID-19 pandemic may impact our business is uncertain and it could adversely affect our results of operations and financial condition.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The COVID-19 pandemic continues to have a significant impact around the world, prompting governments and businesses to take certain measures in response, such as the imposition of travel restrictions, temporary closures of businesses, quarantine and shelter-in-place orders, and adoption of remote working. COVID-19 continues to impact global economic activity and create macroeconomic uncertainty.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We continue to face several risks and uncertainties related to the impact of COVID-19 on our business. It is difficult for us to quantify the duration and severity of this impact due to many factors beyond our control and knowledge, including the timing, extent, trajectory, and duration of the pandemic, the emergence of new variants, the </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">6</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">development, availability, distribution and effectiveness of vaccines and treatments, the imposition of protective public safety measures, and the impact of the pandemic on the global economy. These risks and uncertainties include, among others:</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our customers may delay or cancel orders for our products, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">customer facilities may be shut down for extended periods of time, resulting in our inability to deliver products, perform on-site services, or make on-site sales visits, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our customers may not have sufficient cash flow or access to financing to purchase our products, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our customers may not pay us within agreed upon terms or may default on their payments altogether, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our contract manufacturers may continue to experience interruptions that result in delivery delays and higher costs for our products, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our vendors may continue to be unable to fulfill their delivery obligations to us within acceptable lead times for extended periods of time, which may force us to seek alternative sources of supply at higher costs or redesign or products, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">lower demand for our products may result in charges for excess and obsolete inventory if we are unable to sell inventory that is either already on hand or committed to purchase, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our distribution centers in Natick, Massachusetts and Cork, Ireland may have difficulty staffing employees and contractors, be forced to operate with a significantly reduced workforce, or be forced to shut down altogether due to government regulations or health concerns, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our online sales and marketing efforts may be less effective than face-to-face activities, resulting in fewer new customers and lower sales from new products, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">challenges involved in remote working may delay certain of our new product introductions, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">lower cash flows may result in impairment charges for acquired intangible assets, </span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our investment portfolio of debt securities may be exposed to material credit losses, and</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">a decline in our stock price may make stock-based awards a less attractive form of compensation and a less attractive form of retention for our employees.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">These risks and uncertainties could have a material adverse effect on the continuity of our business, results of operations, and financial condition. This situation is continuously changing and additional impacts on our business may arise of which we are not currently aware.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Risks Related to Revenue Concentrations</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">The loss of, or significant curtailment of purchases by, large customers could have an adverse effect on our business.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2021, we had a large customer in the logistics industry that represented approximately 17% of our total revenue. Large customers may divert management&#8217;s attention from other operational matters and pull resources from other areas of the business, resulting in potential loss of sales from other customers. In addition, large customers may receive preferred pricing and a higher level of support, which may lower our gross margin percentage. Furthermore, in certain instances due to long supplier lead times, we may purchase inventory in advance of receipt of a customer purchase order, which exposes us to an increased risk of excess or obsolete inventory and resulting charges. The loss of, or curtailment of purchases by, any one or more of our large customers could have a material adverse effect on our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Risks Related to Information Technology and Intellectual Property</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Information security breaches may adversely affect our business.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We rely on our information technology systems, including third-party services, to effectively run our business. We may be subject to information security failures or breaches caused by hacking, malicious software, acts of vandalism or terrorism, or other events. Our security measures or those of our third-party service providers may not detect or prevent such breaches. Any such compromise to our information security could result in theft of our intellectual property, including software source code, a misappropriation of our cash or other assets, an interruption in our operations, the unauthorized publication of our confidential business or proprietary information, the unauthorized release of customer, vendor, or employee data, and the exposure to litigation or regulatory penalties, any of which could harm our business and operating results. We have experienced cybersecurity incidents in the </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">7</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">past; however, to date, these incidents have not had a material impact on our operations or financial results; however, future cybersecurity incidents could have a material adverse effect on our business, reputation, financial condition, or operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we fail to successfully protect our intellectual property, our competitive position and operating results could suffer.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We rely on our proprietary software technology and hardware designs, as well as the technical expertise, creativity, and knowledge of our personnel to maintain our position as a leading provider of machine vision products. Software piracy and reverse engineering may result in counterfeit products that are misrepresented in the market as Cognex products or pirated products that contain stolen technology such as software. Although we use a variety of methods to protect our intellectual property, we rely most heavily on patent, trademark, copyright, and trade secret protection, as well as non-disclosure agreements with customers, suppliers, employees, and consultants. We also attempt to protect our intellectual property by restricting access to our proprietary information by a combination of technical and internal security measures. These measures, however, may not be adequate to:</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">protect our proprietary technology,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">protect our patents from challenge, invalidation, or circumvention, or</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">ensure that our intellectual property will provide us with competitive advantages.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our pending and future patent applications may not issue as patents or, if issued, may not issue in a form that will provide us with any meaningful protection or any competitive advantage. Even if issued, existing or future patents may be challenged, narrowed, invalidated, or circumvented, which could limit our ability to stop competitors from developing and marketing similar products, increase costs, or limit the length of patent protection we may have for our products. Furthermore, other companies may design around technologies we have patented, licensed, or developed. Moreover, changes in patent laws or their interpretation in the United States and other countries could also diminish the value of our intellectual property or narrow the scope of our patent protection. In addition, the legal systems of certain countries do not favor the aggressive enforcement of patents, and the laws of foreign countries may not protect our rights to the same extent as the laws of the United States. As a result, our patent portfolio may not provide us with sufficient rights to exclude others from commercializing products similar to ours. Any of these adverse circumstances could have a material adverse effect on our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:112%;text-decoration:underline">Risks Related to Execution of our Business Strategy</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">If we fail to attract and retain key talent and maintain our unique corporate culture, our business and operating results could suffer.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">To support our growth and execute on our operating plans and strategic initiatives, we must effectively attract, train, develop, motivate, and retain skilled employees, while maintaining our unique corporate culture. During the COVID-19 pandemic, many of our employees have worked remotely at times due to health and safety concerns or to comply with governmental regulations, with the primary exception of our distribution center employees who have remained on-site in shifts throughout the pandemic to deliver products to our customers. While we have been able to effectively conduct most business activities in this manner, these conditions have made it more challenging to maintain our collaborative corporate culture. When regulatory and health conditions have allowed, we have returned to a more collaborative, largely on-site work environment. Our longer-term intention is to have a hybrid work model, where our employees work on-site in a team environment the majority of the time. If we are unsuccessful in bringing our employees back into the office when safe to do so for a hybrid work model, or our employees choose to leave the company altogether for more remote work flexibility or higher compensation, the company's business and ability to execute its plans could be adversely affected in a material way.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We use stock options and restricted stock units (RSUs) as a key component of compensation for our more senior employees in order to align employee interests with the interests of our shareholders, provide competitive compensation packages, and encourage employee retention. Our stock price volatility may cause periods of time during which option exercise prices might be less than the sale price of our common stock or the value of RSUs might be less competitive, which may lessen the retentive attributes of these awards. We are limited as to the number of stock options and RSUs that we may grant under our stock plans, and we are unsure how effective different stock-based awards with different vesting schedules will be to retain key talent. Accordingly, we may find it difficult to attract, retain, and motivate employees, and any such difficulties could materially adversely affect our business.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">8</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our failure to introduce new products in a successful and timely manner could result in the loss of our market share and a decrease in our revenues and profits.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The market for our products is characterized by rapidly changing technology. Accordingly, we believe that our future success will depend on our ability to accelerate time-to-market for new products with improved functionality, ease-of-use, performance, and price. There can be no assurance that we will be able to introduce new products in accordance with scheduled release dates or that new products will achieve market acceptance. Our inability to keep pace with the rapid rate of technological change in the high-technology marketplace could have a material adverse effect on our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Product development is often a complex, time-consuming, and costly process involving significant investment in research and development with no assurance of return on investment. Our strong balance sheet allows us to continue to make significant investments in research, development, and marketing for new products and technologies. Research is by its nature speculative, and the ultimate commercial success of a product depends on various factors, many of which are not under our control. We may not achieve significant revenue from new product investments for a number of years, if at all. Moreover, new products, if introduced, may not generate the gross margins that we have experienced historically.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our failure to properly manage the distribution of our products and services could result in the loss of revenues and profits.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We utilize a direct sales force, as well as a network of distribution and integration partners, to sell our products and services. Successfully managing the interaction of our direct and indirect sales channels to reach various potential customers for our products and services is a complex process. In addition, our reliance on indirect selling methods may reduce visibility to demand and pricing issues.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">To support the expansion of our business internationally, we may decide to make changes to our operating structure in other countries when we believe these changes will make us more competitive by offering faster delivery, importation services, and/or local currency sales. These new operating models may require changes in legal structures, business systems, and business processes that may result in significant business disruption and negatively impact our customers&#8217; experience, resulting in loss of sales. Furthermore, as we assume more responsibility for the importation of our products into other countries, we face higher compliance risk to adhering to local regulatory and trade requirements. Finally, the local stocking of finished products in countries outside of our primary distribution centers may result in higher costs and increased risk of excess or obsolete inventory associated with maintaining the appropriate level and mix of stock in multiple inventory locations, resulting in lower gross margins.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our go-to-market strategy has distinct risks and costs, and therefore, our failure to implement the most advantageous balance in the sales and operating model for our products and services could adversely affect our revenue and profitability.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Increased competition may result in decreased demand or prices for our products and services.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The machine vision market is highly fragmented and competitive. Our competitors include other vendors of machine vision systems, controllers, and components; manufacturers of image processing systems, sensors, and components; and system integrators. We also compete with internal engineering departments of current or prospective customers, as well as open-source tools available for free by various companies. In recent years, we have encountered increased competition from low-cost vision providers in China, as well as from large technology companies that may offer free open-source solutions. Any of these competitors may have greater financial and other resources than we do, or develop more compelling technological innovations. We may not be able to compete successfully in the future and our investments in research and development, sales and marketing, and support activities may be insufficient to enable us to maintain our competitive advantage. In addition, competitive pressures could lead to price erosion that could have a material adverse effect on our gross margins and operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Implementation of our acquisition strategy may not be successful, which could affect our ability to increase our revenue or profitability and may otherwise adversely affect our business.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We have acquired, and may continue to acquire, new businesses and technologies. These acquisitions may involve significant risks and uncertainties, which could include, among others:</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">the diversion of management's attention from other operational matters,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">difficulties or delays integrating personnel, operations, technologies, products, and systems of the acquired business, particularly in locations far from the company's headquarters,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">the inability to realize expected synergies or other benefits resulting from the acquisition,</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">9</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">the failure to retain key talent,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">the impairment of acquired intangible assets resulting from lower-than-expected cash flows from the acquired assets,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">acquisition-related charges, which could adversely impact operating results and cash flows in any given period, and the impact may be substantially different from period to period,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">difficulties with closing a transaction due to regulatory approvals, required consents, litigation, or other challenges, which could increase costs and prevent the acquisition from being completed within the expected timeframe, or from being completed at all,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">the inability to protect and secure acquired intellectual property or confidential information,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">difficulties or delays completing the development of acquired in-process technology,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">the failure to retain key customers, and</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">the failure to achieve projected sales of acquired products.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Acquisitions are inherently risky and the inability to effectively manage these risks could have a material adverse effect on our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Business system disruptions may adversely affect our business.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company is making significant investments in business systems related to our sales processes, including systems to help our sales team more efficiently manage customer relationships and sales opportunities. Implementing new business systems requires a significant investment of time and money, and may divert management&#8217;s attention from other operational matters. The implementation of new business systems and changes to associated business processes, particularly those that are customer-facing, may result in significant business disruption and negatively impact our customers&#8217; experience, resulting in loss of sales. The Company intends to continue to make IT-related investments to improve its management information systems and support the expansion of our business internationally. Any disruption occurring with our business systems may have a material adverse effect on our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Risks Related to Financial Matters</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We are at risk for impairment charges with respect to our investments or acquired intangible assets, which could have a material adverse effect on our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, we had approximately $721 million of debt securities in our investment portfolio. These debt securities are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#8217; equity as other comprehensive income (loss) since these securities are designated as available-for-sale securities. As of December 31, 2021, our portfolio of debt securities had a net unrealized loss of $3,902,000. Included in this net loss, were gross unrealized losses totaling $4,971,000, of which $4,896,000 were in a loss position for less than twelve months and $75,000 were in a loss position for greater than twelve months. Management monitors its debt securities that are in an unrealized loss position to determine whether a loss exists related to the credit quality of the issuer that would be reported in current operations. It is our policy to invest in investment-grade debt securities that minimize our exposure to credit losses. No credit losses were recorded in 2021.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, we had approximately $12 million in acquired intangible assets, consisting primarily of acquired technologies and customer relationships. These assets are susceptible to changes in fair value due to a decrease in the historical or projected cash flows from the use of these assets, which may be negatively impacted by economic trends. In 2020, deteriorating global economic conditions from the COVID-19 pandemic triggered a review of long-lived assets for potential impairment, which resulted in intangible asset impairment charges totaling $19,571,000. A further decline in the cash flows generated by these or other intangible assets may result in future impairment charges.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">If we determine that any of these investments or intangible assets are impaired, we would be required to take a related charge to earnings that could have a material adverse effect on our results of operations.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">We may have additional tax liabilities and our effective tax rate may increase or fluctuate, which could adversely affect our operating results and financial condition.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a multinational corporation, we are subject to income taxes, as well as non-income based taxes, in the United States and numerous foreign jurisdictions. Our effective income tax rate is dependent on the geographic distribution of our worldwide earnings or losses and the tax laws and regulations in each geographic region in which we operate. Significant judgment is required in determining our worldwide provision for income and other taxes. The application of tax laws and regulations is subject to legal and factual interpretation, judgment, and uncertainty, and </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">10</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">tax laws themselves are subject to change. For example, many countries have recently adopted, or are considering the adoption of, revisions to their respective tax laws based on the Organization for Economic Co-operation and Development (&#8220;OECD&#8221;)&#8217;s Inclusive Framework, which could impact our tax liability due to our organizational structure and significant operations outside of the United States. Furthermore, we are subject to regular review and audit by both domestic and foreign tax authorities and may be assessed additional taxes, penalties, fees, or interest, which could have an adverse effect on our financial position, liquidity, or results of operations. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Although we believe our tax positions are reasonable, the final determination of tax audits or any related litigation could be different from what is reflected in our financial statements and could have a material adverse effect on our income tax provision, net income, or cash flows in the period in which the determination is made.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Fluctuations in foreign currency exchange rates and the use of derivative instruments to hedge these exposures could adversely affect our reported results, liquidity, and competitive position.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">We face exposure to foreign currency exchange rate fluctuations, as a significant portion of our revenues, expenses, assets, and liabilities are denominated in currencies other than the functional currencies of our subsidiaries or the reporting currency of our company, which is the U.S. Dollar. In certain instances, we utilize forward contracts to hedge against foreign currency fluctuations. These contracts are used to minimize foreign currency gains or losses, as the gains or losses on the derivative are intended to offset the losses or gains on the underlying exposure. We do not engage in foreign currency speculation. If the counterparty to any of our hedging arrangements experiences financial difficulties, or is otherwise unable to honor the terms of the contract, we may experience material losses.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The success of our foreign currency risk management program depends on forecasts of transaction activity denominated in various currencies. To the extent that these forecasts are overstated or understated during periods of currency volatility, we could experience unanticipated foreign currency gains or losses that could have a material impact on our results of operations. In addition, our failure to identify new exposures and hedge them in an effective manner may result in material foreign currency gains or losses. Furthermore, our ability to hedge the Chinese Renminbi is limited, which has resulted in unhedged exposures. To date, foreign currency gains and losses related to the Chinese Renminbi have been immaterial to our total results; however, further fluctuations in this currency may result in material foreign currency gains or losses in the future. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In addition to the U.S. Dollar, a significant portion of our revenues and expenses are denominated in the Euro and Chinese Renminbi, and to a lesser extent the Japanese Yen, Korean Won, and Mexican Peso. We estimate that approximately 49% of our sales in 2021 were invoiced in currencies other than the U.S. Dollar, and we expect sales denominated in foreign currencies to continue to represent a significant portion of our total revenue. While we also have expenses denominated in these same foreign currencies, the impact on revenues has historically been, and is expected to continue to be, greater than the offsetting impact on expenses. Therefore, in times when the U.S. Dollar strengthens in relation to these foreign currencies, we would expect to report a net decrease in operating income. Conversely, in times when the U.S. Dollar weakens in relation to these foreign currencies, we would expect to report a net increase in operating income. Thus, changes in the relative strength of the U.S. Dollar may have a material impact on our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">General Risk Factors</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Unfavorable global economic conditions may negatively impact our operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our revenue levels are impacted by global economic conditions, as we have a significant business presence in many countries throughout the world. Unfavorable economic conditions, such as inflation, slower growth or recession, higher interest rates, and tighter credit, may cause industrial companies to delay or reduce spending for automation projects, including those with machine vision, amid weaker general manufacturing confidence and heightened uncertainty around global trade. When global economic conditions are unfavorable, our revenue and our ability to generate operating profits could be materially adversely affected.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a result of global economic conditions, our business is subject to the following risks, among others:</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our customers may not have sufficient cash flow or access to financing to purchase our products,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our customers may not pay us within agreed upon terms or may default on their payments altogether,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">our vendors may be unable to fulfill their delivery obligations to us in a timely manner,</span></div><div style="margin-top:5pt;padding-left:81pt;text-align:justify;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">lower demand for our products may result in charges for excess and obsolete inventory if we are unable to sell inventory that is either already on hand or committed to purchase,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">lower cash flows may result in impairment charges for acquired intangible assets or goodwill,</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">11</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;padding-left:81pt;text-align:justify;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">a decline in our stock price may make stock-based awards a less attractive form of compensation and a less effective form of retention for our employees, and</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">the trading price of our common stock may be volatile.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, the Company had approximately $907 million in cash and investments. In addition, Cognex has no long-term debt. We believe that our strong cash position puts us in a relatively good position to weather economic downturns. Nevertheless, our operating results have been materially adversely affected in the past, and could be materially adversely affected in the future, as a result of unfavorable economic conditions and reduced capital spending by manufacturers worldwide.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">A natural disaster, widespread public health issue, or man-made disaster could result in business disruptions that may adversely affect our business and operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our business, and the businesses of our customers, suppliers, and third-party service providers, could be disrupted by natural disasters, public health crises, such as pandemics and epidemics, man-made disasters, such as cyber-attacks and terrorism, or other events outside of our control. Certain of the Company&#8217;s business operations, such as our third-party contractor manufacturer in Indonesia, are in locations that may be more prone to natural disasters, and global climate change may result in certain types of natural disasters occurring more frequently or with more intense effects. Following a business disruption, the Company could be subject to production downtimes, operational delays, substantial recovery time, significant expenditures to resume operations, the diversion of management&#8217;s attention and resources, or loss of business, any of which could have a material adverse effect on our competitive position, operating results, or financial condition. Because the Company relies on single or limited sources for the supply of certain components and manufacture of our products, a business disruption affecting such sources would worsen any adverse consequences to the Company.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">While the Company maintains insurance coverage for certain types of losses, such insurance coverage may be insufficient to cover all losses that may arise. The impact of any such business disruption is difficult to predict.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Economic, political, and other risks associated with international sales and operations could adversely affect our business and operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2021, approximately 62% of our revenue was derived from customers located outside of the United States. We anticipate that international sales will continue to account for a significant portion of our revenue. In addition, we source components from suppliers located outside of the United States, including China, and utilize third-party contract manufacturers, primarily located in Indonesia, to assemble certain of our products. We intend to continue to expand our sales and operations outside of the United States and expand our presence in international emerging markets. As a result, our business is subject to the risks inherent in international sales and operations, including, among other things:</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">various regulatory and statutory requirements,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">difficulties in injecting and repatriating cash,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">export and import restrictions,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">trade tariffs,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">transportation delays,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">product certification requirements,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">employment regulations and local labor conditions,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">difficulties in staffing and managing foreign sales operations,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">corruption,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">instability in economic or political conditions,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">political or trade sanctions,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">difficulties protecting intellectual property,</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">business systems connectivity issues, and</span></div><div style="margin-top:5pt;padding-left:81pt;text-indent:-29.25pt"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:25.75pt">potentially adverse tax consequences.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Any of these factors could have a material adverse effect on our operating results. In recent years, trade tariffs imposed by the United States on certain components imported from Chinese suppliers resulted in higher costs for </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">12</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">our products, which, to date, have been immaterial to our total cost of goods. However, cost increases as a result of these or other trade tariffs could be material in the future. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Trade tariffs have also had an indirect impact on the economic climate in China, which in turn, has had a negative impact on the Company's revenue from customers based in China who see risk in doing business with a U.S. company. In addition to trade tariffs, United States export controls that place restrictions on the exportation of our products or a subset of our products, including applicable regulations promulgated by the U.S. Commerce Department&#8217;s Bureau of Industry and Security, have had a negative impact on our revenue from customers based in China. To date, the impact of these restrictions has been immaterial to our total revenue; however, further or continued restrictions could have a material adverse effect on our operating results in the future.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Additionally, we are subject to applicable anti-corruption laws, such as the U.S. Foreign Corrupt Practices Act and the U.K. Bribery Act, and similar anti-corruption and anti-kickback laws in the jurisdictions in which we operate. These laws generally prohibit offering, promising, giving, or authorizing others to provide anything of value, either directly or indirectly, to a government official or private party in order to influence official action or otherwise gain an unfair business advantage, such as to obtain or retain business. Particularly as a result of our global operations, including in developing countries, and our growing international sales force, our relationships with our customers and resellers could expose us to liability under these laws. Violations of anti-corruption laws may result in severe civil and criminal penalties for noncompliance. Even an unsuccessful challenge or investigation into our practices is costly to defend, and could cause adverse publicity, and thus could have a material adverse effect on our business, financial condition, or operating results.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our Company may be subject to time-consuming and costly litigation.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From time to time, we may be subject to various claims and lawsuits by competitors, shareholders, customers, distributors, patent trolls, former employees, or other parties arising in the ordinary course of business, including lawsuits charging patent infringement, or claims and lawsuits instituted by us to protect our intellectual property and confidential information or for other reasons. These matters can be time consuming, divert management&#8217;s attention and resources, and cause us to incur significant expenses. Furthermore, the results of any of these actions may have a material adverse effect on our operating results.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_19"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 1B: UNRESOLVED STAFF COMMENTS</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">None</span></div><div id="i929e97f6a142453c8a8057dbb6451118_22"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 2: PROPERTIES</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 1994, Cognex purchased and renovated a 100,000 square-foot building located in Natick, Massachusetts that serves as our corporate headquarters and is occupied by employees primarily in research, development, and engineering, manufacturing and quality assurance, and administration functions. In 1997, Cognex completed construction of a 50,000 square-foot addition to this building. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 1995, Cognex purchased an 83,000 square-foot office building adjacent to our corporate headquarters that is occupied by employees primarily in research, development, and engineering, sales, marketing, service, finance, and information technology functions.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 1997, Cognex purchased a three and one-half acre parcel of land adjacent to our corporate headquarters. This land is being held for future expansion and is currently used as an Ultimate Frisbee Field for our Cognoids.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2007, Cognex purchased a 19,000 square-foot building adjacent to our corporate headquarters. This facility serves as the distribution center for customers in the Americas. In December 2021, Cognex entered into a lease for a 65,000 square-foot building in Southborough, Massachusetts for a term of 10 years to serve as a new distribution center for customers in the Americas. The transition of the distribution center to the new facility is expected to take place during the first half of 2022. Once the transition is complete, the 19,000 square-foot building adjacent to our corporate headquarters is expected to be held for future expansion.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2014, Cognex purchased a 50,000 square-foot building in Cork, Ireland. This facility serves as the distribution center for customers outside of the Americas. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex conducts certain of its operations in other leased facilities, predominantly research, development, and engineering, sales, and administration functions. These lease agreements expire at various dates through 2032. Certain of these leases contain renewal options, retirement obligations, escalation clauses, rent holidays, and leasehold improvement incentives.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">13</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_25"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 3: LEGAL PROCEEDINGS</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Various claims and legal proceedings generally incidental to the normal course of business are pending or threatened on behalf of or against the Company. While we cannot predict the outcome of these matters, we believe that any liability arising from them will not have a material adverse effect on our financial position, liquidity, or results of operations.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_28"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 4: MINE SAFETY DISCLOSURES</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Not applicable.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_31"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 4A: INFORMATION ABOUT OUR EXECUTIVE OFFICERS</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth the names, ages, and titles of Cognex&#8217;s executive officers as of December&#160;31, 2021:</span></div><div style="margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:17.814%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:4.178%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:73.242%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Name</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Age</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:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Title</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Robert J. Willett</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">54</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:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">President and Chief Executive Officer</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Paul D. Todgham</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">45</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:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Senior Vice President of Finance and Chief Financial Officer</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sheila M. DiPalma</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">55</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:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Executive Vice President of Employee Services and Chief Culture Officer</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Carl W. Gerst III</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">54</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:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Executive Vice President of Vision and ID Products</span></td></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Executive officers are elected annually by the Board of Directors. There are no family relationships among the directors and executive officers of the Company.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Mr. Willett, who is a member of the Company's Board of Directors, has been employed by Cognex in his current position for no less than the past five years. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Mr. Todgham joined Cognex in March 2020. Prior to joining Cognex, Mr. Todgham spent six years at Levi Strauss &amp; Company (LEVI), where he served in a variety of senior finance and strategy roles at Levi&#8217;s involving corporate development, operational planning, and financial oversight. For the three years prior to joining Levi&#8217;s, Mr. Todgham worked for Ross Stores, Inc. (ROST) in senior finance and strategy roles. Earlier in his career, Mr. Todgham worked at The Boston Consulting Group, advising clients in the technology and consumer sectors on issues of strategy, operations, and organization. Mr. Todgham holds a Bachelor of Arts in Applied Mathematics from Harvard University, a Master of Philosophy in Economics from the University of Cambridge and a Master of Business Administration from Stanford University&#8217;s Graduate School of Business.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Ms. DiPalma joined Cognex in 1992. She has served for more than 25 years in a series of increasingly responsible roles in the finance function, including six years as Cognex Treasurer, before transitioning to Employee Services in 2016. Ms. DiPalma was promoted to Senior Vice President of Employee Services and became a named executive officer in 2017. Prior to joining Cognex, Ms. DiPalma was a member of the audit firm PricewaterhouseCoopers. She holds a Bachelor of Science degree in Accounting from Boston College, a Master of Science degree in Taxation from Bentley College, and is a Certified Public Accountant.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Mr. Gerst joined Cognex in 1999. He worked in a number of product-focused roles before being promoted to Senior Vice President of the ID Products Business Unit in 2014. Following 2014, Mr. Gerst&#8217;s leadership role expanded into Vision Products and he was promoted to Executive Vice President of Vision and ID Products in October 2020. Prior to joining Cognex, Mr. Gerst held roles in engineering, sales, and product marketing for Hand Held Products (now part of Honeywell&#8217;s Safety and Productivity Solutions). Mr. Gerst holds a Bachelor of Science degree in Electrical Engineering from Clarkson University and a Master in Business Administration from the Simon School of Business at the University of Rochester.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">14</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_34"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-bottom:9pt;text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">PART II</span></div><div id="i929e97f6a142453c8a8057dbb6451118_37"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;5: MARKET FOR REGISTRANT&#8217;S COMMON EQUITY, RELATED STOCKHOLDER MATTERS, AND ISSUER PURCHASES OF EQUITY SECURITIES</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s common stock is traded on The NASDAQ Stock Market LLC, under the symbol CGNX. As of January&#160;30, 2022, there were approximately 650 shareholders of record of the Company&#8217;s common stock. The Company believes the number of beneficial owners of the Company&#8217;s common stock on that date was substantially greater.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In October 2018, the Company's Board of Directors authorized the repurchase of $200,000,000 of the Company's common stock. Under this October 2018 program, the Company repurchased 1,398,000 shares at a cost of $61,690,000 in 2019, 1,215,000 shares at a cost of $51,036,000 in 2020, and 957,000 shares at a cost of $78,652,000 in 2021, which completed purchases under this program. On March 12, 2020, the Company's Board of Directors authorized the repurchase of an additional $200,000,000 of the Company's common stock. Under this March 2020 program, the Company repurchased 1,060,000 shares, including 5,000 shares that had not yet settled as of December 31, 2021, at a cost of $83,000,000 in 2021, leaving a remaining balance of $117,000,000. The Company may repurchase shares under this program in future periods depending on a variety of factors, including, among other things, the impact of dilution from employee stock awards, stock price, share availability, and cash requirements. The Company is authorized to make repurchases of its common stock through open market purchases, pursuant to Rule 10b5-1 trading plans, or in privately negotiated transactions.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth information with respect to purchases by the Company of shares of its common stock during each fiscal month of the fourth quarter of 2021:</span></div><div style="margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:33.701%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.759%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.969%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.933%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.936%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total Number of<br/>Shares&#160;Purchased</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Average<br/>Price&#160;Paid<br/>per Share</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total Number of<br/>Shares&#160;Purchased&#160;as<br/>Part of Publicly<br/>Announced Plans or<br/>Programs</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Approximate Dollar<br/>Value of Shares that<br/>May Yet Be<br/>Purchased&#160;Under&#160;the<br/>Plans or Programs</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">October 4 - October 31, 2021</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">376,000&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">80.70&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">376,000&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">199,990,000&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">November 1 - November 28, 2021</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">624,000&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">79.76&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">624,000&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">150,229,000&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">November 29 - December 31, 2021</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">436,000&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">76.19&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">436,000&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">117,000,000&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Total</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,436,000&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">78.92&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,436,000&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">117,000,000&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The information required by Item 5 of Form 10-K regarding equity compensation plans is incorporated herein by reference to Item 12 of Part III of this Annual Report.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s Board of Directors declared and paid cash dividends of $0.050 per share in the first, second, and third quarters of 2019, $0.055 per share in the fourth quarter of 2019 and in the first, second, and third quarters of 2020, and $0.060 per share in the fourth quarter of 2020 and in the first, second, and third quarters of 2021. The dividend was increased to $0.065 per share in the fourth quarter of 2021. Also, in the fourth quarter of 2020, an additional special cash dividend of $2.00 per share was declared and paid.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total dividends paid were $43,263,000 in 2021, $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, and $35,124,000 in 2019. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend on such factors as the Board deems relevant, including, among other things, the Company's ability to generate positive cash flow from operations.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">15</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Set forth below is a line graph comparing the annual percentage change in the cumulative total shareholder return on the Company&#8217;s common stock, based on the market price of the Company&#8217;s common stock, with the total return on companies within the Nasdaq Composite Index and the Research Data Group, Inc. Nasdaq Lab Apparatus&#160;&amp; Analytical, Optical, Measuring&#160;&amp; Controlling Instrument (SIC 3820-3829 US Companies) Index (the &#8220;Nasdaq Lab Apparatus Index&#8221;). The performance graph assumes an investment of $100 in each of the Company and the two indices, and the reinvestment of any dividends. The historical information set forth below is not necessarily indicative of future performance. Data for the Nasdaq Composite Index and the Nasdaq Lab Apparatus Index was provided to the Company by Research Data Group, Inc.</span></div><div style="text-align:center"><img src="cgnx-20211231_g1.jpg" alt="cgnx-20211231_g1.jpg" style="height:530px;margin-bottom:5pt;vertical-align:text-bottom;width:633px"/></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.660%"><tr><td style="width:1.0%"></td><td style="width:43.959%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.432%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.548%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.432%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.548%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.432%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.548%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.432%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.548%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.432%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.548%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.441%"></td><td style="width:0.1%"></td></tr><tr><td colspan="36" style="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:100%">*$100 invested on 12/31/2016 in stock or index, including reinvestment of dividends.  Fiscal year ended December 31.</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">12/16</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">12/17</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">12/18</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">12/19</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">12/20</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">12/21</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Cognex Corporation</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">100.00</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">192.93</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">122.47</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">178.26</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">270.18</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:700;line-height:100%">262.48</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">NASDAQ Composite</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:8pt;font-weight:700;line-height:100%">100.00</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#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:8pt;font-weight:700;line-height:100%">129.64</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#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:8pt;font-weight:700;line-height:100%">125.96</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#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:8pt;font-weight:700;line-height:100%">172.17</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#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:8pt;font-weight:700;line-height:100%">249.51</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#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:8pt;font-weight:700;line-height:100%">304.85</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">NASDAQ Stocks</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:8pt;font-weight:700;line-height:100%">100.00</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:8pt;font-weight:700;line-height:100%">156.42</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:8pt;font-weight:700;line-height:100%">147.15</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:8pt;font-weight:700;line-height:100%">208.82</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:8pt;font-weight:700;line-height:100%">292.61</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:8pt;font-weight:700;line-height:100%">341.98</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="30" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-style:italic;font-weight:700;line-height:100%">(SIC 3820-3829 U.S. Companies) Lab Apparatus &amp; Analyt,Opt, Measuring, and Controlling Instrument)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">16</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_40"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;6:&#160;[RESERVED]</span><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.122%"><tr><td style="width:1.0%"></td><td style="width:45.065%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.076%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.537%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.076%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.537%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.076%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.537%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.076%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.537%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.083%"></td><td style="width:0.1%"></td></tr><tr style="height:11pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><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><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><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></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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td></tr><tr><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><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><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></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><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><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><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><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><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><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div id="i929e97f6a142453c8a8057dbb6451118_43"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;7:&#160;MANAGEMENT&#8217;S DISCUSSION AND ANALYSIS OF FINANCIAL CONDITION AND RESULTS OF OPERATIONS</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">FORWARD-LOOKING STATEMENTS</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain statements made in this report, as well as oral statements made by the Company from time to time, constitute forward-looking statements within the meaning of Section&#160;27A of the Securities Act of 1933, as amended, and Section&#160;21E of the Securities Exchange Act of 1934, as amended. Readers can identify these forward-looking statements by our use of the words &#8220;expects,&#8221; &#8220;anticipates,&#8221; &#8220;estimates,&#8221; &#8220;believes,&#8221; &#8220;projects,&#8221; &#8220;intends,&#8221; &#8220;plans,&#8221; &#8220;will,&#8221; &#8220;may,&#8221; &#8220;shall,&#8221; &#8220;could,&#8221; &#8220;should,&#8221; and similar words and other statements of a similar sense. These statements are based on our current estimates and expectations as to prospective events and circumstances, which may or may not be in our control and as to which there can be no firm assurances given. These forward-looking statements, which include statements regarding business and market trends, future financial performance, the expected impact of the COVID-19 pandemic on our assets, business and results of operations, customer demand and order rates and timing of related revenue, managing supply shortages, delivery lead times, future product mix, research and development activities, sales and marketing activities, new product offerings, capital expenditures, investments, liquidity, dividends and stock repurchases, strategic and growth plans, and estimated tax benefits and expenses and other tax matters, involve known and unknown risks and uncertainties that could cause actual results to differ materially from those projected. Such risks and uncertainties include: (1) the reliance on key suppliers to manufacture and deliver quality products; (2) the inability to obtain components for our products; (3) the failure to effectively manage product transitions or accurately forecast customer demand; (4) the ability to manage disruptions to our distribution centers; (5) the inability to design and manufacture high-quality products; (6) the impact, duration, and severity of the COVID-19 pandemic, including the availability and effectiveness of vaccines; (7) the loss of, or curtailment of purchases by, large customers in the logistics industry; (8) information security breaches; (9) the inability to protect our proprietary technology and intellectual property; (10) the inability to attract and retain skilled employees and maintain our unique corporate culture; (11) the technological obsolescence of current products and the inability to develop new products; (12) the failure to properly manage the distribution of products and services; (13) the impact of competitive pressures; (14) the challenges in integrating and achieving expected results from acquired businesses; (15) potential disruptions in our business systems; (16) potential impairment charges with respect to our investments or acquired intangible assets; (17) exposure to additional tax liabilities; (18) fluctuations in foreign currency exchange rates and the use of derivative instruments; (19) unfavorable global economic conditions; (20) business disruptions from natural or man-made disasters or public health issues; (21) economic, political, and other risks associated with international sales and operations; and (22) our involvement in time-consuming and costly litigation. The foregoing list should not be construed as exhaustive and we encourage readers to refer to the detailed discussion of risk factors included in Part I - Item&#160;1A of this Annual Report on Form 10-K. The Company cautions readers not to place undue reliance upon any such forward-looking statements, which speak only as of the date made. The Company disclaims any obligation to subsequently revise forward-looking statements to reflect the occurrence of anticipated or unanticipated events or circumstances after the date such statements are made.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">EXECUTIVE OVERVIEW</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex Corporation is a leading worldwide provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required. In addition to product revenue derived from the sale of machine vision products, the Company also generates revenue by providing maintenance and support, consulting, and training services to its customers; however, service revenue accounted for less than 10% of total revenue for all periods presented.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex machine vision is used to automate manufacturing and distribution processes in a variety of industries, where the technology is widely recognized as an important component of automated production and quality assurance. Virtually every manufacturer or distributor can achieve better quality and efficiency by using machine vision, and therefore, Cognex products are used by a broad base of customers across a variety of industries, including logistics, automotive, consumer electronics, medical-related, semiconductor, consumer products, and food and beverage.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue for the year ended December&#160;31, 2021 totaled $1,037,098,000, representing an increase of 28% from 2020. The increase was due in part to significantly higher revenue from the logistics industry, which was our largest market in 2021, as well as the impact of a broader recovery in industries that were adversely affected by the COVID-19 pandemic in 2020, most notably the automotive industry.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">17</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Gross margin as a percentage of revenue was 73% in 2021 compared to 75% in 2020, primarily due to higher prices paid to purchase inventories, as well as a greater percentage of total revenue coming from the logistics industry, which has relatively lower gross margins.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Operating expenses increased by $10,656,000, or 2%, from the prior year as higher incentive compensation costs, the impact of foreign currency exchange rate changes, and costs of additional headcount to support our future growth plans, were partially offset by savings from 2020 cost-cutting measures and one-time restructuring and intangible asset impairment charges of $35,495,000. Excluding these one-time restructuring and intangible asset impairment charges, operating expenses increased by $46,151,000, or 12%.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Operating income expanded to 30% of revenue in 2021 compared to 21% of revenue in 2020. This higher level of operating income resulted in net income of 27% of revenue in 2021 compared to 22% of revenue in 2020, and net income per diluted share of $1.56 in 2021 compared to $1.00 in 2020.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table sets forth certain consolidated financial data as a percentage of revenue:</span></div><div style="margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:54.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.996%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.143%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.146%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%;text-decoration:underline">2020</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%;text-decoration:underline">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">100</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cost of revenue</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">27</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">25&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">26&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross margin</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">73</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">75&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">74&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Research, development, and engineering expenses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">13</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Selling, general, and administrative expenses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">30</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">33&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Restructuring charges</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Intangible asset impairment charges</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Operating income</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">30</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">20&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-operating income</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income before income tax expense (benefit)</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">31</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">23&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">23&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense (benefit)</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">4</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(5)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">27</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">22&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">28&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><div id="i929e97f6a142453c8a8057dbb6451118_46"></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">RESULTS OF OPERATIONS</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As foreign currency exchange rates are a factor in understanding period-to-period comparisons, we believe the presentation of results on a constant-currency basis in addition to reported results helps improve investors&#8217; ability to understand our operating results and evaluate our performance in comparison to prior periods. We also use results on a constant-currency basis as one measure to evaluate our performance. Constant-currency information compares results between periods as if exchange rates had remained constant period-over-period. We generally refer to such amounts calculated on a constant-currency basis as excluding the impact of foreign currency exchange rate changes. Results on a constant-currency basis are not in accordance with accounting principles generally accepted in the United States of America (U.S. GAAP) and should be considered in addition to, and not as a substitute for, results prepared in accordance with U.S. GAAP.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Year Ended December&#160;31, 2021 Compared to Year Ended December&#160;31, 2020</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Revenue</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue for the year ended December 31, 2020 was $1,037,098,000 compared to $811,020,000 for the prior year, representing an increase of 28%. Revenue from customers in the logistics industry increased by approximately 65% from the prior year, with the most significant portion of this growth coming from e-commerce and omni-channel retailers. Higher sales from traditional brick-and-mortar retailers also contributed to growth in the logistics industry. </span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Growth in the automotive, semiconductor, medical-related, and consumer products industries also contributed to the increase in total revenue. After declining for two consecutive years, revenue from customers in the automotive industry grew faster than the company average in 2021, due in part to electric vehicle investments. These increases were partially offset by a decrease in revenue from customers in the consumer electronics industry due to lower investment in smartphone manufacturing and other devices that we believe benefited from remote work conditions in 2020.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From a geographic perspective, revenue from customers based in the Americas increased by 40% from the prior year driven primarily by higher revenue in the logistics industry. Revenue from customers in medical-related industries was also notably higher than the prior year.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">18</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue from customers based in Europe increased by 19% from the prior year. Changes in foreign currency exchange rates resulted in a higher level of reported revenue in 2021, as sales denominated in Euros were translated into U.S. Dollars at a higher rate. Excluding the impact of foreign currency exchange rate changes, revenue from customers based in Europe increased by 15% from the prior year. The increase came from customers in a variety of industries, most notably logistics, automotive, and consumer products, partially offset by lower revenue in the consumer electronics industry. The decline in revenue from consumer electronics was partially a result of procurement changes made by certain customers, shifting their purchases to China from Europe.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue from customers based in Greater China increased by 19% from the prior year. Changes in foreign currency exchange rates resulted in a higher level of reported revenue in 2021, as sales denominated in Chinese Renminbi were translated into U.S. Dollars at a higher rate. Excluding the impact of foreign currency exchange rate changes, revenue from customers based in Greater China increased by 12% from the prior year. The increase was driven primarily by higher revenue in the automotive and semiconductor industries, partially offset by lower revenue in the consumer electronics industry.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue from other countries in Asia increased by 24% from the prior year due primarily to higher revenue in the automotive, semiconductor, and consumer electronics industries.</span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of the date of this report, we expect revenue for the first quarter of 2022 to be higher than the revenue reported for the fourth quarter of 2021 of $244,065,000. We anticipate a significant portion of this increase to come from more favorable product supply conditions, as well as higher revenue in the logistics industry, due particularly to the timing of large customer deployments in this industry.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Gross Margin</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Gross margin as a percentage of revenue decreased to 73% in 2021 compared to 75% in 2020. The decrease in gross margin percentage was primarily due to higher prices paid to purchase inventories in 2021, including higher costs for components and freight, due largely to global supply chain constraints. The decrease was also due to a greater percentage of total revenue coming from the logistics industry, which has relatively lower gross margins and included some comparatively lower margins from strategic logistics projects in 2021.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The unfavorable impact of higher inventory purchase prices and a higher percentage of logistics revenue was partially offset by manufacturing efficiencies related to the higher revenue level and lower provisions for excess and obsolete inventories as compared to the prior year. The higher provisions for excess and obsolete inventories in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of the date of this report, we expect gross margin as a percentage of revenue for the first quarter of 2022 to be in the low-70% range. The expected gross margin percentage reflects our expectations that higher inventory purchase prices will continue throughout and beyond the first quarter of 2022. Our estimates also reflect a significant percentage of total revenue coming from the logistics industry, which has relatively lower gross margins.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Operating Expenses</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Research, Development, and Engineering Expenses</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Research, development, and engineering (RD&amp;E) expenses in 2021 increased by $4,390,000, or 3%, from the prior year as detailed in the table below (in thousands).</span></div><div style="margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:80.891%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.909%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">RD&amp;E expenses in 2020</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">130,982&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,919&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Outsourced engineering services</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,464&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Personnel-related costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(517)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">524&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">RD&amp;E expenses in 2021</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">135,372</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RD&amp;E expenses increased due to foreign currency exchange rate changes, as costs denominated in foreign currencies were translated into U.S. Dollars at a higher rate. Higher spending on outsourced engineering services due to the timing of product development activities, including engineering prototypes for large sales opportunities, also contributed to the increase. These increases were partially offset by lower personnel-related costs due to a workforce reduction in the second quarter of 2020. Higher costs from annual salary increases and fringe benefits provided to employees, as well as headcount additions to support new product initiatives, partially offset the lower costs from the workforce reduction.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">19</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RD&amp;E expenses as a percentage of revenue was 13% in 2021 compared to 16% in 2020. We believe that a continued commitment to RD&amp;E activities is essential in order to maintain or achieve product leadership with our existing products and to provide innovative new product offerings, as well as to provide engineering support for large customers. In addition, we consider our ability to accelerate the time to market for new products to be critical to our revenue growth. This quarterly percentage is impacted by revenue levels and investing cycles.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Selling, General, and Administrative Expenses</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Selling, general, and administrative (SG&amp;A) expenses increased in 2021 by $41,761, or 16%, from the prior year as detailed in the table below (in thousands). </span></div><div style="margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:80.891%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.909%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">SG&amp;A expenses in 2020</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">267,593&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Incentive compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,709&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Personnel-related costs</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,734&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,420&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Business system investments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,798&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Marketing programs</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,599&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Travel expenses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,057&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,444&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">SG&amp;A expenses in 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">309,354</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">SG&amp;A expenses increased due to higher expenses related to annual incentive compensation plans, which include sales commissions and incentive bonuses. Relevant performance goals for these plans, as well as any changes to employee eligibility, are set at the beginning of each year, with the ability to earn upside if the goals are exceeded. Sales commissions were higher than the prior year primarily due to the higher business levels, which resulted in a greater portion of our sales team exceeding the performance goals set in their commission plans in 2021 versus 2020. Likewise, the performance goal set for 2021 incentive bonuses was exceeded based on the Company's operating income margin, with the same being true in 2020. However, incentive bonus accruals in 2021 were higher than the prior year primarily due to the impact of changes to employee eligibility, of which the most significant related to members of the Company's senior leadership team who were not eligible for 2020 incentive bonuses as part of the Company's restructuring plan. These annual incentive compensation plans will be reset with relevant performance goals for 2022, and incentive compensation expenses will reflect our estimates of achievement throughout the year, which we expect will result in lower expense for the first quarter of 2022 as compared to the fourth quarter of 2021.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Personnel-related costs increased due to higher costs from annual salary increases and fringe benefits provided to employees, as well as sales headcount additions in strategic growth areas of the business, partially offset by the impact of the workforce reduction that took place in the second quarter of 2020. Changes in foreign currency exchange rates also resulted in a higher level of expenses, as costs denominated in foreign currencies were translated into U.S. Dollars at a higher rate. Expenses were also higher due to investments the Company is making in business systems related to its sales process, including systems to help our sales team more efficiently manage customer relationships and sales opportunities. A portion of these costs was expensed as incurred, while the majority of these investments were accounted for as a capital asset that was placed into service in the first quarter of 2022. The Company also increased spending on marketing programs in an effort to generate future sales opportunities, particularly related to new product introductions, and incurred higher travel expenses as restrictions related to COVID-19 eased in certain regions.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Restructuring and Intangible Asset Impairment Charges</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On May 26, 2020, the Company's Board of Directors approved a restructuring plan intended to reduce the Company's operating costs, optimize its business model, and address the impact of the COVID-19 pandemic. The Company recorded restructuring charges of $15,924,000 in 2020, as a result of actions related to the restructuring plan, which included a global workforce reduction of approximately 8% and office closures. In addition, the adverse impact of the COVID-19 pandemic triggered a review of long-lived assets for potential impairment in the second quarter of 2020. This review resulted in intangible asset impairment charges totaling $19,571,000 recorded in the second quarter of 2020.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">20</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Non-operating Income (Expense)</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recorded foreign currency losses of $2,270,000 in 2021 and foreign currency gains of $3,697,000 in 2020. Foreign currency gains and losses result primarily from the revaluation and settlement of assets and liabilities that are denominated in currencies other than the functional currencies of our subsidiaries or the reporting currency of our company, which is the U.S. Dollar.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Investment income decreased by $6,334,000, or 49%, from the prior year. The decrease was due primarily to lower yields on the Company's portfolio of debt securities, partially offset by higher invested balances.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recorded other expense of $591,000 in 2021 and $309,000 in 2020. Other income (expense) includes fair value adjustments of contingent consideration liabilities arising from business acquisitions.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Income Tax Expense (Benefit)</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s effective tax rate was 12% of pre-tax income in 2021, compared to 6% in 2020. The effective tax rate in both years reflected several discrete tax items described below.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The effective tax rate included a decrease in tax expense of $11,036,000 in 2021 and $12,788,000 in 2020 related to stock options, primarily from the excess tax benefit arising from the difference between the deduction for tax purposes and the compensation cost recognized for financial reporting purposes from stock option exercises. The Company cannot accurately predict the level of stock option exercises by employees in future periods.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income tax expense in 2021 and 2020 also included discrete tax items related to the final true-up of the prior year's tax accrual upon filing the related tax return. In 2020, this included a tax benefit of $13,984,000 primarily to recognize a foreign tax benefit on certain gains taxed outside of the United States based on clarifications to rules relating to the use of foreign tax credits. This benefit was partially offset by tax expense for a transfer price adjustment in China of $3,267,000 and smaller tax expense adjustments related to foreign tax filings of $843,000.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2020, interpretations of a German law relating to withholding taxes on intellectual property rights emerged. The Company conducted a careful review of the interpretation, submitted required tax filings, and believes it has adequate reserves for this German tax exposure.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Excluding the impact of all discrete tax items, the Company&#8217;s effective tax rate was an expense of 16% of pre-tax income in 2021 and 17% of pre-tax income in 2020. The decrease in the effective tax rate excluding discrete tax items was due to the impact of higher estimated tax credits in 2021, partially offset by more of the Company's profits being earned and taxed in higher tax jurisdictions.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Year Ended December&#160;31, 2020 Compared to Year Ended December&#160;31, 2019</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Revenue</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue for the year ended December 31, 2020 was $811,020,000 compared to $725,625,000 for the prior year, representing an increase of 12%. The increase was due largely to higher revenue from customers in the consumer electronics and logistics industries, which were our two largest markets in 2020. During the year, it appeared that manufacturers of electronics products and e-commerce providers in the logistics industry both benefited from the "stay-at-home" conditions that arose from the COVID-19 pandemic in 2020. Revenue from customers in the consumer electronics and logistics industries increased by approximately 30% and 40%, respectively, from the prior year, and a significant portion of this growth came from large customers in these industries. Our total revenue and quarterly timing of revenue is impacted by the purchasing cycles of these large customers.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In contrast, our results indicated that other industries we serve had experienced significantly lower demand during the COVID-19 pandemic, most notably the automotive industry, which was our largest market in 2019. Although revenue from customers in the automotive industry for the full year 2020 decreased by approximately 20% from the prior year, automotive revenue for the fourth quarter of 2020 was slightly higher than the fourth quarter of 2019 and increased sequentially in the last two quarters of 2020. In addition, revenue from customers in certain industries in which we have a smaller presence, including medical-related industries, increased for the full year 2020 from the prior year, due in part to COVID-19 applications for Cognex products. Although we continue to experience certain disruptions to our business from COVID-19 and the situation is continuously changing, the impact of these conditions on our business appears to have been most severe in the second quarter of 2020.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">From a geographic perspective, revenue from customers based in the Americas increased by 12% from the prior year driven by higher revenue in the logistics industry, partially offset by lower revenue in the automotive industry. A significant portion of our logistics business currently comes from customers based in the Americas. Although this region had the largest dollar growth of logistics revenue in 2020, we are making investments to grow our logistics </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">21</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">business outside of the Americas and our logistics revenue increased in all of our major regions in 2020. Revenue from customers based in Europe decreased by 8% from the prior year due to lower revenue in the automotive and consumer electronics industries, partially offset by higher revenue in the logistics industry. Revenue from customers based in Greater China increased by 46% from the prior year due largely to higher revenue in the consumer electronics industry, partially offset by lower revenue in the automotive industry. In recent years, there has been a shift in procurement for certain electronics orders for Cognex products used on assembly lines in China. This procurement shift resulted in an increase in consumer electronics revenue reported in Greater China that was previously reported in Europe. Revenue from other countries in Asia increased by 17% from the prior year due primarily to higher revenue in the consumer electronics and logistics industries.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%;text-decoration:underline">Gross Margin</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Gross margin as a percentage of revenue improved to 75% in 2020 compared to 74% in 2019. The increase in the gross margin percentage was primarily due to the favorable impact of the higher revenue on fixed manufacturing costs, as well as favorable product mix. In 2020, revenue from customers in the consumer electronics and logistics industries each represented a greater percentage of our total revenue than the prior year. Although our logistics margins are lower relative to our total gross margin, these margins improved from 2019 and the impact of logistics on our gross margin was more than offset by a greater contribution of relatively higher-margin consumer electronics revenue. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The favorable impact of sales volume and product mix was partially offset by higher provisions for excess and obsolete inventories, which totaled $9,908,000 in 2020 compared to $5,296,000 in 2019. The higher level of provisions in 2020 was due to lower projected sales of excess inventories as a result of the deteriorating global economic conditions from the COVID-19 pandemic.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Operating Expenses</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Research, Development, and Engineering Expenses</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Research, development, and engineering (RD&amp;E) expenses in 2020 increased by $11,555,000, or 10%, from the prior year as detailed in the table below (in thousands).</span></div><div style="margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:80.891%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.909%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">RD&amp;E expenses in 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">119,427&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Acquisition-related compensation costs</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,963&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Incentive compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,912&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Stock-based compensation expense</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2,405)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Travel expenses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2,083)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">168&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">RD&amp;E expenses in 2020</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">130,982</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RD&amp;E expenses increased due to higher compensation costs related to the Company's acquisition of Sualab Co., Ltd. in the fourth quarter of 2019. These incremental compensation costs included a new team of deep learning engineers, as well as deferred payments from the acquisition that are being recorded as compensation expense over four years from the closing date and that accounted for $4,189,000 of this increase. Excluding the addition of the Sualab deep learning team, RD&amp;E personnel-related costs decreased slightly from 2019 to 2020, as the impact of incremental resources added largely in 2019 were offset by savings from a workforce reduction in the second quarter of 2020.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">RD&amp;E expenses also increased due to higher expenses for annual incentive compensation plans. Relevant performance goals for these plans are set at the beginning of each year, with the ability to earn upside if the goals are exceeded. The Company did not achieve its performance goal to earn a company bonus in 2019, while the goal set for 2020 was exceeded based on the Company's operating income margin. Expenses for the fourth quarter of 2020 included a true-up of the annual liability to reflect the upside achievement based on our strong operating results for the quarter that exceeded our prior estimates.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">These increases were partially offset by lower stock-based compensation expense as a result of a lower total value of awards granted in 2020 as compared to 2019, as well as the impact on the timing of expense recognition due to changes in restricted stock unit vesting schedules. In addition, credits were recorded to stock-based compensation expense in the second quarter of 2020 for awards canceled as a result of a workforce reduction. The Company also incurred lower travel expenses resulting from COVID-19 restrictions.</span></div><div style="margin-top:5pt;text-align:justify"><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">22</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Selling, General, and Administrative Expenses</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Selling, general, and administrative (SG&amp;A) expenses decreased in 2020 by $6,249,000, or 2%, from the prior year as detailed in the table below (in thousands). </span></div><div style="margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:80.891%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.909%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">SG&amp;A expenses in 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">273,842&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Travel expenses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(13,980)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Contract labor</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2,444)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Marketing programs</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,813)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Recruiting fees</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,077)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Incentive compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">19,079&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(6,014)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">SG&amp;A expenses in 2020</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">267,593</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">SG&amp;A expenses decreased due to lower travel expenses resulting from COVID-19 restrictions. The majority of these savings came from sales activities, which were redirected to online efforts due to shutdowns of customer facilities for portions of 2020. In addition, the Company reduced spending on contract labor, marketing programs, and recruiting activities as part of actions taken to reduce operating costs during the global pandemic. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">These decreases were partially offset by higher expenses for annual incentive compensation plans. Relevant performance goals for these plans are set at the beginning of each year, with the ability to earn upside if the goals are exceeded. The Company did not achieve its performance goal to earn a company bonus in 2019, while the goal set for 2020 was exceeded based on the Company's operating income margin. Expenses for the fourth quarter of 2020 included a true-up of the annual liability to reflect the upside achievement based on our strong operating results for the quarter that exceeded our prior estimates. Likewise, sales commissions were higher than the prior year due to a greater portion of our sales team exceeding the performance goals set in their commission plans in 2020 versus 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">SG&amp;A personnel-related costs were relatively flat from the prior year, as the impact of incremental resources added largely in 2019 were offset by savings from a workforce reduction in the second quarter of 2020.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Non-operating Income (Expense)</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recorded foreign currency gains of $3,697,000 in 2020 and foreign currency losses of $509,000 in 2019. Foreign currency gains and losses result primarily from the revaluation of cash, accounts receivable, accounts payable, and intercompany balances that are reported in one currency and denominated in another. In 2020, the Company recognized foreign currency gains related to the revaluation of intercompany payables reported on the Company's China entity that are denominated in U.S. Dollars.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Investment income decreased by $6,695,000, or 34%, from the prior year. The decrease was due to lower yields on the Company's portfolio of debt securities, and to a lesser extent, lower average investment balances.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recorded other expense of $309,000 in 2020 and other income of $1,212,000 in 2019. Other income (expense) includes fair value adjustments of contingent consideration liabilities arising from business acquisitions. In 2019, the Company recorded favorable fair value adjustments related to its acquisition of GVi Ventures, Inc., resulting from a lower level of revenue in the Americas' automotive industry. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Income Tax Expense (Benefit)</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s effective tax rate was an expense of 6% of pre-tax income in 2020 compared to a benefit of 25% of pre-tax income in 2019. The effective tax rate in both years reflected several discrete tax items described below.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The effective tax rate included a decrease in tax expense of $12,788,000 in 2020 and $6,472,000 in 2019 related to stock options, primarily from the excess tax benefit arising from the difference between the deduction for tax purposes and the compensation cost recognized for financial reporting purposes from stock option exercises.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2020, the Company recorded discrete tax items related to the final true-up of the prior year tax accrual upon filing the related tax return. This included a decrease in tax expense of $13,984,000 primarily to recognize a foreign tax benefit on certain gains taxed outside of the United States based on clarifications to rules related to the use of foreign tax credits. This benefit was partially offset by tax expense for a transfer price adjustment in China of $3,267,000 and smaller tax expense adjustments related to foreign tax filings of $843,000.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2020, interpretations of a German law relating to withholding taxes on intellectual property rights emerged. The Company conducted a careful review of the interpretation and believes it has adequate reserves for this German tax exposure.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">23</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2019, the Company made changes to its international tax structure as a result of European Union tax reform legislation, and as a result, recorded a net discrete tax benefit of $87,500,000. Also, in 2019, the Company migrated acquired intellectual property to certain subsidiaries, and as a result, recorded a discrete tax expense of $28,528,000. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other discrete tax items, none of which were individually material, resulted in a net decrease in tax expense of $307,000 in 2020 and $1,932,000 in 2019. Excluding the impact of all discrete tax items, the Company&#8217;s effective tax rate was an expense of 17% of pre-tax income in 2020 and 16% of pre-tax income in 2019. The increase in the effective tax rate excluding discrete tax items was due to more of the Company's profits being earned and taxed in higher tax jurisdictions, as well as the impact of changes in 2019 to the Company's international tax structure. </span></div><div id="i929e97f6a142453c8a8057dbb6451118_49"></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">LIQUIDITY AND CAPITAL RESOURCES</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has historically been able to generate positive cash flow from operations, which has funded its operating activities and other cash requirements and resulted in an accumulated cash and investment balance of $907,364,000 as of December&#160;31, 2021. The Company has established guidelines relative to credit ratings, diversification, and maturities of its investments that maintain liquidity.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s cash requirements in 2021 were primarily met with positive cash flows from operations and the proceeds from stock option exercises. Cash requirements consisted of operating activities, the repurchase of common stock, the payment of dividends, and capital expenditures. Operating activities included cash outflows to secure inventories to support higher business levels and build safety stock to mitigate the Company's exposure to demand changes or supply disruptions. Cash outlays in the first quarter of 2022 are planned to include incentive compensation payments that were earned and accrued in 2021.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Capital expenditures in 2021 totaled $15,455,000 and consisted primarily of computer hardware and software, manufacturing test equipment related to new product introductions, and improvements made to the Company's headquarters building in Natick, Massachusetts. In 2021, the Company made investments in business systems related to its sales process, the majority of which were accounted for as a capital asset that was placed into service in the first quarter of 2022. Although the Company continues to make investments in its business systems related to its sales process, these investments are not expected to be material over the long term.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's material cash requirements include contractual obligations related to inventory purchase commitments and leases. As of December 31, 2021, the Company had inventory purchase commitments of $100,750,000, with the majority payable within 12 months, and lease payment obligations of $37,968,000, with $9,178,000 payable within 12 months.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In addition to the obligations described above, the following items may also result in future material uses of cash:</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Stock Repurchases</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In October 2018, the Company's Board of Directors authorized the repurchase of $200,000,000 of the Company's common stock. Under this October 2018 program, the Company repurchased 1,398,000 shares at a cost of $61,690,000 in 2019, 1,215,000 shares at a cost of $51,036,000 in 2020, and 957,000 shares at a cost of $78,652,000 in 2021, which completed purchases under this program. On March 12, 2020, the Company's Board of Directors authorized the repurchase of an additional $200,000,000 of the Company's common stock. Under this March 2020 program, the Company repurchased 1,060,000 shares at a cost of $83,000,000 in 2021, leaving a remaining balance of $117,000,000. The Company may repurchase shares under this program in future periods depending on a variety of factors, including, among other things, the impact of dilution from employee stock awards, stock price, share availability, and cash requirements. The Company is authorized to make repurchases of its common stock through open market purchases, pursuant to Rule 10b5-1 trading plans, or in privately negotiated transactions.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:107%">Dividends</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s Board of Directors declared and paid cash dividends of $0.050 per share in the first, second, and third quarters of 2019, $0.055 per share in the fourth quarter of 2019 and in the first, second, and third quarters of 2020, and $0.060 per share in the fourth quarter of 2020 and in the first, second, and third quarters of 2021. The dividend was increased to $0.065 per share in the fourth quarter of 2021. Also, in the fourth quarter of 2020, an additional special cash dividend of $2.00 per share was declared and paid. Total dividends amounted to $43,263,000 in 2021, $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, and $35,124,000 in 2019. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend on such factors as the Board deems relevant, including, among other things, the Company's ability to generate positive cash flow from operations.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">24</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Business Acquisitions</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The total consideration for the 2019 acquisition of Sualab Co., Ltd. included deferred payments of $24,040,000 that may become payable in October 2023, contingent upon the continued employment of key talent.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Income Taxes</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Tax Cuts and Jobs Act of 2017 subjected unrepatriated foreign earnings to a one-time transition tax, which is expected to result in tax payments of $51,113,000. These payments started in 2021 and are expected to continue through 2025. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company believes that its existing cash and investment balances, together with cash flow from operations, will be sufficient to meet its operating, investing, and financing activities for the next twelve months. In addition, the Company has no long-term debt. We believe that our strong cash position has put us in a relatively good position with respect to anticipated longer-term liquidity needs.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_52"></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">CRITICAL ACCOUNTING ESTIMATES</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Our discussion and analysis of the Company&#8217;s financial condition and results of operations are based on the consolidated financial statements included in this Annual Report on Form 10-K, which have been prepared in accordance with accounting principles generally accepted in the United States. The preparation of these financial statements requires management to make estimates and judgments that affect the reported amounts of assets, liabilities, revenue, and expenses, and related disclosure of contingent assets and liabilities. We base our estimates on historical experience and various other assumptions believed to be reasonable under the circumstances, the results of which form the basis for making judgments about the carrying values of assets and liabilities that are not readily apparent from other sources. Changes in accounting estimates are reasonably likely to occur from period to period. Accordingly, actual results could differ from these estimates under different assumptions or circumstances resulting in charges that could be material in future reporting periods. We believe the following critical accounting policies require the use of significant estimates and judgments in the preparation of our consolidated financial statements.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Revenue Recognition</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes revenue in accordance with Accounting Standards Codification (ASC) 606, &#8220;Revenue from Contracts with Customers.&#8221; The core principle of ASC 606 is to recognize revenue in a manner that depicts the transfer of promised goods or services to customers in an amount that reflects the consideration to which the Company expects to be entitled in exchange for those goods or services. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management uses significant estimates and judgment when determining the amount of revenue to be recognized each period for application-specific customer solutions. Accounting for application-specific customer solutions requires management to monitor and evaluate customer contracts to determine the point in time at which the solution is validated. The Company&#8217;s application-specific customer solutions are comprised of a combination of products and services which are accounted for as one performance obligation to deliver a total solution to the customer. On-site support services that are provided to the customer after the solution is deployed are accounted for as a separate performance obligation. These solutions are provided to customers in a variety of industries, including the consumer electronics and logistics industries. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue for application-specific customer solutions is recognized at the point in time when the solution is validated, which is the point in time when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligations in the arrangement. Although the customer may have taken legal title and physical possession of the goods when they arrived at the customer&#8217;s designated site, the significant risks and rewards of ownership transfer to the customer only upon validation. Revenue for on-site support services related to these solutions is recognized over the time the service is provided. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In certain instances, an arrangement may include customer-specified acceptance provisions or performance guarantees that allow the customer to accept or reject delivered products that do not meet the customer&#8217;s specifications. If the Company can objectively determine that control of a good or service has been transferred to the customer in accordance with the agreed-upon specifications in the contract, then customer acceptance is a formality. If acceptance provisions are presumed to be substantive, then revenue is deferred until customer acceptance. </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">25</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Investments</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2021, the Company&#8217;s investment portfolio of debt securities totaled $721,203,000. These debt securities are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#8217; equity as other comprehensive income (loss) since these securities are designated as available-for-sale securities. As of December&#160;31, 2021, the Company&#8217;s portfolio of debt securities had a net unrealized loss of $3,902,000. Included in this net loss, were gross unrealized losses totaling $4,971,000, of which $4,896,000 were in a loss position for less than twelve months and $75,000 were in a loss position for greater than twelve months.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management monitors its debt securities that are in an unrealized loss position to determine whether a loss exists related to the credit quality of the issuer. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows. Credit losses on debt securities were not material in 2021, 2020, or 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Inventories</span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventories are stated at the lower of cost and net realizable value. Cost is determined using standard costs, which approximates actual costs under the first-in, first-out (FIFO) method. Net realizable value is the estimated selling price in the ordinary course of business, less readily predictable costs of completion, disposal, and transportation.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and general economic and industry conditions, and records reserves to reduce the carrying value of inventories to their net realizable value. Volatility in the global economy makes these assumptions about future demand more judgmental. Among the risks associated with the introduction of new products are difficulty predicting customer demand and effectively managing inventory levels to ensure adequate supply of the new product and avoid excess supply of the legacy product. In addition, we may strategically enter into non-cancelable commitments with vendors to purchase materials for products in advance of demand to address concerns about the availability of future supplies, build safety stock to help ensure customer shipments are not delayed should we experience higher than anticipated demand for materials with long lead times, or take advantage of favorable pricing. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Intangible Assets</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's intangible assets are susceptible to shortened estimated useful lives and changes in fair value due to changes in their use, market or economic changes, or other events or circumstances. The Company evaluates the potential impairment of intangible assets whenever events or circumstances indicate the carrying value may not be recoverable. Factors that could trigger an impairment review include historical or projected results that are less than the assumptions used in the original valuation of an acquired asset, a change in the Company&#8217;s business strategy or its use of an acquired asset, or negative economic or industry trends.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">If an event or circumstance indicates the carrying value of intangible assets may not be recoverable, the Company assesses the recoverability of the assets by comparing the carrying value of the assets to the sum of the undiscounted future cash flows that the assets are expected to generate over their remaining economic lives. If the carrying value exceeds the sum of the undiscounted future cash flows, the Company compares the fair value of the intangible assets to the carrying value and records an impairment loss for the difference. The Company generally estimates the fair value of its intangible assets using the income approach based on a discounted cash flow model. The income approach requires the use of many assumptions and estimates including future revenues and expenses, discount factors, income tax rates, the identification of groups of assets with highly independent cash flows, and assets&#8217; economic lives. Volatility in the global economy makes these assumptions and estimates more judgmental. Actual future operating results and the remaining economic lives of our intangible assets could differ from those used in assessing the recoverability of these assets and could result in an impairment of intangible assets in future periods.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deteriorating global economic conditions from the COVID-19 pandemic triggered a review of intangible assets for potential impairment in the second quarter of 2020. This review resulted in intangible asset impairment charges totaling $19,571,000 recorded in 2020. No impairment charges related to intangible assets were recorded in 2021 or 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Stock-Based Compensation</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Compensation expense is recognized for all grants of stock options and restricted stock units. Determining the appropriate valuation model and estimating the fair values of stock option grants requires the input of subjective assumptions, including expected stock price volatility, dividend yields, expected term, and forfeiture rates. The expected volatility assumption is based partially upon the historical volatility of the Company&#8217;s common stock, which may or may not be a true indicator of future volatility. The assumptions used in calculating the fair values of stock option grants represent management&#8217;s best estimates, but these estimates involve inherent uncertainties and the </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">26</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">application of judgment. As a result, if factors change and different assumptions are used, stock-based compensation expense could be significantly different from what the Company recorded in the current period.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Income Taxes</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Significant judgment is required in determining worldwide income tax expense based on tax laws in the various jurisdictions in which the Company operates. The Company has established reserves for income taxes by applying the &#8220;more likely than not&#8221; criteria, under which the recognition threshold is met when an entity concludes that a tax position, based solely on its technical merits, is more likely than not to be sustained upon examination by the relevant tax authority. All tax positions are analyzed periodically and adjustments are made as events occur that warrant modification, such as the completion of audits or the expiration of statutes of limitations, which may result in future charges or credits to income tax expense. The Company is currently under audit by the Internal Revenue Service (&#8220;IRS&#8221;) for the tax years 2017 and 2018. Additionally, the Company is under audit by the Commonwealth of Massachusetts for tax years 2017 and 2018. Although management believes the Company is adequately reserved for these audits, the evaluation of the Company&#8217;s tax positions involves significant judgment, and the final determination these tax audits and any related litigation could result in material changes in our estimates.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As part of the process of preparing consolidated financial statements, management is required to estimate income taxes in each of the jurisdictions in which the Company operates. This process involves estimating the current tax liability, as well as assessing temporary differences arising from the different treatment of items for financial statement and tax purposes. These differences result in deferred tax assets and liabilities, which are recorded on the Consolidated Balance Sheets.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Tax Cuts and Jobs Act of 2017 imposed a minimum tax on foreign earnings related to intangible assets, known as the Global Intangible Low-Taxed Income (GILTI) tax. In 2019, the Company elected to account for the impact of the GILTI minimum tax in deferred taxes, a change from the Company&#8217;s initial election made in 2018 whereby the GILTI minimum tax was included in income tax expense as incurred on an annual basis. Management has determined that this change is considered preferable, based on the conclusion that it appropriately matches the Company&#8217;s current and deferred income tax implications related to the change in tax structure noted below.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2019, the Company made changes to its international tax structure as a result of tax reform legislation enacted by the European Union that resulted in an intercompany sale of intellectual property based on the fair value of this intellectual property. Also in 2019, in connection with the acquisition of Sualab Co. Ltd., the Company migrated acquired intellectual property to certain subsidiaries to align with its corporate tax structure. Significant judgment was required to estimate the fair value of the migrated intellectual property, including management estimates related to forecasted future cash flows and discount rates.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_55"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NEW PRONOUNCEMENTS</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Refer to Part II, Item 8 - Note 2 within this Form 10-K, for a full description of recently issued accounting pronouncements including the expected dates of adoption and expected impact on the financial position and results of operations of the Company. </span></div><div id="i929e97f6a142453c8a8057dbb6451118_58"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;7A:&#160;QUANTITATIVE AND QUALITATIVE DISCLOSURES ABOUT MARKET RISK</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company is exposed to certain risks relating to its ongoing business operations, including foreign currency exchange rate risk and interest rate risk. The Company currently mitigates certain foreign currency exchange rate risks with derivative instruments. The Company does not currently manage its interest rate risk with derivative instruments.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Foreign Currency Risk</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company faces exposure to foreign currency exchange rate fluctuations, as a significant portion of its revenues, expenses, assets, and liabilities are denominated in currencies other than the functional currencies of the Company&#8217;s subsidiaries or the reporting currency of the Company, which is the U.S. Dollar. In certain instances, we utilize forward contracts to hedge against foreign currency fluctuations. These contracts are used to minimize foreign currency gains or losses, as the gains or losses on the derivative are intended to offset the losses or gains on the underlying exposure. We do not engage in foreign currency speculation. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company enters into economic hedges utilizing foreign currency forward contracts with maturities of up to 95 days to manage the exposure to fluctuations in foreign currency exchange rates arising primarily from foreign-denominated receivables and payables.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">27</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company had the following outstanding forward contracts (in thousands): </span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:17.228%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.603%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.630%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.844%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.844%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.656%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.630%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.964%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.968%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="12" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="12" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2020</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Currency</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Notional Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">USD Equivalent</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">High Rate</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Low Rate</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Notional Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">USD Equivalent</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">High Rate</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Low Rate</span></td></tr><tr style="height:5pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="24" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Euro</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">65,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,748&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.8814&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.8814&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">61,342&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.8151&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.8151&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Chinese Renminbi</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">54,374&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,500&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6.40</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6.40</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Mexican Peso</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">140,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,842&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">20.46&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">20.46&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">155,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,776&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">19.93&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">19.93&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Japanese Yen</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,213&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">115.10&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">115.10&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,808&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">103.30&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">103.30&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">British Pound</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,370&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,552&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.7403&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.7403&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,675&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,287&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.7324&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.7324&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Hungarian Forint</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,355,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,155&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">326.11&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">326.11&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,330,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,494&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">295.93&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">295.93&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Canadian Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,480&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,167&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.27&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.27&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,285&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,010&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.27&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.27&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Korean Won</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,925,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,377&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,086&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,086&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Taiwanese Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38,035&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,362&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">27.93&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">27.93&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Singapore Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,465&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,110&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.32&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.32&#160;</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="display:none"></td><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><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><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A change in foreign currency exchange rates could materially impact the fair value of these contracts; however, if this occurred, the fair value of the underlying exposures hedged by the contracts would change by a similar amount. Accordingly, management does not believe that a material change in foreign currency exchange rates used in the fair value of our derivative instruments would materially impact operations or cash flows.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The success of our foreign currency risk management program depends on forecasts of transaction activity denominated in various currencies. To the extent that these forecasts are overstated or understated during periods of currency volatility, we could experience unanticipated foreign currency gains or losses that could have a material impact on our results of operations. Furthermore, our failure to identify new exposures and hedge them in an effective manner may result in material foreign currency gains or losses.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s functional currency/reporting currency exchange rate exposures result from revenues and expenses that are denominated in currencies other than the U.S. Dollar. In addition to the U.S. Dollar, a significant portion of our revenues and expenses are denominated in the Euro and Chinese Renminbi, and to a lesser extent the Japanese Yen, Korean Won, and Mexican Peso. We estimate that approximately 49% of our sales in 2021 were invoiced in currencies other than the U.S.&#160;Dollar, and we expect sales denominated in foreign currencies to continue to represent a significant portion of our total revenue. While we also have expenses denominated in these same foreign currencies, the impact on revenues has historically been, and is expected to continue to be, greater than the offsetting impact on expenses. Therefore, in times when the U.S.&#160;Dollar strengthens in relation to these foreign currencies, we would expect to report a net decrease in operating income. Conversely, in times when the U.S.&#160;Dollar weakens in relation to these foreign currencies, we would expect to report a net increase in operating income. Thus, changes in the relative strength of the U.S.&#160;Dollar may have a material impact on our operating results.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Interest Rate Risk</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s investment portfolio of debt securities includes corporate bonds, treasury bills, asset-backed securities, agency bonds, sovereign bonds, and municipal bonds. Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value. As of December&#160;31, 2021, the fair value of the Company&#8217;s portfolio of debt securities amounted to $721,203,000 with amortized cost amounts totaling $725,105,000, maturities that do not exceed five years, and a yield to maturity of 0.92%. Differences between</span><span style="color:#ee2724;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">the fair value and principal amounts of the Company&#8217;s portfolio of debt securities are primarily attributable to discounts and premiums arising at the acquisition date, as well as unrealized gains and losses as of the balance sheet date.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s investment policy allows investment in debt securities with effective maturities up to ten years, however as of December&#160;31, 2021, 84% of the investment portfolio has effective maturity dates of less than three years. Given the relatively short maturities and investment-grade quality of the Company&#8217;s portfolio of debt securities as of December&#160;31, 2021, a sharp rise in interest rates should not have a material adverse effect on the fair value of these instruments. As a result, the Company does not currently hedge these interest rate exposures.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">28</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the hypothetical change in the fair value of the Company&#8217;s portfolio of debt securities arising from selected potential changes in interest rates (in thousands). This modeling technique measures the change in fair value that would result from a parallel shift in the yield curve plus or minus 50 and 100 basis points (BP) over a twelve-month time horizon.</span></div><div style="margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:18.870%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.171%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.171%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.171%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.171%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.176%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Type of security</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Valuation&#160;of&#160;securities&#160;given<br/>an&#160;interest&#160;rate&#160;decrease</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">No&#160;change&#160;in<br/>interest&#160;rates</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Valuation&#160;of&#160;securities&#160;given<br/>an interest&#160;rate&#160;increase</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt 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:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(100 BP)</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(50 BP)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt 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:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">50 BP</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">100 BP</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Corporate bonds</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">563,840&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">559,073&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">554,306&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">549,539&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">544,772&#160;</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Asset-backed&#160;securities</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">82,998&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">82,297&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">81,595&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">80,893&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">80,192&#160;</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">59,674&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">59,170&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">58,665&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">58,161&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">57,656&#160;</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Agency bonds</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">19,203&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">19,041&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">18,879&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">18,716&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">18,554&#160;</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="display:none"></td><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">5,736&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">5,687&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">5,639&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">5,591&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">5,542&#160;</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Sovereign bonds</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2,156&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2,138&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2,119&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2,101&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2,083&#160;</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="display:none"></td><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">733,607</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">727,406</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">721,203</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">715,001</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">708,799</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="text-align:justify"><span><br/></span></div><div style="margin-top:5pt;text-align:justify"><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">29</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_61"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;8:&#160;FINANCIAL STATEMENTS AND SUPPLEMENTARY DATA</span></div><div style="margin-top:14pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">INDEX TO FINANCIAL STATEMENTS AND SUPPLEMENTARY DATA</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:88.782%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.018%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Consolidated Financial Statements:</span></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"><div style="padding-left:6.75pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_64">Report of Independent Registered Public Accounting Fir</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_64">m (PCAOB ID</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_64"> N</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_64">um</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_64">ber </a><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:AuditorFirmId" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82MS9mcmFnOjljN2RhYzIyMzJkNDRiMzViN2IyYTkwMWZhYjFlZTA4L3RhYmxlOjEzNDhkZWU4MDBlNDQ5NDM5MTgyOWE2MTBkNTFlMTNlL3RhYmxlcmFuZ2U6MTM0OGRlZTgwMGU0NDk0MzkxODI5YTYxMGQ1MWUxM2VfMS0wLTEtMS00MjI1OS90ZXh0cmVnaW9uOmJmNTRjYjRlMTRkNjQ0NzJhM2Q0OGU1N2FkYzhmMjg1XzE2NDkyNjc0NDE4MTA_d93ecf4d-b154-4629-b91a-3234a6840c10">248</ix:nonNumeric><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_64">)</a></span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_64">31</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="padding-left:6.75pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_67">Consolidated Statements of Operations for the Years Ended December&#160;31, 202</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_67">1</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_67">, 20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_67">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_67">, and</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_67"> 2019</a></span></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_67">33</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="padding-left:6.75pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_73">Consolidated Statements of Comprehensive Income for the Years Ended December&#160;31, 202</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_73">1</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_73">, 20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_73">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_73">,</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_73"> and </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_73">2019</a></span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_73">34</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="padding-left:6.75pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_79">Consolidated Balance Sheets as of December&#160;31, 202</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_79">1 </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_79">and</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_79"> 2020</a></span></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_79">35</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="padding-left:6.75pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">Consolidated Statements of Cash Flows for the Years Ended December&#160;31, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">202</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">1</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">and </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">2019</a></span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_85">36</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="padding-left:6.75pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">Consolidated Statements of Shareholders&#8217; Equity for the Years Ended December&#160;31, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">21</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">and </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">2019</a></span></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_88">37</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="padding-left:6.75pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_94">Notes to the Consolidated Financial Statements</a></span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_94">38</a></span></div></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Financial Statement Schedule:</span></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"><div style="padding-left:6.75pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">Schedule II &#8211; Valuation and Qualifying Accounts for the Years Ended December&#160;31, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">202</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">1</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">20</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">and</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202"> 2019</a></span></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="text-align:right"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_202">68</a></span></div></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">30</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_64"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">REPORT OF INDEPENDENT REGISTERED PUBLIC ACCOUNTING FIRM</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">Board of Directors and Shareholders</span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">Cognex Corporation</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:115%">Opinion on the financial statements </span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">We have audited the accompanying consolidated balance sheets of Cognex Corporation (a Massachusetts corporation) and subsidiaries (the &#8220;Company&#8221;) as of December 31, 2021 and 2020, the related consolidated statements of operations, comprehensive income, shareholders&#8217; equity, and cash flows for each of the three years in the period ended December 31, 2021, and the related notes and financial statement schedule included under Item 15(2) (collectively referred to as the &#8220;financial statements&#8221;). In our opinion, the financial statements present fairly, in all material respects, the financial position of the Company as of December 31, 2021 and 2020, and the results of its operations and its cash flows for each of the three years in the period ended December 31, 2021, in conformity with accounting principles generally accepted in the United States of America. </span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">We also have audited, in accordance with the standards of the Public Company Accounting Oversight Board (United States) (&#8220;PCAOB&#8221;), the Company&#8217;s internal control over financial reporting as of December 31, 2021, based on criteria established in the 2013 Internal Control&#8212;Integrated Framework issued by the Committee of Sponsoring Organizations of the Treadway Commission (&#8220;COSO&#8221;), and our report dated February 17, 2022 expressed an unqualified opinion.</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:115%">Basis for opinion </span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">These financial statements are the responsibility of the Company&#8217;s management. Our responsibility is to express an opinion on the Company&#8217;s financial statements based on our audits. We are a public accounting firm registered with the PCAOB and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB. </span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">We conducted our audits in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audit to obtain reasonable assurance about whether the financial statements are free of material misstatement, whether due to error or fraud. Our audits included performing procedures to assess the risks of material misstatement of the financial statements, whether due to error or fraud, and performing procedures that respond to those risks. Such procedures included examining, on a test basis, evidence regarding the amounts and disclosures in the financial statements. Our audits also included evaluating the accounting principles used and significant estimates made by management, as well as evaluating the overall presentation of the financial statements. We believe that our audits provide a reasonable basis for our opinion.</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:115%">Critical audit matters </span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">The critical audit matters communicated below are matters arising from the current period audit of the financial statements that were communicated or required to be communicated to the audit committee and that: (1) relate to accounts or disclosures that are material to the financial statements and (2) involved our especially challenging, subjective, or complex judgments. The communication of critical audit matters does not alter in any way our opinion on the financial statements, taken as a whole, and we are not, by communicating the critical audit matters below, providing separate opinions on the critical audit matters or on the accounts or disclosures to which they relate. </span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:107%">Revenue Recognition &#8211; Application-Specific Customer Solutions</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">As described further in Notes 1 and 14 to the financial statements, the Company recognizes revenue from application-specific customer solutions. For these transactions, revenue is recognized at the point in time when the solution is validated, which is when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligation in the contract. We identified revenue recognition related to application-specific customer solutions as a critical audit matter.</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">The principal considerations for our determination that application-specific customer solutions revenue is a critical audit matter are that determining the timing of validation and that the agreed-upon specifications in the contract have been met relies on the use of management estimates and requires a higher degree of auditor subjectivity and judgement in designing and executing audit procedures.  Accounting for application-specific customer solutions requires the Company to monitor and evaluate customer contracts on an ongoing basis to determine the point in time at which the agreed-upon specifications in the contract have been met. </span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">Our audit procedures related to the revenue recognition of application-specific customer solutions included the following, among others.</span></div><div><span><br/></span></div><div><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">31</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="padding-left:36pt;text-align:justify;text-indent:-18pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%;padding-left:14.5pt">We tested the design and operating effectiveness of internal controls related to the monitoring of application-specific customer solutions and the determination of the timing of revenue recognition.</span></div><div style="text-align:justify"><span><br/></span></div><div style="padding-left:36pt;text-align:justify;text-indent:-18pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%;padding-left:14.5pt">We evaluated management&#8217;s significant accounting policies related to these customer contracts for appropriate revenue recognition based on key terms and provisions.</span></div><div style="text-align:justify"><span><br/></span></div><div style="padding-left:36pt;text-align:justify;text-indent:-18pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">&#8226;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%;padding-left:14.5pt">For a sample of transactions, we inspected source documents, including the customer contract or purchase order, third-party shipping information, invoice, and evidence of acceptance.</span></div><div style="margin-top:18pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">/s/ GRANT THORNTON LLP</span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:174%">We have served as the Company&#8217;s auditor since 2007. </span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:174%">Boston, Massachusetts</span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">February&#160;17, 2022 </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">32</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_67"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION &#8211; CONSOLIDATED STATEMENTS OF OPERATIONS</span></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:55.938%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.122%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.243%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.831%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(In thousands, except per share amounts)</span></td></tr><tr style="height:14pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC0xLTEtMS0yODgwNQ_d4c203a2-b0af-4cd1-9cd8-0363e5eb2298">1,037,098</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC0zLTEtMS0yODgwNQ_b617884f-12ae-4663-9364-01333e9636f1">811,020</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC01LTEtMS0yODgwNQ_e59dc8ae-8358-436f-aba0-ae8545065578">725,625</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cost of revenue</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS0xLTEtMS0yODgwNQ_1811b91b-9aeb-4677-8c4c-02dd27d38d72">277,271</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS0zLTEtMS0yODgwNQ_63acc098-0f9a-42f4-b622-f20ab0659e26">206,421</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:CostOfGoodsAndServicesSold" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS01LTEtMS0yODgwNQ_4f9af47e-891a-4b14-b1fa-f052d27f0a5e">189,754</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross margin</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:GrossProfit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi0xLTEtMS0yODgwNQ_88647c3d-741a-42f6-b42e-406d9693d109">759,827</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:GrossProfit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi0zLTEtMS0yODgwNQ_92b005c7-aed5-4571-86a9-bd858ef7ccbf">604,599</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:GrossProfit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi01LTEtMS0yODgwNQ_d8acb45d-ea71-4674-a1e0-b3027894bdd0">535,871</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Research, development, and engineering expenses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ResearchAndDevelopmentExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy0xLTEtMS0yODgwNQ_0205548e-673d-4e69-a497-f78b337c6978">135,372</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ResearchAndDevelopmentExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy0zLTEtMS0yODgwNQ_a137ea1f-f2b7-4ee5-84ca-40d27c6dab28">130,982</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:ResearchAndDevelopmentExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy01LTEtMS0yODgwNQ_08a57e7a-3b5a-4126-a8d2-b2506b6ecf23">119,427</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Selling, general, and administrative expenses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:SellingGeneralAndAdministrativeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC0xLTEtMS0yODgwNQ_1a5048c3-e299-47da-acab-e960aa926d88">309,354</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:SellingGeneralAndAdministrativeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC0zLTEtMS0yODgwNQ_bafe4560-387d-4bc6-8a3b-594245123f5a">267,593</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:SellingGeneralAndAdministrativeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC01LTEtMS0yODgwNQ_0a3e1055-db81-4140-9d4d-604fef5a706c">273,842</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Restructuring charges (Note 22)</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS0xLTEtMS0yODgwNQ_b2df1842-b9ab-4009-8da3-556fe360009a">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS0zLTEtMS0yODgwNQ_12320a2f-6a40-46ab-a5c0-3ef37b13ec09">15,924</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS01LTEtMS0yODgwNQ_c6037538-51ec-4495-b01f-a6e12aac52b7">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Intangible asset impairment charges (Note 9)</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtMS0xLTEtMjg4MDU_feb9ccb3-1b67-41e6-a3b8-4f66de6640e6">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtMy0xLTEtMjg4MDU_d0de176b-c658-4263-9a12-f57fee03b824">19,571</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtNS0xLTEtMjg4MDU_6bf72240-b01c-49f6-9ed7-adbc1feb26ac">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Operating income</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:OperatingIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtMS0xLTEtMjg4MDU_8b33733c-be2a-444e-832c-bba1c03cb5cf">315,101</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OperatingIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtMy0xLTEtMjg4MDU_0ef22013-8efa-4549-8669-1a933dff80a0">170,529</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OperatingIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtNS0xLTEtMjg4MDU_1e3fda19-4164-4975-b6a0-803b372aa759">142,602</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency gain (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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:ForeignCurrencyTransactionGainLossBeforeTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItMS0xLTEtMjg4MDU_e9e6cf58-f928-4bf1-b5e1-c381f2ffaf9c">2,270</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ForeignCurrencyTransactionGainLossBeforeTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItMy0xLTEtMjg4MDU_0e9bae22-84aa-4292-9e17-04b1fc40b0c8">3,697</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:ForeignCurrencyTransactionGainLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItNS0xLTEtMjg4MDU_d02ec1e5-4678-4cd9-a98d-06380864f30e">509</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Investment income</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:InvestmentIncomeNonoperating" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtMS0xLTEtMjg4MDU_3260126e-81e8-45b8-bbaa-640df8030df2">6,660</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:InvestmentIncomeNonoperating" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtMy0xLTEtMjg4MDU_56154023-461f-46ea-8b5b-18097189512e">12,994</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:InvestmentIncomeNonoperating" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtNS0xLTEtMjg4MDU_9375e98a-bf86-4b32-bbdc-f029c623e480">19,689</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other income (expense)</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtMS0xLTEtMjg4MDU_46648351-033b-4ef8-a1bd-ddbd2888b423">591</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtMy0xLTEtMjg4MDU_1474614c-1f15-4f91-9a09-4854327d54fd">309</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherNonoperatingIncomeExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtNS0xLTEtMjg4MDU_871ffd14-54e6-4066-b66e-6e71d338ed72">1,212</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income before income tax expense (benefit)</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtMS0xLTEtMjg4MDU_83f08eab-a2df-4790-b3f9-ef4b5bee0feb">318,900</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtMy0xLTEtMjg4MDU_e9e09ef3-5ec4-45a3-a08c-c439c2196443">186,911</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtNS0xLTEtMjg4MDU_b2faab36-6aa5-41d6-b340-f6d59d75a775">162,994</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense (benefit)</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtMS0xLTEtMjg4MDU_e9597605-2f18-4c1f-908f-ffdb1cea9438">39,019</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtMy0xLTEtMjg4MDU_abff7cf0-84a7-4020-9385-a8244e4ba1d8">10,725</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtNS0xLTEtMjg4MDU_808db385-cb1c-49db-93ea-abc0242877bf">40,871</ix:nonFraction>)</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="display:none"></td><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktMS0xLTEtMjg4MDU_63fb6e1e-3501-4102-9d4e-457e445af2e0">279,881</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktMy0xLTEtMjg4MDU_106eed98-0471-48fc-9e3f-af5d2d4cd9e8">176,186</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktNS0xLTEtMjg4MDU_f8615543-e5c3-4af9-bc3e-9e380fd17e14">203,865</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:14pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;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 #000000;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 #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net Income per weighted-average common and common-equivalent share:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtMS0xLTEtMjg4MDU_ed7843d2-73d4-4ac8-a5e3-5642bcb7f1a1">1.59</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtMy0xLTEtMjg4MDU_494b3d87-e4ff-4ac6-997f-553615d5d8b8">1.02</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtNS0xLTEtMjg4MDU_8e75b04e-c0e7-4fda-841a-5945701f2e7a">1.19</ix:nonFraction>&#160;</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="display:none"></td><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Diluted</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctMS0xLTEtMjg4MDU_8f693eac-0ed0-43d7-a424-aee887479ce4">1.56</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctMy0xLTEtMjg4MDU_3e3b36ba-8336-4546-bfa3-552cc8a5abed">1.00</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctNS0xLTEtMjg4MDU_2918caa7-40b3-4821-8baa-d6f3ebf1496a">1.16</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:8pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;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 #000000;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 #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Weighted-average common and common-equivalent shares outstanding:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Basic</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtMS0xLTEtMjg4MDU_8074297a-b9f3-4430-9918-12dda55f7dea">176,463</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtMy0xLTEtMjg4MDU_5b853a55-8b54-4ab8-85ab-94570a417766">173,489</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtNS0xLTEtMjg4MDU_c77ca68d-a6ce-446d-b0de-45d3571a6421">171,194</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Diluted</span></td><td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtMS0xLTEtMjg4MDU_2d54fb58-2f28-463c-af13-ac0b332e11de">179,916</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;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:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtMy0xLTEtMjg4MDU_1224e0d5-9118-4472-aaba-dd4adb807a77">176,592</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;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:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtNS0xLTEtMjg4MDU_38adb3d7-cdd9-40f5-a038-5310c5454671">175,269</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:11pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;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 #000000;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 #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash dividends per common share</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="4" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d">0.245</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="4" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58">2.225</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="4" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9">0.205</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:14pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;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 #000000;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 #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="display:none"></td></tr></table></div><div><span><br/></span></div><div><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying notes are an integral part of these consolidated financial statements.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">33</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_73"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION &#8211; CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME</span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:59.222%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.637%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.637%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.640%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(In thousands)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy0xLTEtMS0yODgwNQ_63fb6e1e-3501-4102-9d4e-457e445af2e0">279,881</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy0zLTEtMS0yODgwNQ_106eed98-0471-48fc-9e3f-af5d2d4cd9e8">176,186</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy01LTEtMS0yODgwNQ_f8615543-e5c3-4af9-bc3e-9e380fd17e14">203,865</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other comprehensive income (loss), net of tax:</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></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><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><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr style="height:15pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><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 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Available-for-sale investments:</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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="padding-left:11.25pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net unrealized gain (loss), net of tax of $(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxNzg2_52204a59-a46b-41fd-9cf8-108c737acf1e">2,206</ix:nonFraction>), $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxNzkz_281a6c01-4842-48c8-b3b2-009012245a92">981</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxODAw_03075959-5971-40f2-9189-5c3fa81d8ebb">515</ix:nonFraction> in 2021, 2020, and 2019, respectively</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMS0xLTEtMjg4MDU_1dd1fd40-edab-4d0d-8e68-0b91a5164637"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMS0xLTEtMjg4MDU_b742f886-5ad2-49bb-acfc-377ae728e3a1">7,152</ix:nonFraction></ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMy0xLTEtMjg4MDU_5214bebf-0197-469d-af95-cfe9be899b74">6,478</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtNS0xLTEtMjg4MDU_6f0351b4-150f-457f-9ea2-5d4b9bc0f5b6">5,219</ix:nonFraction>&#160;</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="display:none"></td><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Reclassification of net realized (gain) loss into current operations</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMS0xLTEtMjg4MDU_8beac94e-d0d6-4dca-a1e2-cbfa7ffda116"><ix:nonFraction unitRef="usd" contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMS0xLTEtMjg4MDU_a73b989f-4a6f-4c86-86eb-cd252dddedf3">236</ix:nonFraction></ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMy0xLTEtMjg4MDU_22f067fd-4e97-4ffd-af18-731efacb683c">4,119</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtNS0xLTEtMjg4MDU_cc084d4b-86fe-4d26-b4d7-1a14ea1d117b">1,452</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net change related to available-for-sale investments</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtMS0xLTEtMjg4MDU_534fb1dc-195d-4c19-b867-695a34ed9811">7,388</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtMy0xLTEtMjg4MDU_3775f206-6f78-44d5-83cc-28dd3ce3baca">2,359</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtNS0xLTEtMjg4MDU_dcb43327-b4e4-4afc-9044-1df8ad07e075">3,767</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency translation adjustments:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 12.25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency translation adjustments</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMS0xLTEtMjg4MDU_343cbe48-d062-46c5-bac8-ae2ccdd12aeb"><ix:nonFraction unitRef="usd" contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMS0xLTEtMjg4MDU_355fb131-335d-4929-a67b-e9aae1838af7">6,753</ix:nonFraction></ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMy0xLTEtMjg4MDU_bb513484-153e-4305-9078-38690be011b6">1,115</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctNS0xLTEtMjg4MDU_202c56e2-d3d4-4e2b-aa3d-29a6dac9ecaa">541</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net change related to foreign currency translation adjustments</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtMS0xLTEtMjg4MDU_32713708-4ac9-49d3-939f-794784f22cb7">6,753</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtMy0xLTEtMjg4MDU_ce5afdb6-b6d1-45ea-8cea-8192fb59224d">1,115</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtNS0xLTEtMjg4MDU_c1fa9709-6d19-4d36-87c4-a124cfa28df1">541</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other comprehensive income (loss), net of tax</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtMS0xLTEtMjg4MDU_99d33bc5-eb7f-428a-824f-6984bf9a790c">14,141</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtMy0xLTEtMjg4MDU_4068dec2-b992-4af2-9dc9-8403bedb0a50">3,474</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtNS0xLTEtMjg4MDU_996918f4-c778-4941-bf45-375551e35c56">3,226</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Total comprehensive income</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtMS0xLTEtMjg4MDU_64e6ce0a-3a1c-4471-a0d4-f3ef59c32ebb">265,740</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtMy0xLTEtMjg4MDU_74fd4a6b-a4a4-4c46-aeb2-1ae966a8e8bd">179,660</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:ComprehensiveIncomeNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtNS0xLTEtMjg4MDU_c28633ac-4bb9-4d63-924e-5c737a1c5f33">207,091</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:72pt;font-weight:400;line-height:120%">&#160;</span></div><div><span><br/></span></div><div style="margin-top:5pt;text-align:center"><span><br/></span></div><div style="margin-top:5pt;text-align:center"><span><br/></span></div><div style="margin-top:5pt;text-align:center"><span><br/></span></div><div style="margin-top:5pt;text-align:center"><span><br/></span></div><div style="margin-top:5pt;text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying notes are an integral part of these consolidated financial statements.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">34</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_79"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION &#8211; CONSOLIDATED BALANCE SHEETS</span></div><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:5pt"><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.560%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.204%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.206%"></td><td style="width:0.1%"></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:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">December&#160;31,</span></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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2020</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:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(In thousands)</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">ASSETS</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current assets:</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNS0xLTEtMS0yODgwNQ_e1096d69-6147-4d3e-b96e-1bd9674916b4">186,161</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNS0zLTEtMS0yODgwNQ_ade9878f-0caf-44e3-8024-9657a143eab0">269,073</ix:nonFraction>&#160;</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"><div style="padding-left:18pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current investments, amortized cost of $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5MzE_4fed5f3f-060e-4c3d-942d-87fb3f35b180">137,124</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NDI_89e781cc-e420-4fc7-a6d4-759ea08f963c">102,258</ix:nonFraction> in 2021 and 2020, respectively, allowance for credit losses of $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NTE_54c9d95e-5fee-48f0-a663-9785d86bd2a1"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NTE_d649e1c1-e3dc-4e47-8349-d990f93d7ce3">0</ix:nonFraction></ix:nonFraction> in 2021 and 2020</span></div></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0xLTEtMS0yODgwNQ_3850fce7-5387-42e6-a071-2ef2578c3845">137,455</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0zLTEtMS0yODgwNQ_a8d92f80-0e75-4e28-957f-df5f430c83a4">103,240</ix:nonFraction>&#160;</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"><div style="padding-left:18pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts receivable, allowance for credit losses of $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOjFkN2EyNjIyNGIxNTQ1NTg4NDIyMzM3NzBmMGNhNTNjXzEwOTk1MTE2Mjc4OTM_83a8cb10-16a4-40b6-8fe9-849f80787413">776</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOjFkN2EyNjIyNGIxNTQ1NTg4NDIyMzM3NzBmMGNhNTNjXzEwOTk1MTE2Mjc4ODc_631b2888-620d-4792-b00f-1b18efca405e">831</ix:nonFraction> in 2021 and 2020, respectively</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccountsReceivableNetCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0xLTEtMS0yODgwNQ_9fe205aa-fa0d-48c7-9025-e0f13bb32411">130,348</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccountsReceivableNetCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0zLTEtMS0yODgwNQ_796591e3-6f22-4f33-a52d-4bdaf3f4e462">125,696</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Unbilled 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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:UnbilledReceivablesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOC0xLTEtMS0yODgwNQ_5ed215b5-b7c5-4e34-83fd-c3b873c32aad">3,990</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:UnbilledReceivablesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOC0zLTEtMS0yODgwNQ_d33258b6-8ea1-415c-9f63-16539aa1fb65">5,632</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Inventories</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:InventoryNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOS0xLTEtMS0yODgwNQ_5bdad76a-64ec-46c1-b21b-8d12171416e3">113,102</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:InventoryNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOS0zLTEtMS0yODgwNQ_9562517e-596c-4f2d-8daa-87b394b8b1ec">60,830</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTAtMS0xLTEtMjg4MDU_cfe161ae-af35-4bc4-8e84-8c586656c5b6">68,742</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTAtMy0xLTEtMjg4MDU_668696fd-2fbf-40c8-9b57-8238b525432c">37,220</ix:nonFraction>&#160;</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 30.25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total current assets</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTEtMS0xLTEtMjg4MDU_67b3f233-8f74-488f-b6b2-d0e566e93c77">639,798</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AssetsCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTEtMy0xLTEtMjg4MDU_37653c80-31ee-4db7-b403-4b50d3dec2a7">601,691</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Non-current investments, amortized cost of $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTM1_4dc47643-8ab9-4a72-8f4c-94d2b8d70733">587,981</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTQ2_dbdb6e3a-9cb3-43e9-a616-4ebdc34da03e">390,417</ix:nonFraction> in 2021 and 2020, respectively, allowance for credit losses of $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTUx_a9ead8f8-6394-46ed-a1d6-02037a432097"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTUx_f370e15e-1ec4-4d36-a05d-4e0aeed10307">0</ix:nonFraction></ix:nonFraction> in 2021 and 2020</span></div></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LongTermInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMS0xLTEtMjg4MDU_a99ced8f-2792-4e77-9233-0c6fcb703eb0">583,748</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:LongTermInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMy0xLTEtMjg4MDU_196cdde4-f3e6-48b7-985b-5b9952d123c4">395,125</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Property, plant, and equipment, net</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTMtMS0xLTEtMjg4MDU_f744812a-9ef5-4a8b-bc1e-187e146006e7">77,546</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTMtMy0xLTEtMjg4MDU_7d8b23d5-6d2f-4ba5-8674-bda8e740fbfb">79,173</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating lease assets</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:OperatingLeaseRightOfUseAsset" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTQtMS0xLTEtMjg4MDU_e6313baa-10b0-42eb-9adc-ef427838f034">23,157</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:OperatingLeaseRightOfUseAsset" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTQtMy0xLTEtMjg4MDU_4e56fba2-53c4-4ab3-a06d-af3ad0e8096b">22,582</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Goodwill</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:Goodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTUtMS0xLTEtMjg4MDU_3043f833-ee4e-42fb-8515-e1f73f7e262e">241,713</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:Goodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTUtMy0xLTEtMjg4MDU_547adc00-94bb-4638-8e78-fb24c837baab">244,078</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Intangible assets, net</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:IntangibleAssetsNetExcludingGoodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTYtMS0xLTEtMjg4MDU_cedd3677-df80-45cf-b000-6fc5ea12a37a">11,888</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:IntangibleAssetsNetExcludingGoodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTYtMy0xLTEtMjg4MDU_22238314-af54-41b4-acbf-11124afe5941">15,555</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred income taxes</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredIncomeTaxAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTctMS0xLTEtMjg4MDU_0331d5f8-5e6d-413b-8edc-68053c4018de">418,570</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredIncomeTaxAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTctMy0xLTEtMjg4MDU_7ba73d4d-8f51-48c1-8154-bb1be96a69e1">434,704</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other assets</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:OtherAssetsNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTgtMS0xLTEtMjg4MDU_82607e59-9e18-48cf-b484-9c945717b2ee">7,242</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:OtherAssetsNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTgtMy0xLTEtMjg4MDU_9516a476-b00d-4a7b-906b-9ab7efbb10e7">7,794</ix:nonFraction>&#160;</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 30.25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total assets</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:Assets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTktMS0xLTEtMjg4MDU_5f65abe9-354c-46b8-9b63-a80933d75b4e">2,003,662</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:Assets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTktMy0xLTEtMjg4MDU_8722a55f-891f-45fb-83d8-9d97f271a8a4">1,800,702</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;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 #000000;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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">LIABILITIES AND SHAREHOLDERS&#8217; EQUITY</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Current liabilities:</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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts payable</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccountsPayableCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjMtMS0xLTEtMjg4MDU_aedaf0d8-0bf5-4b2d-be80-864e72f4a791">44,051</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccountsPayableCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjMtMy0xLTEtMjg4MDU_7c13ae19-8bff-4b2f-9b22-fbbc3c3e3b16">16,270</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accrued expenses</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjQtMS0xLTEtMjg4MDU_6a1a4599-fb9d-4ab8-b9d7-992eb0777841">92,432</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjQtMy0xLTEtMjg4MDU_e208c658-43c7-4ca4-bfb4-815eb0d99638">77,264</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accrued income taxes</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccruedIncomeTaxesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjUtMS0xLTEtMjg4MDU_e5c3d661-300e-4549-b155-95c70bb66897">8,577</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccruedIncomeTaxesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjUtMy0xLTEtMjg4MDU_705eb961-50cb-4a94-a5b5-4b72cb791dad">9,379</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred revenue and customer 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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjYtMS0xLTEtMjg4MDU_cc405467-25f6-4df1-bc18-6fa62bb91028">35,743</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjYtMy0xLTEtMjg4MDU_b14d33d9-0f59-4e78-ba38-03c05750f12f">21,274</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating lease liabilities</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjctMS0xLTEtMjg4MDU_c7ba9ff7-955a-429a-b502-d017a1c18bde">7,786</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjctMy0xLTEtMjg4MDU_33e8878e-6541-47e9-9709-19884bc5667b">8,110</ix:nonFraction>&#160;</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 30.25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total current liabilities</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjgtMS0xLTEtMjg4MDU_47176647-829d-4353-a19d-b8aca22e5d32">188,589</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:LiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjgtMy0xLTEtMjg4MDU_0d85641e-de17-4ddf-b318-6a6ccbfe2311">132,297</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Non-current operating lease liabilities</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjktMS0xLTEtMjg4MDU_021575c9-a9d3-49f4-b5ae-4520acd6ed6c">17,795</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:OperatingLeaseLiabilityNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjktMy0xLTEtMjg4MDU_ecf93584-487b-4b48-8177-c32b1baa6419">18,120</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred income taxes</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzAtMS0xLTEtMjg4MDU_49db500d-ad29-49d1-9144-4682922824b2">293,769</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzAtMy0xLTEtMjg4MDU_80e7b7d4-7266-45e7-91cf-2e0b13f3dc3c">314,952</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Reserve for income taxes</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LiabilityForUncertainTaxPositionsNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzEtMS0xLTEtMjg4MDU_6b19f80c-b119-464c-bc9a-b7f7ddd3b720">14,780</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:LiabilityForUncertainTaxPositionsNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzEtMy0xLTEtMjg4MDU_447e9c9c-73b2-4811-899b-5aceb0572beb">14,257</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Non-current accrued income taxes</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccruedIncomeTaxesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzItMS0xLTEtMjg4MDU_783a9c03-a214-49fc-9414-b64e10254e60">43,160</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccruedIncomeTaxesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzItMy0xLTEtMjg4MDU_66748c11-08f0-4063-871a-70986a35bb98">48,915</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other liabilities</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:OtherLiabilitiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzMtMS0xLTEtMjg4MDU_cb1c6531-c0e7-4c78-a659-946625d8e375">15,476</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:OtherLiabilitiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzMtMy0xLTEtMjg4MDU_28687061-ae12-4de4-933f-ea05c9f04dc2">9,959</ix:nonFraction>&#160;</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 30.25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total liabilities</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:Liabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzQtMS0xLTEtMjg4MDU_8a583769-0c08-4ddd-892d-6c5482593988">573,569</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:Liabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzQtMy0xLTEtMjg4MDU_0c9e5f46-e492-45d1-b319-1d5dfed0c043">538,500</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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;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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Commitments and contingencies (Note 11)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" xsi:nil="true" name="us-gaap:CommitmentsAndContingencies" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzYtMS0xLTEtMjg4MDU_57896a22-5293-41f6-b3c0-23b9f778a49d"></ix:nonFraction></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" xsi:nil="true" name="us-gaap:CommitmentsAndContingencies" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzYtMy0xLTEtMjg4MDU_12b8c8da-9cf5-4995-8e20-a4b373c72de7"></ix:nonFraction></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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Shareholders&#8217; equity:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Preferred stock, $.01 par value - Authorized: 400 shares in 2021 and 2020, respectively, no shares issued and outstanding</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:PreferredStockValueOutstanding" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzgtMS0xLTEtMjg4MDU_958f6b99-2faa-404d-a489-4f836e03065f">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:PreferredStockValueOutstanding" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzgtMy0xLTEtMjg4MDU_bfaa2f74-f65a-419c-9860-0c765d8643df">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Common stock, $.002 par value &#8211; Authorized: 300,000 shares in 2021 and 2020, respectively, issued and outstanding: 175,481 and 175,790 shares in 2021 and 2020, respectively</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:CommonStockValueOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzktMS0xLTEtMjg4MDU_5234732b-dcc0-4df5-a6c9-9de2b2ad4fa9">351</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:CommonStockValueOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzktMy0xLTEtMjg4MDU_65b87bd1-01c8-4aa9-899c-b4ada6b642bc">352</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Additional paid-in capital</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AdditionalPaidInCapitalCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDAtMS0xLTEtMjg4MDU_a2797beb-1eb6-4ca7-8260-6c5a4da4f249">914,802</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AdditionalPaidInCapitalCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDAtMy0xLTEtMjg4MDU_8ed39b17-8a7a-4028-abcc-a05aae5928f0">807,739</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Retained earnings</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:RetainedEarningsAccumulatedDeficit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDEtMS0xLTEtMjg4MDU_bde04d27-a450-42a6-8a85-212eb3538e67">562,882</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:RetainedEarningsAccumulatedDeficit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDEtMy0xLTEtMjg4MDU_19bb859a-ead8-4f7a-88de-18a1d5d1e3b8">487,912</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accumulated other comprehensive loss, net of tax</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" sign="-" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDItMS0xLTEtMjg4MDU_032a26c3-94c8-4cea-b5b4-f34795c11ce6">47,942</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" sign="-" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDItMy0xLTEtMjg4MDU_7d39a523-6942-441d-967e-ad8d4db456fc">33,801</ix:nonFraction>)</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 30.25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total shareholders&#8217; equity</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDMtMS0xLTEtMjg4MDU_1988e870-9dfc-4330-8f7d-37fd16e0e9e4">1,430,093</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDMtMy0xLTEtMjg4MDU_608a61bc-a879-49cf-9093-260abcac0eda">1,262,202</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 30.25pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Total liabilities and shareholders' equity</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LiabilitiesAndStockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDQtMS0xLTEtMjg4MDU_a0df0291-c7cb-476c-a90c-e04833ce53b9">2,003,662</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:LiabilitiesAndStockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDQtMy0xLTEtMjg4MDU_fbd3aa04-d7a1-4f1b-8b2e-c4ce8a86f808">1,800,702</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying notes are an integral part of these consolidated financial statements.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">35</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_85"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION &#8211; CONSOLIDATED STATEMENTS OF CASH FLOWS</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:65.272%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.619%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.619%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.622%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt 2px 7.75pt;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:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">2019</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:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(In thousands)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash flows from operating activities:</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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC0xLTEtMS0yODgwNQ_63fb6e1e-3501-4102-9d4e-457e445af2e0">279,881</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC0zLTEtMS0yODgwNQ_106eed98-0471-48fc-9e3f-af5d2d4cd9e8">176,186</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC01LTEtMS0yODgwNQ_f8615543-e5c3-4af9-bc3e-9e380fd17e14">203,865</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Adjustments to reconcile net income to net cash provided by operating activities:</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></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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation expense</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:StockOptionPlanExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy0xLTEtMS0yODgwNQ_b849c884-659f-459e-8de9-cedec42e1496">43,774</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:StockOptionPlanExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy0zLTEtMS0yODgwNQ_68139d48-87ed-4405-a3eb-dafdfcd1e75f">42,661</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:StockOptionPlanExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy01LTEtMS0yODgwNQ_83d3ecdb-7e67-4c86-8938-d78cf070cac5">45,589</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Depreciation of property, plant, and equipment</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC0xLTEtMS0yODgwNQ_7ad0dde0-8062-40d4-b256-156ba44c1d27">16,616</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC0zLTEtMS0yODgwNQ_eb3d8953-62ca-4285-a495-255e68562146">22,139</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:Depreciation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC01LTEtMS0yODgwNQ_d4fe5c28-9033-4d8f-a909-a8b49bc7b54a">21,527</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Loss (gain) on disposal of property, plant, and equipment</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:GainLossOnSaleOfPropertyPlantEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS0xLTEtMS0yODgwNQ_21ca1ac6-7c91-4b99-96ca-cd1f8216df00">33</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:GainLossOnSaleOfPropertyPlantEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS0zLTEtMS0yODgwNQ_c964abbe-0d74-4d31-b0c0-ebc9599f5f5a">1,817</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:GainLossOnSaleOfPropertyPlantEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS01LTEtMS0yODgwNQ_185134a4-fd5b-4392-9f88-822148b24cf0">324</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Amortization of intangible assets</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:AmortizationOfIntangibleAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtMS0xLTEtMjg4MDU_92f9ef5b-e5e5-4b82-b012-f300953b45f2">3,667</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:AmortizationOfIntangibleAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtMy0xLTEtMjg4MDU_fb9f5653-7b4a-4325-b0e4-eefbf12ff5dd">4,364</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:AmortizationOfIntangibleAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtNS0xLTEtMjg4MDU_b026e7ae-d594-4359-8e0c-b2652dc9cda2">3,373</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Intangible asset impairment charges</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtMS0xLTEtMjg4MDU_291b962f-4c21-4cb7-a3fb-bd2841e60a08">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtMy0xLTEtMjg4MDU_2bf44323-5254-4bc6-8d91-548cf63b5e33">19,571</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtNS0xLTEtMjg4MDU_bce0a8a0-0499-42e3-99b8-8c73ea9213b4">&#8212;</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Excess and obsolete inventory charges</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="cgnx:ExcessAndObsoleteInventoryCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItMS0xLTEtMjg4MDU_4e52afca-b941-412b-b776-48fb91d649c0">2,573</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="cgnx:ExcessAndObsoleteInventoryCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItMy0xLTEtMjg4MDU_8bae0034-a1b3-4957-97a4-13fbf439c0ad">9,908</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="cgnx:ExcessAndObsoleteInventoryCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItNS0xLTEtMjg4MDU_bb69ba6f-f956-46e8-8d2c-6b878d2fae6a">5,296</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Operating lease asset impairment charges</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:OperatingLeaseImpairmentLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtMS0xLTEtMjg4MDU_8e04c750-490d-4e60-83db-4375135f35d0">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OperatingLeaseImpairmentLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtMy0xLTEtMjg4MDU_aab035fe-ff3a-4e4f-804f-7d0701ac24bc">3,427</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OperatingLeaseImpairmentLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtNS0xLTEtMjg4MDU_b48f9060-2422-4ff8-b44a-4fec5d99b481">&#8212;</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Amortization of discounts or premiums on investments</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtMS0xLTEtMjg4MDU_704f5b39-2f56-446b-aa87-4ac69c251488">4,887</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtMy0xLTEtMjg4MDU_6f4e9e96-9f49-4e60-bc12-b7a316927317">1,274</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtNS0xLTEtMjg4MDU_1b40bd8f-70bb-4ab0-ac28-01e63f1456c0">618</ix:nonFraction>)</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Realized gain on sale of investments</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:GainLossOnSaleOfInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtMS0xLTEtMjg4MDU_ee8f9841-7c75-4894-92bb-0c9341bd4a79">236</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:GainLossOnSaleOfInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtMy0xLTEtMjg4MDU_ca7bcde5-21a1-402f-8242-e09e22f3cc3f">4,119</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:GainLossOnSaleOfInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtNS0xLTEtMjg4MDU_735f837f-2c06-4ff8-bb1e-b723dbe41897">1,452</ix:nonFraction>)</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Revaluation of contingent consideration</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtMS0xLTEtMjg4MDU_b128288e-e67d-46f8-912c-738d2edf5408">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtMy0xLTEtMjg4MDU_88c7625d-1e78-441f-b55c-14f811253ba2">114</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtNS0xLTEtMjg4MDU_65dc70bb-607c-402f-97c9-79381ea1bbcc">1,401</ix:nonFraction>)</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Change in deferred income taxes</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInDeferredIncomeTaxes" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctMS0xLTEtMjg4MDU_fbd9b2ea-6542-4d45-93e2-a056ce3a2920">3,118</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInDeferredIncomeTaxes" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctMy0xLTEtMjg4MDU_cfd15470-48c7-48a1-8fe0-81f5eea7d2d7">3,353</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:IncreaseDecreaseInDeferredIncomeTaxes" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctNS0xLTEtMjg4MDU_e34f2843-6c09-4d4d-a61b-843967b895f7">94,866</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Changes in operating assets and liabilities:</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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts receivable</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsReceivable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktMS0xLTEtMjg4MDU_35f43b56-aed1-417f-8b45-978540f75312">4,503</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsReceivable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktMy0xLTEtMjg4MDU_ea315f74-116b-406a-b430-2c7e7c1bdef2">21,285</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInAccountsReceivable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktNS0xLTEtMjg4MDU_309a8d95-ff8a-48af-ab5d-88ef0158b3c1">16,807</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Unbilled 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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtMS0xLTEtMjg4MDU_727e9f24-aa08-4079-9ea8-5e41bbd431a2">1,637</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtMy0xLTEtMjg4MDU_85927654-bfe2-40ea-81b6-2bd8cc03189b">848</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtNS0xLTEtMjg4MDU_06213098-9a7d-4297-b4d6-f8fb70d78ad7">3,530</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Inventories</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInInventories" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtMS0xLTEtMjg4MDU_ddbd7239-d626-4b78-8c41-0679a5eaa413">54,920</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInInventories" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtMy0xLTEtMjg4MDU_4b5e444b-406d-4ce5-aed5-f0eeaee64052">10,319</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInInventories" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtNS0xLTEtMjg4MDU_76fcd120-7b87-4c53-ac0a-72fceb909dbd">17,841</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItMS0xLTEtMjg4MDU_23400815-b748-43ae-b422-e2a74e09779a">32,342</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItMy0xLTEtMjg4MDU_9eb634f5-4fca-46c7-8f7e-e1a02227597d">9,909</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItNS0xLTEtMjg4MDU_a4331382-0b83-4a2b-a17f-267b5265ebb3">7,405</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accounts payable</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtMS0xLTEtMjg4MDU_b3d93b38-f6e7-4301-a92b-d2baf809e676">27,828</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInAccountsPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtMy0xLTEtMjg4MDU_b83703d2-0cf2-464b-b004-7ab8e2fa8697">1,688</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccountsPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtNS0xLTEtMjg4MDU_d4013814-0e07-442e-8493-7190606b3d17">1,633</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accrued expenses</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtMS0xLTEtMjg4MDU_7c9373ed-fb77-4db6-bd55-46d8601d1049">16,861</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtMy0xLTEtMjg4MDU_bc4edef1-7b11-44e9-aa68-70989e575b3f">24,542</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtNS0xLTEtMjg4MDU_2c7ef46c-d5a4-4b0b-bbfa-1cf1f241a9ee">8,938</ix:nonFraction>)</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Accrued income taxes</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtMS0xLTEtMjg4MDU_e5153426-86d4-479c-afa6-04ad412518ac">6,401</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtMy0xLTEtMjg4MDU_73478759-5d67-4fc5-8bec-8bbb2a19c2ad">22,973</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtNS0xLTEtMjg4MDU_9bafd538-e874-45f5-98b2-9454d5356a36">25,266</ix:nonFraction>&#160;</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 19pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Deferred revenue and customer 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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncreaseDecreaseInContractWithCustomerLiability" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtMS0xLTEtMjg4MDU_74115d4a-578e-4352-ac3e-a75fbd64c03f">14,417</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInContractWithCustomerLiability" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtMy0xLTEtMjg4MDU_2eb00f5a-351f-4c82-a8b3-f0be54cd3137">6,571</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:IncreaseDecreaseInContractWithCustomerLiability" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtNS0xLTEtMjg4MDU_3f8caf77-62cd-4826-9759-bb8ece72af96">3,875</ix:nonFraction>&#160;</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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctMS0xLTEtMjg4MDU_e1587b2f-4d0e-46e4-b6ed-757494953ad3">3,411</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctMy0xLTEtMjg4MDU_987dc2b8-d31a-492f-8188-f09b6c9d339a">4,548</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctNS0xLTEtMjg4MDU_db62be8e-6ebe-44c4-861a-80159f88eb36">4,255</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash provided by operating activities</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtMS0xLTEtMjg4MDU_d478d2a4-2b44-4e8b-952d-58de26ceadf1">314,065</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtMy0xLTEtMjg4MDU_6c7223e9-87b7-4727-86a2-6ae2febc16e4">242,400</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtNS0xLTEtMjg4MDU_c1015e07-1d36-4b66-a187-c21c06aba287">253,311</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash flows from investing activities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Purchases of investments</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsToAcquireInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtMS0xLTEtMjg4MDU_05f03046-f493-4981-953a-553bc6d43735">668,053</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsToAcquireInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtMy0xLTEtMjg4MDU_4839da4f-e9f6-43ff-a20f-558923da9011">922,867</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:PaymentsToAcquireInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtNS0xLTEtMjg4MDU_6715be55-79c7-4b44-a0e5-56c33de215b1">1,031,642</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Maturities and sales of investments</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtMS0xLTEtMjg4MDU_7dec853c-4ea4-4c46-a6eb-46f844059e20">430,969</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtMy0xLTEtMjg4MDU_a6858fd6-712c-4786-bd21-17b586e27eb9">1,104,605</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtNS0xLTEtMjg4MDU_16e072bc-a863-430f-bd84-823f4073ae28">1,062,962</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Purchases of property, plant, and equipment</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItMS0xLTEtMjg4MDU_9c7f6658-6011-4975-aa81-24d90d7e2d96">15,455</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItMy0xLTEtMjg4MDU_73ac78de-22f3-40a6-a16f-fe0231f29670">13,303</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItNS0xLTEtMjg4MDU_22e1311c-675b-490b-8602-59d62a2d93d1">21,745</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Business acquisitions</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtMS0xLTEtMjg4MDU_725693a7-50dd-44d7-87e2-a7fd2d614d15">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtMy0xLTEtMjg4MDU_14750bad-3ff3-4fab-8b74-aa0b584fc366">1,004</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtNS0xLTEtMjg4MDU_9c876633-f02b-4ea9-a176-daa5cb1a7593">166,911</ix:nonFraction>)</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="display:none"></td><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash provided by (used in) investing activities</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtMS0xLTEtMjg4MDU_0aace99b-548d-4b22-a1e1-b0b0452de179">252,539</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtMy0xLTEtMjg4MDU_5b2766ee-a5dc-472a-83ff-88520f8ff306">169,439</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtNS0xLTEtMjg4MDU_182431b5-0617-4277-a59f-9872153c4b56">157,336</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash flows from financing activities:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net proceeds from issuance of common stock under stock plans</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtMS0xLTEtMjg4MDU_d993735c-f54b-4dba-b9bc-a2579d0720d5">63,292</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtMy0xLTEtMjg4MDU_f5c5d46c-4324-4a08-9db0-741fba1b955a">125,715</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtNS0xLTEtMjg4MDU_88f8f469-145b-4a3c-b9a0-690449565d19">64,581</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Repurchase of common stock</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsForRepurchaseOfCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktMS0xLTEtMjg4MDU_082ff035-13cb-4a4c-91c3-03368ea2c275">161,652</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsForRepurchaseOfCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktMy0xLTEtMjg4MDU_0fb56da8-da31-43e7-a003-145f364917e4">51,036</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:PaymentsForRepurchaseOfCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktNS0xLTEtMjg4MDU_0630a6b0-ff03-4c45-b332-4583528ece05">61,690</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Payment of dividends</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsOfDividendsCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtMS0xLTEtMjg4MDU_4f90fc6f-1b14-4a40-ae58-4eecc8d57919">43,263</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsOfDividendsCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtMy0xLTEtMjg4MDU_b8569df4-0f0d-49cb-b0e9-41d40e22700f">390,508</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:PaymentsOfDividendsCommonStock" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtNS0xLTEtMjg4MDU_5feba9ef-7f6b-436c-bfd9-83868750de5e">35,124</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Payment of contingent consideration</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtMS0xLTEtMjg4MDU_aed0b02a-ed76-481c-b956-8003b77dd09c">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtMy0xLTEtMjg4MDU_79f32653-e61f-42fb-910b-49d28c27f0df">1,039</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtNS0xLTEtMjg4MDU_df98e00e-466a-45ad-ad2b-cf770744bf31">&#8212;</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net cash used in financing activities</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItMS0xLTEtMjg4MDU_0d16b82e-81c7-4348-a680-062bb1b3c40d">141,623</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItMy0xLTEtMjg4MDU_d4189ae0-823b-4194-a438-f5d576d9317b">316,868</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItNS0xLTEtMjg4MDU_1ef8d3fd-9279-4b45-a6eb-1e8e7a50c06e">32,233</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Effect of foreign exchange rate changes on cash and cash equivalents</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtMS0xLTEtMjg4MDU_3bd7091e-2064-4dfe-af15-50abdafa538b">2,815</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtMy0xLTEtMjg4MDU_3f25e3e8-c5e9-433b-9ef1-d0811e3c0b0e">2,671</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtNS0xLTEtMjg4MDU_4cc698d2-8def-4a57-a844-9aa94db156c7">523</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net change in cash and cash equivalents</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtMS0xLTEtMjg4MDU_5137d822-5a85-4777-911a-c34c6701778d">82,912</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtMy0xLTEtMjg4MDU_c00900fa-3501-44d7-b3c9-9222119af77e">97,642</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtNS0xLTEtMjg4MDU_a76c7436-e363-40a1-b253-b904b15c1c4b">63,219</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents at beginning of year</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtMS0xLTEtMjg4MDU_322b7432-bac7-4c41-8058-cf56632eeed6">269,073</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtMy0xLTEtMjg4MDU_9d347229-7dc5-4529-84ff-345902b1692d">171,431</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i96c261e6b700458483d45a690ef3428a_I20181231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtNS0xLTEtMjg4MDU_6d38e787-247e-4ffd-8d03-4536b47623e4">108,212</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash and cash equivalents at end of year</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtMS0xLTEtMjg4MDU_dbed9f0f-073b-4277-82bb-f63dc4e8f130">186,161</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtMy0xLTEtMjg4MDU_0884c928-b4af-4fdf-a792-092adde0fd81">269,073</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtNS0xLTEtMjg4MDU_e7c6e100-f886-42ad-861f-4d5b9a09a161">171,431</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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><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><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying notes are an integral part of these consolidated financial statements.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">36</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_88"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Content</a></span></div></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION &#8211; CONSOLIDATED STATEMENTS OF SHAREHOLDERS&#8217; EQUITY</span></div><div style="text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</span></div><div style="margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:98.593%"><tr><td style="width:1.0%"></td><td style="width:48.186%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.348%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:4.278%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.348%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:5.925%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.348%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.254%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.348%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.035%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.348%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.767%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.348%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.567%"></td><td style="width:0.1%"></td></tr><tr style="height:27pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Common Stock</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Additional<br/>Paid-in<br/>Capital</span></td><td colspan="3" rowspan="2" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Retained<br/>Earnings</span></td><td colspan="3" rowspan="2" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Accumulated<br/>Other<br/>Comprehensive<br/>Loss</span></td><td colspan="3" rowspan="2" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Total<br/>Shareholders&#8217;<br/>Equity</span></td></tr><tr style="height:12pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(In thousands)</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Shares</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Par&#160;Value</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2018</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:footnote id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21" footnoteRole="http://www.xbrl.org/2003/role/footnote"><ix:nonFraction unitRef="shares" contextRef="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231" decimals="-3" name="us-gaap:CommonStockSharesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_12932d92-d9ec-4b87-a89c-5f76a3af4f0c">170,820</ix:nonFraction>&#160;</ix:footnote></span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231" decimals="-3" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi00LTEtMS0yODgwNQ_aad289d9-e773-4ea0-9fdb-4321242cbdba">342</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id5144431cfa8410c8f5604b0516d97a6_I20181231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi02LTEtMS0yODgwNQ_42ce01a3-c7e9-49a5-8ff2-f5e3c2df6953">529,208</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4c4fc943007b4423b33adbf4b3ff8a57_I20181231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi04LTEtMS0yODgwNQ_f32d7e3c-37ac-4633-9879-5be886ea6bac">646,214</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i7df50ac0cf1c4b6eb205200699db5753_I20181231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0xMC0xLTEtMjg4MDU_35a63399-051e-4372-9461-b918d5a5cd52">40,501</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i96c261e6b700458483d45a690ef3428a_I20181231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0xMi0xLTEtMjg4MDU_5a369307-0385-4a94-bfa1-aac87b69a684">1,135,263</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net issuance of common stock under stock plans</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy0yLTEtMS0yODgwNQ_7f580aa7-1e04-405f-9700-56349371df88">3,018</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy00LTEtMS0yODgwNQ_7d7fa7d2-04e1-453a-ab63-20143cc9825d">6</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy02LTEtMS0yODgwNQ_5ed808bc-dd1f-4d59-acb3-40a8201d6feb">64,575</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy0xMi0xLTEtMjg4MDU_cbc0f17e-8210-435b-93f0-5b07452dee77">64,581</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Repurchase of common stock</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodShares" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC0yLTEtMS0yODgwNQ_778b6f81-c636-424c-861e-4d8ffba6f552">1,398</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC00LTEtMS0yODgwNQ_a09d720c-5063-42fa-9d1f-fd056078d42b">3</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC04LTEtMS0yODgwNQ_af40cbf0-82c2-471b-a107-bd1afd1cab6f">61,687</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC0xMi0xLTEtMjg4MDU_5f7fd42c-941d-4b84-8a4f-b66209170e9c">61,690</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation expense</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNS02LTEtMS0yODgwNQ_1e926bcd-ad7e-424f-9e17-01fcad06a482">45,589</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNS0xMi0xLTEtMjg4MDU_ad1c96ec-05ca-4abb-9f76-45238c1d2fe9">45,589</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Payment of dividends ($0.205 per common share)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231" decimals="-3" name="us-gaap:DividendsCommonStockCash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNi04LTEtMS0yODgwNQ_2a91ce4e-6a2e-44e1-9e5e-95ffca274a84">35,124</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:DividendsCommonStockCash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNi0xMi0xLTEtMjg4MDU_b3c20c7d-bc57-435d-8ec4-4545d204a165">35,124</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfOC04LTEtMS0yODgwNQ_54ccb805-e529-4ea8-937d-c540d94e3dc0">203,865</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfOC0xMi0xLTEtMjg4MDU_e906bb71-cd36-430d-a0fa-487de71f5ab9">203,865</ix:nonFraction>&#160;</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="display:none"></td><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><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><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><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><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net unrealized gain (loss) on available-for-sale investments, net of tax of $515</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTEtMTAtMS0xLTI4ODA1_f8c2a891-d7f6-4b44-8b0d-3df5aa239950">5,219</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTEtMTItMS0xLTI4ODA1_9d5f8440-39cf-43ff-ab4b-a24adb88dfab">5,219</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Reclassification of net realized (gain) loss on the sale of available-for-sale investments</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTItMTAtMS0xLTI4ODA1_2b0ba709-d850-4f42-9368-8491ec853344">1,452</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTItMTItMS0xLTI4ODA1_2bc6cf86-99c4-4bc1-9e1c-7fec24290f4d">1,452</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign currency translation adjustment, net of tax of $0</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTMtMTAtMS0xLTI4ODA1_3dc8b69e-e690-4848-96e4-2d1f39770f79">541</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTMtMTItMS0xLTI4ODA1_56e03d7a-bf39-440b-bdea-7cbd27d26bbb">541</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i453cd53948004e0aa6fa938860922977_I20191231" decimals="-3" name="us-gaap:CommonStockSharesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMi0xLTEtMjg4MDU_6bb9d6a6-2c32-4b63-9c00-82f39d7eb917">172,440</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i453cd53948004e0aa6fa938860922977_I20191231" decimals="-3" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtNC0xLTEtMjg4MDU_e8ec5b51-945f-4a2e-ab49-44605d4f1ed5">345</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i030b7b3d0bcc48ecaee75f945d4b0453_I20191231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtNi0xLTEtMjg4MDU_82e031da-accf-4b51-96cd-f01c5809a434">639,372</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7081618970d14cb2b47071acddcb076f_I20191231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtOC0xLTEtMjg4MDU_f811e34b-569a-4554-9208-69c2e2d3f56c">753,268</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="iad4f0d348bb84191a2d66c6f05e66a42_I20191231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMTAtMS0xLTI4ODA1_1289ec3e-38e6-4081-a418-33a7f0003c2f">37,275</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMTItMS0xLTI4ODA1_85500f67-8a6c-4551-b25b-dc0d32787aae">1,355,710</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net issuance of common stock under stock plans</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtMi0xLTEtMjg4MDU_a3ed5db1-3681-4069-817d-acb47f626606">4,565</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtNC0xLTEtMjg4MDU_38950b7e-6eda-4d17-9c5a-edb84bfc5915">9</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtNi0xLTEtMjg4MDU_c4a1b7e5-3e56-4e3a-b881-8463f75401fe">125,706</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtMTItMS0xLTI4ODA1_af3dba44-8532-4757-9d47-18220f7e5121">125,715</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Repurchase of common stock</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodShares" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtMi0xLTEtMjg4MDU_23e0e242-fd56-4415-b54e-73003fadba48">1,215</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtNC0xLTEtMjg4MDU_ae202d14-e7ba-4256-b93a-2f3bcbcd646a">2</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtOC0xLTEtMjg4MDU_3b411d3d-b6bf-4b05-8e84-f749bb9105bb">51,034</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtMTItMS0xLTI4ODA1_fa04ee42-a367-4c84-b60c-d452957a4756">51,036</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation expense</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTctNi0xLTEtMjg4MDU_b82f5302-9804-465f-baff-ad85cb8fad70">42,661</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTctMTItMS0xLTI4ODA1_3a006046-7d63-4a33-af77-8953afa58eb6">42,661</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Payment of dividends ($2.225 per common share)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231" decimals="-3" name="us-gaap:DividendsCommonStockCash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTgtOC0xLTEtMjg4MDU_68c1fe5b-f850-444b-8d1b-e7372b151c44">390,508</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:DividendsCommonStockCash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTgtMTItMS0xLTI4ODA1_e93da2d1-1acb-4c11-850e-f1f72e86f41b">390,508</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTktOC0xLTEtMjg4MDU_bbf50c3a-ff81-492d-9716-ea2ab2ba986f">176,186</ix:nonFraction>&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTktMTItMS0xLTI4ODA1_07b91acd-8121-4ffd-a81f-867b3033ba4f">176,186</ix:nonFraction>&#160;</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="display:none"></td><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><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><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><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><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net unrealized gain (loss) on available-for-sale investments, net of tax of $981</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjItMTAtMS0xLTI4ODA1_f8f53b28-6bc3-49a9-a068-bf7bb9d8cfc8">6,478</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjItMTItMS0xLTI4ODA1_a3a8bc7e-a749-4154-a57c-782c1eba034b">6,478</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Reclassification of net realized (gain) loss on the sale of available-for-sale investments</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjMtMTAtMS0xLTI4ODA1_104487a4-6bd2-4786-9954-3ab21a801042">4,119</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjMtMTItMS0xLTI4ODA1_7b82ecf7-3765-4eb7-baca-6a615e24391a">4,119</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign currency translation adjustment, net of tax of $0</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjQtMTAtMS0xLTI4ODA1_4f6b0361-259f-43c9-a77b-a037c0d65c4d">1,115</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjQtMTItMS0xLTI4ODA1_9f0897d3-8c1e-41bb-8158-bb016f2bd6ee">1,115</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i9c19e11e3b0440699b8af52e65c3c7df_I20201231" decimals="-3" name="us-gaap:CommonStockSharesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMi0xLTEtMjg4MDU_65d68bab-e85d-4c35-ad87-2280ebd9a81c">175,790</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9c19e11e3b0440699b8af52e65c3c7df_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtNC0xLTEtMjg4MDU_e234384f-1ae1-45be-96fe-6bc95750d2e1">352</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i82c8153d3c304531b0e739269e49f99c_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtNi0xLTEtMjg4MDU_a7a0357e-4f8a-4af2-bfa3-861616c6b849">807,739</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5da6d6afe29042359bdc6f1b874d4cb9_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtOC0xLTEtMjg4MDU_980f5786-69fa-4a86-bff2-6353c2bf9966">487,912</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie93e1f918c464567bea84b17ce78960c_I20201231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMTAtMS0xLTI4ODA1_c8a8be7c-c3ea-4d3b-927a-81907806da93">33,801</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMTItMS0xLTI4ODA1_53b856ac-f584-4d9e-a82e-ae3b083dd09b">1,262,202</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net issuance of common stock under stock plans</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtMi0xLTEtMjg4MDU_980db0b7-1174-4b8c-8b6d-fefef50e103e">1,703</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtNC0xLTEtMjg4MDU_e862e62b-fc5b-4a1f-8a11-f5a80568a846">3</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtNi0xLTEtMjg4MDU_535cad92-70e3-48ef-a167-5a0a851bf97f">63,289</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtMTItMS0xLTI4ODA1_688c471d-b0b2-4418-af73-544c7c8d2ed3">63,292</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Repurchase of common stock</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodShares" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctMi0xLTEtMjg4MDU_6e532fcd-e339-42d8-a92b-9cc114580887">2,012</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctNC0xLTEtMjg4MDU_a8d4e631-f82a-4207-890a-a5bde56d8074">4</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctOC0xLTEtMjg4MDU_d8645358-eeee-4225-9edc-b4936a32a2e6">161,648</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctMTItMS0xLTI4ODA1_e7c1c321-ba5e-40c1-b0cf-f660d2a98497">161,652</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Stock-based compensation expense</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjgtNi0xLTEtMjg4MDU_cf6a4121-c4a7-4a4b-b12f-c1d719624d8c">43,774</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjgtMTItMS0xLTI4ODA1_155e1de6-0844-43f5-ac1e-30f01ff895f7">43,774</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Payment of dividends ($0.245 per common share)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231" decimals="-3" name="us-gaap:DividendsCommonStockCash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktOC0xLTEtMjg4MDU_eea0464b-8eed-482d-857b-cfafea44207c">43,263</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:DividendsCommonStockCash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktMTItMS0xLTI4ODA1_c857b2c1-3985-49b8-9d44-e400438d30ea">43,263</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net income</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktOC0xLTEtMjkxOTA_8b7ef0bb-2bcb-4e02-8d5c-e270d2a90284">279,881</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzAtMTItMS0xLTI4ODA1_61a1aefc-04d5-49cb-9631-78f5a270b48a">279,881</ix:nonFraction>&#160;</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="display:none"></td><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><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><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><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><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Net unrealized gain (loss) on available-for-sale investments, net of tax of $(2,206)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTAtMS0xLTI4ODA1_1dd1fd40-edab-4d0d-8e68-0b91a5164637"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTAtMS0xLTI4ODA1_b742f886-5ad2-49bb-acfc-377ae728e3a1">7,152</ix:nonFraction></ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTItMS0xLTI4ODA1_b33a68d4-bc42-4f00-96ad-5572a1b08dc7">7,152</ix:nonFraction>)</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="display:none"></td><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><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><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="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Reclassification of net realized (gain) loss on the sale of available-for-sale investments</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTAtMS0xLTI4ODA1_8beac94e-d0d6-4dca-a1e2-cbfa7ffda116"><ix:nonFraction unitRef="usd" contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTAtMS0xLTI4ODA1_a73b989f-4a6f-4c86-86eb-cd252dddedf3">236</ix:nonFraction></ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTItMS0xLTI4ODA1_2325f024-d4a6-4875-b5c0-5927528a0c57">236</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Foreign currency translation adjustment, net of tax of $0</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#8212;&#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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTAtMS0xLTI4ODA1_343cbe48-d062-46c5-bac8-ae2ccdd12aeb"><ix:nonFraction unitRef="usd" contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTAtMS0xLTI4ODA1_355fb131-335d-4929-a67b-e9aae1838af7">6,753</ix:nonFraction></ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTItMS0xLTI4ODA1_86799173-7342-48e9-a21f-823c21b1fec8">6,753</ix:nonFraction>)</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Balance as of December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ia417c41204b44fc68c2a79deecb306f3_I20211231" decimals="-3" name="us-gaap:CommonStockSharesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMi0xLTEtMjg4MDU_f2b3004e-6207-4b67-8026-e5c0690a28d8">175,481</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia417c41204b44fc68c2a79deecb306f3_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctNC0xLTEtMjg4MDU_50ec5a79-60c3-4f75-b490-0604deba09d3">351</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i279b29b9bc484ec9be070b54e58d3f78_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctNi0xLTEtMjg4MDU_e89c45b2-7984-4bc3-b53b-4f94f705c874">914,802</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id7e84bf16cc948edbbb96f1890b28baa_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctOC0xLTEtMjg4MDU_23905f3c-69fb-4cd3-aad2-e48be69e6018">562,882</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i09333c39ce8e4914b814b0cf653db4b2_I20211231" decimals="-3" sign="-" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMTAtMS0xLTI4ODA1_db0a9c88-eeb3-4a48-8df3-3977a6ae5c8e">47,942</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:StockholdersEquity" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMTItMS0xLTI4ODA1_90d15771-7b73-405f-851c-085481087c38">1,430,093</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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><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><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="display:none"></td></tr></table></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span><br/></span></div><div style="text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying notes are an integral part of these consolidated financial statements.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">37</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_94"></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><div><span><br/></span></div><div id="i929e97f6a142453c8a8057dbb6451118_97"></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 1:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:SignificantAccountingPoliciesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzg_326acf66-3c25-413d-8b88-733f9371eaaf" continuedAt="idc77469c07134b248524c08bd3417728" escape="true">Summary of Significant Accounting Policies</ix:nonNumeric></span></div><ix:continuation id="idc77469c07134b248524c08bd3417728" continuedAt="i49fcbeeb904546639473b6f1839cdc22"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying consolidated financial statements reflect the application of the significant accounting policies described below.</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="cgnx:NatureOfOperationsPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDg_40a95e71-8fc5-4f86-948a-23ff4b6514b2" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Nature of Operations</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex Corporation is a leading provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:UseOfEstimates" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMzk_92b02fa3-65e3-45e7-91e5-1416c5d6ab90" escape="true"><div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Use of Estimates in the Preparation of Financial Statements</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S.&#160;GAAP) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and the disclosure of contingent liabilities as of the balance sheet date, and the reported amounts of revenues and expenses during the year. Actual results could differ from those estimates. Significant estimates and judgments include those related to revenue recognition, investments, inventories, intangible assets, stock-based compensation, income taxes, business acquisitions, and restructuring charges.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ConsolidationPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDA_b80e797b-904f-4951-9ec4-c8637f925944" escape="true"><div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Basis of Consolidation</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The consolidated financial statements include the accounts of Cognex Corporation and its subsidiaries, all of which are wholly-owned. All intercompany accounts and transactions have been eliminated.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNzE_7a7986c5-7d39-4a06-8579-668aaffa6260" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Foreign Currency Translation</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The financial statements of the Company&#8217;s foreign subsidiaries, where the local currency is the functional currency, are translated using exchange rates in effect at the end of the year for assets and liabilities and average exchange rates during the year for results of operations. The resulting foreign currency translation adjustment, net of tax, is included in shareholders&#8217; equity as accumulated other comprehensive loss.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:FairValueOfFinancialInstrumentsPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMjg_735557e8-5540-494f-881b-cb9b5f24fded" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Fair Value Measurements</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company applies a three-level valuation hierarchy for fair value measurements. The categorization of assets and liabilities within the valuation hierarchy is based on the lowest level of input that is significant to the measurement of fair value. Level&#160;1 inputs to the valuation methodology utilize unadjusted quoted market prices in active markets for identical assets and liabilities. Level 2 inputs to the valuation methodology are other observable inputs, including quoted market prices for similar assets and liabilities, quoted prices for identical and similar assets and liabilities in markets that are not active, or other inputs that are observable or can be corroborated by observable market data. Level 3 inputs to the valuation methodology are unobservable inputs based on management&#8217;s best estimate of the inputs that market participants would use in pricing the asset or liability at the measurement date, including assumptions about risk. A change to the level of an asset or liability within the fair value hierarchy is determined at the end of a reporting period.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:InvestmentPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDg_511d7744-cfcd-41c7-9dda-5c383f7fe749" continuedAt="iee7fd0ef261144c2bf930542ed2492e1" escape="true"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:CashAndCashEquivalentsPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDg_ff03e124-fe84-4397-963f-d2419f8c685a" continuedAt="ia2e57bae614d4ab8ac179086de91cfa1" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Cash, Cash Equivalents, and Investments</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#8217;s policy to invest in investment-grade debt securities with effective maturities that do not exceed <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzU1Ng_f57ac132-56c4-4ce0-9d84-4cbb0128d3f8">ten years</ix:nonNumeric>.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#8217; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#8220;Other income (expense)&#8221; on the Consolidated Statements of </span></div></ix:nonNumeric></ix:nonNumeric></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">38</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i49fcbeeb904546639473b6f1839cdc22" continuedAt="i295303faf6e844dfb50169c4def0717b"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="iee7fd0ef261144c2bf930542ed2492e1"><ix:continuation id="ia2e57bae614d4ab8ac179086de91cfa1">Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.</ix:continuation></ix:continuation></span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:TradeAndOtherAccountsReceivablePolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDk_36eaeb9f-5c42-4e50-8aca-6874964bed10" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounts Receivable</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company extends credit with various payment terms to customers based on an evaluation of their financial condition. Accounts that are outstanding longer than the payment terms are considered to be past due. The Company establishes an allowance against accounts receivable for credit losses when it determines receivables are at risk for collection based on the length of time the receivable has been outstanding, the customer&#8217;s current ability to pay its obligations to the Company, and general economic and industry conditions, as well as various other factors. Receivables are written off against this allowance in the period they are determined to be uncollectible and payments subsequently received on previously written-off receivables are recorded as a recovery of the credit loss. Credit losses and recoveries related to accounts receivable are included in "Selling, general, and administrative expenses" on the Consolidated Statements of Operations.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:InventoryPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMTA_3cd453d6-59b9-436b-a1ee-60f05114c067" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Inventories</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventories are stated at the lower of cost and net realizable value. Cost is determined using standard costs, which approximates actual costs under the first-in, first-out (FIFO) method. Net realizable value is the estimated selling price in the ordinary course of business, less reasonably predictable costs of completion, disposal, and transportation.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Purchase price variances are incurred when actual costs are different than standard costs due to favorable or unfavorable market prices. Management applies judgment to recognize purchase price variances in the same period that the associated standard costs of the finished goods that consume these components are sold.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s inventory is subject to technological change or obsolescence. The Company reviews inventory quantities on hand and estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and general economic and industry conditions, and records reserves to reduce the carrying value of inventories to their net realizable value. If actual future demand is less than estimated, additional inventory write-downs would be required.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company generally disposes of obsolete inventory upon determination of obsolescence. The Company does not dispose of excess inventory immediately, due to the possibility that some of this inventory could be sold to customers as a result of differences between actual and forecasted demand. When inventory has been written down below cost, such reduced amount is considered the new cost basis for subsequent accounting purposes. As a result, the Company could recognize a higher than normal gross margin if the reserved inventory were subsequently sold.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDg_58199548-55d7-4c46-92cc-8f17073a8956" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Property, Plant, and Equipment</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property, plant, and equipment are stated at cost and depreciated using the straight-line method over the assets&#8217; estimated useful lives. Buildings&#8217; useful lives are <ix:nonNumeric contextRef="i042f17eb78834accb0d70fa7b6537a83_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzY0OQ_25b38ae6-4efa-4875-95b3-7d0018ce1abf">39</ix:nonNumeric> years, building improvements&#8217; useful lives are <ix:nonNumeric contextRef="id801c8716b924358a2daa2c6f91c5f88_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzY5Mw_292a1262-c849-4e16-bfd1-497c5f0d18b1">ten years</ix:nonNumeric>, and the useful lives of computer hardware and software, manufacturing test equipment, and furniture and fixtures range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad">two</span> to <ix:nonNumeric contextRef="i12cf82d7d05c43c78d4287e35cb1a678_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyNw_4e603ea9-03b7-4528-a63d-b919f3d83b7d">ten years</ix:nonNumeric>. Leasehold improvements are depreciated over the shorter of the estimated useful lives or the remaining terms of the leases. Maintenance and repairs are expensed when incurred; additions and improvements are capitalized. Upon retirement or disposition, the cost and related accumulated depreciation of the disposed assets are removed from the accounts, with any resulting gain or loss included in current operations.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:InternalUseSoftwarePolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDk_7b3189b7-7bb6-41cf-b0d3-d9dd47614d59" continuedAt="i6e87efcc1a6546e2ad82907c3692cfec" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Internal-use Software</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Internal-use software is software acquired, internally developed, or modified solely to meet the Company's internal needs, and during the software's development, no substantive plan exists to sell the software. The accounting treatment for computer software developed for internal use depends on the nature of activities performed at each stage of development. The preliminary project stage includes conceptual formulation of design alternatives, determination of system requirements, vendor demonstrations, and final selection of vendors, and during this stage costs are expensed as incurred. The application development stage includes software configuration, coding, hardware installation, and testing. During this stage, certain costs are capitalized, including external direct costs of materials and services, as well as payroll and payroll-related costs for employees who are directly associated with the project, while certain costs are expensed as incurred, including training and data conversion costs. The post-implementation stage includes support and maintenance, and during this stage costs are expensed as incurred.</span></div></ix:nonNumeric></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">39</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i295303faf6e844dfb50169c4def0717b" continuedAt="i9dd85f7333e5499faeafa78fde217894"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i6e87efcc1a6546e2ad82907c3692cfec">Capitalization begins when both the preliminary project stage is completed and management commits to funding the project. Capitalization ceases at the point the project is substantially complete and ready for its intended use, that is, after all substantial testing is completed. Costs of specified upgrades and enhancements to internal-use software are capitalized if it is probable that those expenditures result in additional functionality. Capitalized costs are amortized on a straight-line basis over the estimated useful life.</ix:continuation></span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:LesseeLeasesPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExOTY_5b85a01f-8014-4acd-8a40-afe048a4fd43" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Leases</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At inception of a contract, the Company determines whether that contract is or contains a lease by assessing whether there is an identified asset and whether the contract conveys the right to control the use of the identified asset for a period of time in exchange for consideration. The Company has control of the asset if it has the right to direct the use of the asset and obtains substantially all of the economic benefits from the use of the asset throughout the period of use.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a practical expedient, the Company does not recognize a lease asset or lease liability for leases with a lease term of 12 months or less. In the determination of the lease term, the Company considers the existence of extension or termination options and the probability of those options being exercised.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Lease contracts may include lease components and non-lease components, such as common area maintenance and utilities for property leases. As a practical expedient, the Company accounts for the non-lease components together with the lease components as a single lease component for all of its leases.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company classifies a lease as a finance lease when it meets any of the following criteria at the lease commencement date: (1) the lease transfers ownership of the underlying asset to the Company by the end of the lease term; (2) the lease grants the Company an option to purchase the underlying asset that the Company is reasonably certain to exercise; (3) the lease term is for the major part of the remaining economic life of the underlying asset (the Company considers a major part to be 75% or more of the remaining economic life of the underlying asset); (4) the present value of the sum of the lease payments and any residual value guaranteed by the Company equals or exceeds substantially all of the fair value of the underlying asset (the Company considers substantially all the fair value to be 90% or more of the fair value of the underlying asset amount); or (5) the underlying asset is of such a specialized nature that it is expected to have no alternative use to the lessor at the end of the lease term. When none of the criteria above are met, the Company classifies the lease as an operating lease.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On the lease commencement date, the Company records a lease asset and lease liability on the balance sheet. The lease asset consists of: (1) the amount of the initial lease liability; (2) any lease payments made to the lessor at or before the lease commencement date, minus any lease incentives received; and (3) any initial direct cost incurred by the Company. Initial direct costs are incremental costs of a lease that would not have been incurred if the lease had not been obtained and are capitalized as part of the lease asset. The lease liability equals the present value of the future cash payments discounted using the Company's incremental borrowing rate. The Company&#8217;s incremental borrowing rate is the rate of interest that the Company would have to pay to borrow an amount equal to the lease payments over a similar term, which is the three-month London Interbank Offered Rate (LIBOR) plus a 2% credit risk spread.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Operating lease expense equals the total cash payments recognized on a straight-line basis over the lease term. The amortization of the lease asset is calculated as the straight-line lease expense less the accretion of the interest on the lease liability each period. The lease liability is reduced by the cash payment less the interest each period.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMjE_007cb5ed-8e52-4123-a2d2-29ae3e6b0b5e" continuedAt="i196d665132e642aea59a24cabed75554" escape="true"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Goodwill</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Goodwill is stated at cost. The Company evaluates the potential impairment of goodwill annually each fourth quarter and whenever events or circumstances indicate the carrying value of the goodwill may not be recoverable. The Company performs a qualitative assessment of goodwill to determine whether further impairment testing is necessary. Factors that management considers in this assessment include general economic and industry conditions, overall financial performance (both current and projected), changes in strategy, changes in the composition or carrying amount of net assets, and market capitalization. If this qualitative assessment indicates that it is more likely than not that the fair value of a reporting unit is less than its carrying value, the Company would proceed to perform a quantitative impairment test. Under this quantitative analysis, the fair value of the reporting unit is compared with its carrying value, including goodwill. If the carrying value exceeds the fair value of the reporting unit, the Company recognizes an impairment charge. The Company estimates the fair value of its reporting unit using the income approach based on a discounted cash flow model. In addition, the Company uses the market approach, which compares the reporting unit to publicly-traded companies and transactions involving </span></div></ix:nonNumeric></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">40</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i9dd85f7333e5499faeafa78fde217894" continuedAt="ib898c3ae805d40439dca3ed859f42c40"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i196d665132e642aea59a24cabed75554">similar businesses, to support the conclusions based on the income approach.</ix:continuation> </span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:IntangibleAssetsFiniteLivedPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzQ_73b8b71b-a7cb-4b80-84fe-acea0d134fb9" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Intangible Assets</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets are stated at cost and amortized over the assets&#8217; estimated useful lives. Intangible assets are either amortized in relation to the relative cash flows anticipated from the intangible asset or using the straight-line method, depending on facts and circumstances. The useful lives of distribution networks range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e">eleven</span> to <ix:nonNumeric contextRef="i826aff0c969544a5a804571eeeecac12_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMDA_cf5fa3a6-7d37-4b6c-93dc-315b3c59acd8">twelve years</ix:nonNumeric>, completed technologies from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c">five</span> to <ix:nonNumeric contextRef="i7caad8bad2f949faa4c2da1d3c09973c_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNDE_eb6748f6-53fc-40e8-ba75-2751376bac1e">eight years</ix:nonNumeric>, customer relationships from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467">five</span> to <ix:nonNumeric contextRef="ic244bf99eff947c5a9ba44ab7a5b9152_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzODI_b9d4ce04-6629-4f8b-a2a6-c6e001b6e4ea">eight years</ix:nonNumeric>, non-compete agreements from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3">three</span> to <ix:nonNumeric contextRef="i8f47b56746584e8cb790dd66dabcb5bd_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MjM_f60735f5-27a8-4df5-9662-906a00028bdb">seven years</ix:nonNumeric>, and trademarks <ix:nonNumeric contextRef="i498bff2ae83341f19a665c2ba6f5f152_D20210101-20211231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0NDI_4ed52dfa-3101-42c9-b3d0-520425239e98">two years</ix:nonNumeric>. In-process technology is an indefinite-lived intangible asset until the technology is completed, at which point it is amortized over its estimated useful life. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company evaluates the potential impairment of intangible assets whenever events or circumstances indicate the carrying value of the assets may not be recoverable. For finite-lived intangible assets that are subject to amortization, the Company follows a two-step process for impairment testing. In step one, known as the recoverability test, the carrying value of the asset is compared to the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset. If the sum of the undiscounted future cash flows is less than the carrying value, the asset is not recoverable and step two is performed. In step two, the impairment charge is measured as the amount by which the carrying value of the asset exceeds its fair value. For indefinite-lived intangible assets that are not subject to amortization, the fair value of the asset is measured and an impairment charge is recorded as the amount by which the carrying value of the asset exceeds its fair value.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:StandardProductWarrantyPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTE_b2526291-1d10-4fe9-bc79-15c4c6b8ead5" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Warranty Obligations</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company warrants its products to be free from defects in material and workmanship for periods primarily ranging from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79">one</span> to <ix:nonNumeric contextRef="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231" name="cgnx:ProductWarrantyPeriod" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NTU_ac11a9af-6bd0-4440-842b-72f958b0992a">three years</ix:nonNumeric> from the time of sale based on the product being purchased and the terms of the customer arrangement. Warranty obligations are evaluated and recorded at the time of sale since it is probable that customers will make claims under warranties related to products that have been sold and the amount of these claims can be reasonably estimated based on historical costs to fulfill claims. Obligations may also be recorded subsequent to the time of sale whenever specific events or circumstances impacting product quality become known that would not have been taken into account using historical data.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:CommitmentsAndContingenciesPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTI_b0cdc071-9f3a-4e56-a5c1-a0ae52bf3876" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Contingencies</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Loss contingencies are accrued if the loss is probable and the amount of the loss can be reasonably estimated. Legal costs associated with potential loss contingencies are expensed as incurred.</span></div></ix:nonNumeric><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:DerivativesPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExODQ_7e2aef9a-2d70-457e-afd3-fef228649085" continuedAt="i044c6ecef218480e955291323e82b8aa" escape="true">Derivative Instruments</ix:nonNumeric></span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i044c6ecef218480e955291323e82b8aa">Derivative instruments are recorded on the Consolidated Balance Sheets at fair value. Changes in the fair value of the Company&#8217;s economic hedges utilizing foreign currency forward contracts are included in "Foreign currency gain (loss)" on the Consolidated Statements of Operations. The Company recognizes all derivative instruments as either current assets or current liabilities at fair value on the Consolidated Balance Sheets. When the Company is engaged in more than one outstanding derivative contract with the same counterparty and also has a legally enforceable master netting agreement with that counterparty, the &#8220;net&#8221; mark-to-market exposure represents the netting of the positive and negative exposures with that counterparty. The cash flows from derivative instruments are presented in the same category on the Consolidated Statements of Cash Flows as the category for the cash flows from the hedged item. Generally, this accounting policy election results in cash flows related to derivative instruments being classified as an operating activity on the Consolidated Statements of Cash Flows.</ix:continuation> </span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:RevenueRecognitionPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMjY_02e9b072-022a-4fc1-b919-a0b77545bd94" continuedAt="i7312b015720844b3a8feb8c1c8c6c390" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Revenue Recognition</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes revenue in accordance with Accounting Standards Codification (ASC) 606, &#8220;Revenue from Contracts with Customers.&#8221; The core principle of ASC 606 is to recognize revenue in a manner that depicts the transfer of promised goods or services to customers in an amount that reflects the consideration to which the Company expects to be entitled in exchange for those goods or services. The framework in support of this core principle includes: (1) identifying the contract with the customer; (2) identifying the performance obligations in the contract; (3) determining the transaction price; (4) allocating the transaction price to the performance obligations; and (5) recognizing revenue when (or as) the performance obligations are satisfied. </span></div></ix:nonNumeric></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">41</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="ib898c3ae805d40439dca3ed859f42c40" continuedAt="i9fa5ccaa6b1d4c70935869fff43d5a5c"><ix:continuation id="i7312b015720844b3a8feb8c1c8c6c390" continuedAt="i73bd5a6ccb364122a00251ed9b8d8e31"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Identifying the Contract with the Customer</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company identifies contracts with customers as agreements that create enforceable rights and obligations, which typically take the form of customer contracts or purchase orders. The Company accounts for a contract when it has approval and commitment from both parties, the rights of the parties are identified, payment terms are identified, the contract has commercial substance, and collectability of consideration is probable.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Identifying the Performance Obligations in the Contract</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company identifies performance obligations as promises in contracts to transfer distinct goods or services. Standard products and services that the Company regularly sells separately, which customers can benefit from either on their own or with other readily available resources and are distinct within the context of the customer contract, are accounted for as distinct performance obligations. Application-specific customer solutions that are comprised of a combination of products and services are accounted for as one performance obligation to deliver a total solution to the customer. On-site support services that are provided to the customer after the solution is deployed are accounted for as a separate performance obligation. These solutions are provided to customers in a variety of industries, including the consumer electronics and logistics industries. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Shipping and handling activities for which the Company is responsible under the terms and conditions of the sale are not accounted for as performance obligations but as fulfillment costs. These activities are required to fulfill the Company&#8217;s promise to transfer the goods and are expensed when revenue is recognized.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company does not assess whether promised goods or services are performance obligations if they are immaterial in the context of the contract. If revenue is recognized before immaterial promises have been completed, then the costs related to such immaterial promises are accrued at the time of sale.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Determining the Transaction Price</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company determines the transaction price as the amount of consideration it expects to receive in exchange for transferring promised goods or services to the customer. Amounts collected from customers for sales taxes are excluded from the transaction price. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">If a contract includes a variable amount, such as a rebate, then the Company estimates the transaction price using either the expected value or the most likely amount of consideration to be received, depending on the specific facts and circumstances. The Company includes estimated variable consideration in the transaction price only to the extent it is probable that a significant reversal of revenue will not occur when the uncertainty is resolved. The Company updates its estimate of variable consideration at the end of each reporting period to reflect changes in facts and circumstances.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company does not grant customers the explicit right to return product. However, from time to time, the Company may allow a customer to return a product. As a practical expedient, the Company estimates the transaction price using the expected value based on its history of return experience using a portfolio approach in which the Company&#8217;s total revenue is reduced by an estimate of total customer returns. Management reasonably expects that the effect of applying a portfolio approach to a group of contracts would not differ materially from considering each contract separately.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Allocating the Transaction Price to the Performance Obligations</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company allocates the transaction price to each performance obligation at contract inception based on a relative stand-alone selling price basis, or the price at which the Company would sell the good or service separately to similar customers in similar circumstances.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Recognizing Revenue When (or As) the Performance Obligations are Satisfied</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes revenue when it transfers the promised goods or services to the customer. Revenue for standard products is recognized at the point in time when the customer obtains control of the goods, which is typically upon delivery when the customer has legal title, physical possession, the risks and rewards of ownership, and an enforceable obligation to pay for the products. Revenue for services, which are not material, is typically recognized over the time the service is provided. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue for application-specific customer solutions is recognized at the point in time when the solution is validated, which is the point in time when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligations in the arrangement. Although the customer may have taken legal title and physical possession of the goods when they arrived at the customer&#8217;s </span></div></ix:continuation></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">42</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i9fa5ccaa6b1d4c70935869fff43d5a5c" continuedAt="ic9a32518a0fc42b08eb961872898594e"><ix:continuation id="i73bd5a6ccb364122a00251ed9b8d8e31"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">designated site, the significant risks and rewards of ownership transfer to the customer only upon validation. Revenue for on-site support services related to these solutions is recognized over the time the service is provided. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In certain instances, an arrangement may include customer-specified acceptance provisions or performance guarantees that allow the customer to accept or reject delivered products that do not meet the customer&#8217;s specifications. If the Company can objectively determine that control of a good or service has been transferred to the customer in accordance with the agreed-upon specifications in the contract, then customer acceptance is a formality. If acceptance provisions are presumed to be substantive, then revenue is deferred until customer acceptance. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For the Company&#8217;s standard products and services, revenue recognition and billing typically occur at the same time. For application-specific customer solutions, however, the agreement with the customer may provide for billing terms which differ from revenue recognition criteria, resulting in either deferred revenue or unbilled revenue. Credit assessments are performed to determine payment terms, which vary by region, industry, and customer. Prepayment terms result in contract liabilities for customer deposits. When credit is granted to customers, payment is typically due <ix:nonNumeric contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231" name="cgnx:RevenuePaymentTerms" format="ixt-sec:durday" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjU1NDg_7da7b860-ec25-4880-b46f-e89ea06213f7">30</ix:nonNumeric> to <ix:nonNumeric contextRef="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231" name="cgnx:RevenuePaymentTerms" format="ixt-sec:durday" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjU1NTQ_239f2b9c-9f21-4dd7-bbaa-d260cd566682">90</ix:nonNumeric> days from billing. The Company's contracts have an original expected duration of less than one year, and therefore as a practical expedient, the Company has elected to ignore the impact of the time value of money on a contract and to expense sales commissions. The Company recognizes an asset for costs to fulfill a contract if the costs relate directly to the contract and to future performance, and the costs are expected to be recovered. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management exercises judgment when determining the amount of revenue to be recognized each period. Such judgments include, but are not limited to, assessing the customer&#8217;s ability and intention to pay substantially all of the contract consideration when due, determining when two or more contracts should be combined and accounted for as a single contract, determining whether a contract modification has occurred, assessing whether promises are immaterial in the context of the contract, determining whether material promises in a contract represent distinct performance obligations, estimating the transaction price for a contract that contains variable consideration, determining the stand-alone selling price of each performance obligation, determining whether control is transferred over time or at a point in time for performance obligations, and assessing whether formal customer acceptance provisions are substantive.</span></div></ix:continuation><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ResearchDevelopmentAndComputerSoftwarePolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExOTg_e2f841f3-4fa2-48f4-a42f-0f5fbe995744" continuedAt="i3eca6ccc31504928822c1dd28d788482" escape="true">Research and Development</ix:nonNumeric></span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i3eca6ccc31504928822c1dd28d788482">Research and development costs primarily include personnel-related costs, prototyping materials, and outside services. Research and development costs are expensed when incurred until technological feasibility has been established for the product. Thereafter, all software costs may be capitalized until the product is available for general release to customers. The Company determines technological feasibility at the time the product reaches beta in its stage of development. Historically, the time incurred between beta and general release to customers has been short, and therefore, the costs have been insignificant.</ix:continuation> </span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:AdvertisingCostsPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTM_0e92433c-7a40-416e-95d7-b4b32f164b19" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Advertising Costs</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Advertising costs are expensed as incurred and totaled $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:AdvertisingExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NDA_af6899b7-cc2e-48b9-999b-e9f00c922f62">1,965,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:AdvertisingExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NTA_b27be2e8-b1fa-4fdd-90bc-53cb1eea09b9">1,443,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:AdvertisingExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NjQ_8c970d1e-a17d-442c-8a2f-815111214a58">1,385,000</ix:nonFraction> in 2019.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDU_841f31f5-1149-4e78-9978-9a9f204168bd" continuedAt="i34060d4e1a7748d5bdf1003d025132e2" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock-Based Compensation</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). The Company has reserved a specific number of shares of its authorized but unissued shares for issuance upon the exercise of stock options or the settlement of RSUs. When a stock option is exercised or an RSU is settled, the Company issues new shares from this pool. The fair values of stock options are estimated on the grant date using a binomial lattice model. Management is responsible for determining the appropriate valuation model and estimating these fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor and the observable market price of the Company's common stock on the grant date. The fair value of RSUs is determined based on the observable market price of the Company's common stock on the grant date less the present value of expected future dividends. When determining the grant-date fair value of stock-based awards, management further considers whether an adjustment is required to the observable market price or volatility of the Company's common stock that is used in the valuation as a result of material non-public information, if that information is expected to result in a material increase in share price.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes compensation expense related to stock-based awards using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting </span></div></ix:nonNumeric></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">43</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="ic9a32518a0fc42b08eb961872898594e" continuedAt="i111c0c6afd804a0680ea1d2057166eeb"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i34060d4e1a7748d5bdf1003d025132e2">portion of the stock option or RSU as if the award was, in substance, multiple awards. The amount of compensation expense recognized at the end of the vesting period is based on the number of awards for which the requisite service has been completed. No compensation expense is recognized for awards that are forfeited for which the employee does not render the requisite service. The term &#8220;forfeitures&#8221; is distinct from &#8220;expirations&#8221; and represents only the unvested portion of the surrendered award. The Company applies estimated forfeiture rates to its unvested awards to arrive at the amount of compensation expense that is expected to be recognized over the requisite service period. At the end of each separately vesting portion of an award, the expense that was recognized by applying the estimated forfeiture rate is compared to the expense that should be recognized based on the employee&#8217;s service, and an increase or decrease to compensation expense is recorded to true up the final expense.</ix:continuation></span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:IncomeTaxPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDM_fd9733c2-029b-43c7-83dc-adf21a465c94" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Taxes</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes a tax position in its financial statements when that tax position, based solely upon its technical merits, is more likely than not to be sustained upon examination by the relevant taxing authority. Those tax positions failing to qualify for initial recognition are recognized in the first interim period in which they meet the more likely than not standard, or are resolved through negotiation or litigation with the taxing authority, or upon expiration of the statutes of limitations. Derecognition of a tax position that was previously recognized occurs when an entity subsequently determines that a tax position no longer meets the more likely than not threshold of being sustained.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Only the portion of the liability that is expected to be paid within one year is classified as a current liability. As a result, liabilities expected to be resolved without the payment of cash (e.g., resolution due to the expiration of the statutes of limitations) or are not expected to be paid within one year are not classified as current. It is the Company&#8217;s policy to record estimated interest and penalties as income tax expense and tax credits as a reduction in income tax expense.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred tax assets and liabilities are determined based on the differences between the financial statement and tax bases of assets and liabilities as measured by the enacted tax rates that will be in effect when these differences reverse. Valuation allowances are provided if, based on the weight of available evidence, it is more likely than not that some or all of the deferred tax assets will not be realized.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Tax Cuts and Jobs Act of 2017 imposed a minimum tax on foreign earnings related to intangible assets, known as the Global Intangible Low-Taxed Income (GILTI) tax. In 2019, the Company elected to account for the impact of the GILTI minimum tax in deferred taxes, a change from the Company&#8217;s initial election made in 2018 whereby the GILTI minimum tax was included in income tax expense as incurred on an annual basis. The change is considered preferable, as it appropriately matches the Company&#8217;s current and deferred income tax implications.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sales tax in the United States and similar taxes in other jurisdictions that are collected from customers and remitted to government authorities are presented on a gross basis (i.e., a receivable from the customer with a corresponding payable to the government). Amounts collected from customers and retained by the Company during tax holidays are recognized as non-operating income when earned.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:EarningsPerSharePolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzA_81793403-2f29-4898-9a2b-467108a6964d" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Net Income Per Share</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Basic net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period. Diluted net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period plus potential dilutive common shares. Dilutive common equivalent shares consist of stock options and restricted stock units and are calculated using the treasury stock method. Common equivalent shares do not qualify as participating securities. In periods where the Company records a net loss, potential common stock equivalents are not included in the calculation of diluted net loss per share as their effect would be anti-dilutive.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ComprehensiveIncomePolicyPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyODU_b1836693-5c68-4431-bdda-4c544449ae87" continuedAt="ib3b6bc95c446490aaed7276f68fcc75f" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Comprehensive Income</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Comprehensive income is defined as the change in equity of a company during a period from transactions and other events and circumstances, excluding transactions resulting from investments by owners and distributions to owners. Accumulated other comprehensive loss, net of tax, consists of foreign currency translation adjustment losses of $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM0NzE_9c9bf77a-d596-4384-afb6-e7c1ad2f0aa9">43,665,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="0" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM0Nzg_46f3a51e-99dc-498e-b05d-fc5f180416ab">36,912,000</ix:nonFraction>, as of December 31, 2021 and December 31, 2020, respectively; net unrealized losses on available-for-sale investments of $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM1OTc_4dd4a6cd-fb74-45c2-988c-e7f4fb40199f">3,006,000</ix:nonFraction> as of December 31, 2021, and net unrealized gains on available-for-sale investments of $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="0" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM2MDQ_44b370e2-aa0a-4ede-9d7c-24fa63830c99">4,382,000</ix:nonFraction> as of December 31, 2020; and losses on currency swaps, net of gains on long-term intercompany loans of $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM3NDY_d4b45a54-80b8-4114-8de7-471f0a78de42">1,271,000</ix:nonFraction> at each year end.</span></div></ix:nonNumeric></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">44</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i111c0c6afd804a0680ea1d2057166eeb" continuedAt="i380f26fc9ea344b29734624e717650d4"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="ib3b6bc95c446490aaed7276f68fcc75f">Amounts reclassified from accumulated other comprehensive loss, net of tax, to investment income on the Consolidated Statements of Operations were net realized gains of $<ix:nonFraction unitRef="usd" contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231" decimals="0" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5MzI_8f2f17b3-8683-4362-80af-a417feee6468">236,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231" decimals="0" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5MzY_af919498-2de1-4b0d-b9b1-125cfc5720d3">4,119,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231" decimals="0" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5NDQ_a300473a-0c18-4c6d-9807-d6c13674da6f">1,452,000</ix:nonFraction> for 2021, 2020, and 2019, respectively.</ix:continuation></span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="cgnx:ConcentrationsOfRiskPolicyPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDA_45b173c8-d310-4580-93a9-fe0ae4b0222e" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Concentrations of Risk</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Financial instruments that potentially subject the Company to concentrations of credit risk consist primarily of cash, cash equivalents, investments, and accounts receivable. The Company has certain domestic and foreign cash balances that exceed the insured limits set by the Federal Deposit Insurance Corporation (FDIC) in the United States and equivalent regulatory agencies in foreign countries. The Company primarily invests in investment-grade debt securities and has established guidelines relative to credit ratings, diversification, and maturities of its debt securities that maintain safety and liquidity. The Company has historically not experienced any significant realized losses on its debt securities.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A single customer accounted for 17% of total revenue in 2021 and 15% of total accounts receivable as of December 31, 2021. Accounts receivable from a second customer accounted for 11% of total accounts receivable as of December 31, 2021. The Company performs ongoing credit evaluations of its customers and maintains allowances for potential credit losses. The Company has historically not experienced any significant losses related to the collection of its accounts receivable.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A significant portion of the Company's products is presently manufactured by a third-party contractor located in Indonesia. This contract manufacturer has agreed to provide the Company with termination notification periods and last-time-buy rights, if and when that may be applicable. Our contract manufacturer's challenges in obtaining components and maintaining production have resulted in delays, and may continue to result in delays, in meeting our delivery schedules that, as a result, delay deliveries to our customers past their requested delivery date. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain key electronic and mechanical components, such as integrated circuit chips, are fundamental to the design of Cognex products. Due to the impact of the COVID-19 pandemic or other factors, we have experienced, and may continue to experience, disruptions to the supply of components for our products that have resulted, and may continue to result, in higher purchase costs, delivery costs, and manufacturing delays.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company sources components from preferred vendors that are selected based on price and performance considerations. In the event of a supply disruption from a preferred vendor, these components may typically be purchased from alternative vendors, which may result in higher purchase costs and manufacturing delays based on the time required to identify and obtain sufficient quantities from an alternative source.</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain of the Company&#8217;s products utilize components that are available from only one source. If we are unable to secure adequate supply from these sources, we may have to redesign our products, which may lead to higher costs, delays in manufacturing, and possible loss of sales.</span></div></ix:nonNumeric><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:BusinessCombinationsPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDc_006eea2e-4221-4544-b34d-9cfd0027f057" continuedAt="i0ed01fd150db4be1a0992b2633178ac1" escape="true">Business Acquisitions</ix:nonNumeric></span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i0ed01fd150db4be1a0992b2633178ac1">The Company determines whether a transaction qualifies as a business combination by applying the definition of a business, which requires the assets acquired and liabilities assumed to be inputs and processes that have the ability to contribute to the creation of outputs. The Company accounts for business combinations under the acquisition method of accounting, which requires the following steps: (1) identifying the acquirer, (2) determining the acquisition date, (3) recognizing and measuring the identifiable assets acquired and the liabilities assumed, and (4) recognizing and measuring goodwill. The Company measures the identifiable assets acquired and liabilities assumed at their estimated fair values as of the acquisition date. Management is responsible for determining the appropriate valuation model and estimated fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor. Management primarily establishes fair value using the income approach based on a discounted cash flow model. The income approach requires the use of many assumptions and estimates including future revenues and expenses, as well as discount factors. Contingent consideration liabilities are reported at their estimated fair values based on probability-adjusted present values of the consideration expected to be paid, using significant inputs and estimates. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain milestones and discount rates consistent with the level of risk of achievement. The fair values of these contingent consideration liabilities are remeasured each reporting period with changes in fair value included in "Other income (expense)" on the Consolidated Statements of Operations. Goodwill is recognized as of the acquisition date as the excess of the consideration transferred over the net amount of assets acquired and liabilities assumed. Transaction costs are expensed as incurred.</ix:continuation> </span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">45</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i380f26fc9ea344b29734624e717650d4" continuedAt="ibf0deffe67de4c909a6dd27bab89ccf2"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNTc_3d628cf2-62d7-4d03-a0b3-09a2a20dcc78" continuedAt="if8efe7f1aadd41599abf32a189e2a00d" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Restructuring Charges</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">One-time employee termination benefits as part of a restructuring activity exist at the date the plan of termination has been communicated to employees (the &#8220;communication date&#8221;) and meets all of the following criteria: (1) management, having the authority to approve the action, has committed to the plan of termination, (2) the plan identifies the number of employees to be terminated, their job classifications or functions and their locations, and the expected completion date, (3) the plan establishes the terms of the benefit arrangement in sufficient detail, and (4) actions required to complete the plan indicate it is unlikely that significant changes to the plan will be made. If employees are not required to render service until they are terminated in order to receive the termination benefits or will not be retained to render service beyond a minimum retention period, a liability for the termination benefits is recognized and measured at fair value at the communication date. Otherwise, a liability is measured initially at the communication date based on the fair value of the liability as of the termination date and recognized ratably over the future service period. Changes to the fair value of the liability are recorded as restructuring adjustments. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Closures of leased offices as part of a restructuring activity prior to the end of the contractual lease term are treated as abandoned right-to-use assets when the Company ceases to use the property for economic benefit and lacks either the intent or ability to sublease. The lease asset is written down to zero as of the abandonment date. Estimates of contract termination costs assume the Company will be obligated to pay the remaining rent over the contract period, and the lease liability continues to be recorded on the balance sheet. Subsequent negotiations that result in early contract terminations are recorded as favorable restructuring adjustments.</span></div></ix:nonNumeric></ix:continuation><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="ibf0deffe67de4c909a6dd27bab89ccf2"><ix:continuation id="if8efe7f1aadd41599abf32a189e2a00d">Other associated costs as part of a restructuring activity include costs to consolidate facilities, costs to relocate employees, and legal fees incurred to research local statutory requirements and prepare termination agreements. These costs are recognized in the period in which the liability is incurred, which generally corresponds to the period in which the services are rendered.</ix:continuation></ix:continuation> </span></div><div id="i929e97f6a142453c8a8057dbb6451118_103"></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 2: <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDMvZnJhZzpmNzQ4MDI0NDk3MTU0OTI1YTM5ZDhjZDQxNDM1Y2E0MC90ZXh0cmVnaW9uOmY3NDgwMjQ0OTcxNTQ5MjVhMzlkOGNkNDE0MzVjYTQwXzUyODU_b2a7d890-c79b-4ead-b6b9-465408872df6" continuedAt="i3ed8e2914108474fa4fcce173c52b0fd" escape="true"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDMvZnJhZzpmNzQ4MDI0NDk3MTU0OTI1YTM5ZDhjZDQxNDM1Y2E0MC90ZXh0cmVnaW9uOmY3NDgwMjQ0OTcxNTQ5MjVhMzlkOGNkNDE0MzVjYTQwXzUyODc_289363b3-7e29-4e39-b5a2-9d15f609ff0f" continuedAt="ieadc02300ee646a091636e117b0d6406" escape="true">New Pronouncements</ix:nonNumeric></ix:nonNumeric></span></div><ix:continuation id="i3ed8e2914108474fa4fcce173c52b0fd" continuedAt="i2e4e89e5671543f28406f1254900fc7b"><ix:continuation id="ieadc02300ee646a091636e117b0d6406" continuedAt="i69b19499f6dc4d229e6c1c024be42d0c"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2019-12, "Simplifying the Accounting for Income Taxes"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU eliminate certain exceptions related to the approach for intraperiod tax allocation, the methodology for calculating income taxes in an interim period, and the recognition of deferred tax liabilities for outside basis differences. They also clarify and simplify other aspects of the accounting for income taxes. The Company adopted ASU 2019-12 on January 1, 2021. Upon adoption, ASU 2019-12 did not have a material impact on the Company's consolidated financial statements and disclosures.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2020-08, "Codification Improvements to Subtopic 310-20, Receivables - Nonrefundable Fees and Other Costs"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU clarify that for each reporting period, for callable debt with multiple call dates and call prices that may change at each call date, to the extent that the amortized cost basis of an individual callable debt security exceeds the amount repayable by the issuer at the next call date, the excess is amortized to the next call date. The Company adopted ASU 2020-08 on January 1, 2021. Upon adoption, ASU 2020-08 did not have a material impact on the Company's consolidated financial statements and disclosures.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2020-04, "Reference Rate Reform (Topic 848): Facilitation of the Effects of Reference Rate Reform on Financial Reporting" and (ASU) 2021-01, "Reference Rate Reform (Topic 848): Scope"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in these ASUs apply to all entities that have contracts, hedging relationships, and other transactions that reference LIBOR or another reference rate expected to be discontinued because of reference rate reform. Together, the ASUs provide optional expedients and exceptions for applying generally accepted accounting principles (GAAP) to contracts, hedging relationships, and other transactions affected by reference rate reform if certain criteria are met. The expedients and exceptions provided by the amendments do not apply to contract modifications made and hedging relationships entered into or evaluated after December 31, 2022, except for hedging relationships existing as of December 31, 2022 that an entity has elected certain optional expedients for and that are retained through the end of the hedging relationship. The amendments in these ASUs are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 or ASU 2021-01 to have a material impact on the Company's consolidated financial statements and disclosures.</span></div></ix:continuation></ix:continuation><div style="text-align:justify"><span><br/></span></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">46</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i2e4e89e5671543f28406f1254900fc7b"><ix:continuation id="i69b19499f6dc4d229e6c1c024be42d0c"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2021-08, "Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU primarily address the accounting for contract assets and contract liabilities related to revenue contracts with customers in a business combination. The ASU clarifies that an acquirer should account for the related revenue contracts in accordance with Accounting Standards Codification 606 as if the acquirer had originated the contracts. The amendments in this ASU are effective for fiscal years beginning after December 15, 2022, including interim periods within those fiscal years, although early adoption is permitted. The amendments in the ASU should be applied prospectively to business combinations occurring on or after the effective date of the amendments. The expected financial statement impact of this new accounting standard cannot be reasonably estimated at this time, as the impact in future periods will depend on the contract assets and contract liabilities acquired in future business combinations. Management does not expect this ASU to have a material impact on the Company's disclosures.</span></div></ix:continuation></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_109"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 3:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:FairValueDisclosuresTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5MjY_584d2dca-b571-47ff-9573-37d5ac6d1da6" continuedAt="i5283354e3d964f9d9cff55d5c2c48cbf" escape="true">Fair Value Measurements</ix:nonNumeric></span></div><ix:continuation id="i5283354e3d964f9d9cff55d5c2c48cbf" continuedAt="if4dd0e3ddea34cb89860e3c8a0847786"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Financial Assets and Liabilities that are Measured at Fair Value on a Recurring Basis</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5MzY_89f5bc36-39ed-4184-8f6d-fcc3d2ebdfe8" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:93.421%"><tr><td style="width:1.0%"></td><td style="width:50.386%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.549%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.582%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.549%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.582%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.552%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Quoted&#160;Prices&#160;in<br/>Active Markets<br/>for Identical<br/>Assets (Level&#160;1)</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Significant&#160;Other<br/>Observable<br/>Inputs (Level&#160;2)</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unobservable Inputs                       (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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt 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:1pt 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:1pt solid #000000;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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Money market instruments</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" decimals="-3" name="cgnx:MoneyMarketInstrumentsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtMS0xLTEtMjg4MDU_4d8b809e-afd5-49fd-93ed-fffa917a2512">537</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="cgnx:MoneyMarketInstrumentsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtMy0xLTEtMjg4MDU_9a5a0eab-31b1-4816-bbf6-9faf2e8a9e76">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" decimals="-3" name="cgnx:MoneyMarketInstrumentsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtNS0xLTEtMjg4MDU_f3201f3c-680a-4a4a-bf03-36bbb1d80da7">&#8212;</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" decimals="-3" name="cgnx:CorporateBondsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtMS0xLTEtMjg4MDU_381d1683-db2c-46eb-ba21-62ca7b02109d">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="cgnx:CorporateBondsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtMy0xLTEtMjg4MDU_0a105753-0490-4e1c-a932-2453c4ef110a">554,306</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" decimals="-3" name="cgnx:CorporateBondsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtNS0xLTEtMjg4MDU_56aa9db1-a93e-4d5e-93d0-b8af6b6488a8">&#8212;</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" decimals="-3" name="cgnx:AssetBackedSecuritiesFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMS0xLTEtMzM4NzY_81204fa0-9e2a-4dde-b37e-e1cb373bde67">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="cgnx:AssetBackedSecuritiesFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMy0xLTEtMzM4NzY_224016f1-e86d-43a4-848b-d23e6130c923">81,595</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" decimals="-3" name="cgnx:AssetBackedSecuritiesFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNS0xLTEtMzM4NzY_26d2a189-e016-41f2-9808-7eb5a5105bc1">&#8212;</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" xsi:nil="true" name="cgnx:TreasuryBillsFairValueDisclosure" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMS0xLTEtMjg4MDU_e0c8a484-d89b-48ed-aa2f-48da3db5ab72"></ix:nonFraction></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="cgnx:TreasuryBillsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMy0xLTEtMjg4MDU_543fef45-f140-4a55-9789-3d8f63fc6bbd">58,665</ix:nonFraction>&#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"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" xsi:nil="true" name="cgnx:TreasuryBillsFairValueDisclosure" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNC0xLTEtMjg4MDU_3b960cea-462f-4773-b7ef-bf27cf9c96ba"></ix:nonFraction></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" xsi:nil="true" name="cgnx:TreasuryBillsFairValueDisclosure" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNS0xLTEtMjg4MDU_9fce6006-aaf3-4276-a482-c6d7cb6d3232"></ix:nonFraction></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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" decimals="-3" name="cgnx:AgencyBondsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtMS0xLTEtMjg4MDU_08b49866-b262-4359-90dd-ab7d4ffba5ed">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="cgnx:AgencyBondsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtMy0xLTEtMjg4MDU_0006b433-cec8-4713-89a6-f66f6930b667">18,879</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" decimals="-3" name="cgnx:AgencyBondsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtNS0xLTEtMjg4MDU_90dec2f9-8c0e-4bc7-bf7c-d31eb3dad849">&#8212;</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" decimals="-3" name="cgnx:MunicipalBondsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMS0xLTEtMzQxNjk_688a8752-50fa-4192-8ce1-6416064325a1">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="cgnx:MunicipalBondsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMy0xLTEtMzQxNjk_1c85d034-dc24-4e46-b6db-d72d11fa6384">5,639</ix:nonFraction>&#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="3" style="background-color:#cceeff;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" xsi:nil="true" name="cgnx:MunicipalBondsFairValueDisclosure" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktNS0xLTEtMzQxNjk_3df4ce89-76e5-4ab4-ae06-5c6404864766"></ix:nonFraction></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" decimals="-3" name="cgnx:SovereignBondsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMS0xLTEtMjg4MDU_bc50c8fd-999d-4276-8697-94abc3f8708a">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="cgnx:SovereignBondsFairValueDisclosure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMy0xLTEtMjg4MDU_e1e0c34a-7bed-4fb6-b8a1-4992be701ff7">2,119</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" decimals="-3" name="cgnx:SovereignBondsFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktNS0xLTEtMjg4MDU_944ad573-5cf4-48fe-8aa2-72899362e651">&#8212;</ix:nonFraction>&#160;</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="display:none"></td><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</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:100%"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" decimals="-3" name="us-gaap:ForeignCurrencyContractAssetFairValueDisclosure" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTEtMS0xLTI4ODA1_4bd1c2d9-f7e2-4c8e-b4f7-34fb2032114e">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="us-gaap:ForeignCurrencyContractAssetFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTMtMS0xLTI4ODA1_3cadf306-3ea1-494f-8f0b-a62541522929">39</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" decimals="-3" name="us-gaap:ForeignCurrencyContractAssetFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTUtMS0xLTI4ODA1_53d641bf-597c-4e37-86f6-959cbd253cb9">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Liabilities:</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></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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231" decimals="-3" name="us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTEtMS0xLTI4ODA1_8bd626b9-a162-4bc0-86fd-6c7422241016">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231" decimals="-3" name="us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTMtMS0xLTI4ODA1_42cff970-b437-42cf-a94b-83b9473d8117">230</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231" decimals="-3" name="us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTUtMS0xLTI4ODA1_e7b85bab-e65a-40b2-a01d-4d2e5aa3bda2">&#8212;</ix:nonFraction>&#160;</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="display:none"></td><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><td colspan="3" style="display:none"></td></tr></table></div></ix:nonNumeric><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s money market instruments are reported at fair value based on the daily market price for identical assets in active markets, and are therefore classified as Level 1. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s debt securities and forward contracts are reported at fair value based on model-driven valuations in which all significant inputs are observable or can be derived from or corroborated by observable market data for substantially the full term of the asset or liability, and are therefore classified as Level 2. Management is responsible for estimating the fair value of these financial assets and liabilities, and in doing so, considers valuations provided by a large, third-party pricing service. For debt securities, this service maintains regular contact with market makers, brokers, dealers, and analysts to gather information on market movement, direction, trends, and other specific data. They use this information to structure yield curves for various types of debt securities and arrive at the daily valuations. The Company's forward contracts are typically traded or executed in over-the-counter markets with a high degree of pricing transparency. The market participants are generally large commercial banks.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's contingent consideration liabilities are reported at fair value based on probability-adjusted present values of the consideration expected to be paid using significant inputs that are not observable in the market, and are therefore classified as Level 3. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain revenue milestones. The fair values of these contingent consideration liabilities were calculated using discount rates consistent with the level of risk of achievement, and are remeasured each reporting period.</span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="if4dd0e3ddea34cb89860e3c8a0847786" continuedAt="i1705023753d54076b120a41d0cf81e3a"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5NDA_54cfd824-710e-46a1-9af6-47ddb95a520b" escape="true"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the activity for the Company's liabilities measured at fair value using Level 3 inputs (in thousands):</span></div><div style="margin-top:11pt;text-align:justify"><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.303%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.497%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzAtMS0xLTEtMjg4MDU_cb723200-da00-4dea-a849-5bca4a35ab5e">1,153</ix:nonFraction>&#160;</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="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></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fair value adjustment to Chiaro contingent consideration</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="icbe413b8380b4b74b96766d056cfe1be_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:LiabilitiesFairValueAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzMtMS0xLTEtMjg4MDU_ff776ed7-15b7-4544-81b5-7e1fed8e467e">114</ix:nonFraction>)</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="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Payment of Chiaro contingent consideration</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i7916769b28254833942a005f3b6b3b20_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:LiabilitiesFairValueAdjustment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzUtMS0xLTEtMjg4MDU_ecc4828f-2cd6-4979-8abb-150cf9b54181">1,039</ix:nonFraction>)</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="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzctMS0xLTEtMjg4MDU_6a77ff5f-ffb2-47f3-af04-66c071e48d7d">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><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></tr><tr><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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzEyLTEtMS0xLTI4ODA1_ba816db4-fec3-4892-b408-4bac1e262a7f">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of the contingent consideration liability related to the Company's acquisition of GVi Ventures, Inc. in 2017 was written down to <ix:nonFraction unitRef="usd" contextRef="i1ba31dc29f6e4fd583635b026a78c70e_I20191231" decimals="INF" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzIzNzU_b6a24fb9-8489-4136-96b3-ac2a31674a5a">zero</ix:nonFraction> in 2019 resulting from a lower level of revenue in the Americas' automotive industry, and the balance remains at <ix:nonFraction unitRef="usd" contextRef="iff8191abdb834fa281b3e2476e14a7dc_I20211231" decimals="INF" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI1MDg_ad7d19b1-14c8-4cc3-bba5-49be021eb3a1">zero</ix:nonFraction> as of December 31, 2021. The undiscounted potential outcomes related to future contingent consideration range from $<ix:nonFraction unitRef="usd" contextRef="id9c74275ab59442fb9ded8deb5674d28_I20211231" decimals="INF" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI2MjY_ea977ed5-ed25-415e-a900-0f85c538e717">0</ix:nonFraction> to $<ix:nonFraction unitRef="usd" contextRef="i7222cc20036644a3b44ea75faaa45733_I20211231" decimals="INF" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI2MzI_db7e079a-2224-45ef-849a-6a479abf30c0">2,500,000</ix:nonFraction> based on certain revenue levels through April of 2022. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Non-financial Assets that are Measured at Fair Value on a Non-recurring Basis</span></div></ix:continuation><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i1705023753d54076b120a41d0cf81e3a">Non-financial assets, such as property, plant and equipment, operating lease assets, goodwill, and intangible assets, are required to be measured at fair value only when an impairment loss is recognized. The Company evaluates these long-lived assets for impairment whenever events or changes in circumstances, referred to as "triggering events," indicate the carrying value may not be recoverable. The adverse impact of the COVID-19 pandemic on our business in 2020 triggered a review of long-lived assets for potential impairment as of May 26, 2020, which resulted in operating lease asset impairment charges of $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OperatingLeaseImpairmentLoss" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM0NjE_f1673ba8-4cf4-4c72-b243-5ddb7b8d9391">3,427,000</ix:nonFraction> (refer to Notes 7 and 22) that were included in "Restructuring charges" on the Consolidated Statements of Operations, and intangible asset impairment charges of $<ix:nonFraction unitRef="usd" contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM2MjQ_d118fa41-3893-44b4-8413-91dead33fcc1">19,571,000</ix:nonFraction> (refer to Note 9) in the second quarter of 2020. These fair value measurements were based on the present values of future cash flows using significant inputs that are not observable in the market, and were therefore classified as Level 3. The Company did not record impairment charges related to non-financial assets in 2021 or 2019.</ix:continuation> </span></div><div id="i929e97f6a142453c8a8057dbb6451118_115"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 4:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MjE_38351454-2f9f-4eb1-8a24-5a1fe91f10e3" continuedAt="iaf83165f7ab64afeb8820efcfb0ed4cc" escape="true">Cash, Cash Equivalents, and Investments</ix:nonNumeric></span></div><ix:continuation id="iaf83165f7ab64afeb8820efcfb0ed4cc" continuedAt="iede30868b4c142d3ac907cec86cf3379"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0Mjk_2759fc2f-1792-42ff-9b4e-0c21eac9d0a4" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash, cash equivalents, and investments consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:65.175%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.322%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.470%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:Cash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzItMS0xLTEtMjg4MDU_a4bb867f-9f0a-49fe-a601-a059f7f1c133">185,624</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:Cash" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzItMy0xLTEtMjg4MDU_a8b37101-8355-429e-8ba8-6480714e2dd9">266,609</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Money market instruments</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzQtMS0xLTEtMjg4MDU_3c58acfc-ca41-44ab-a8f3-d76ed53d28ad">537</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:MoneyMarketFundsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzQtMy0xLTEtMjg4MDU_3ca52bf9-2bea-4d1f-adb8-98ca733cfb1d">2,464</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash and cash equivalents</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzUtMS0xLTEtMjg4MDU_ac300beb-8cef-4372-b55c-71a4bb802764">186,161</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzUtMy0xLTEtMjg4MDU_2393e22d-0cea-48d7-a18a-aec4a6ab4677">269,073</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMS0xLTEtMzM4ODI_c9fcdff4-ccfc-421f-a7ce-00312585da57">73,088</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMy0xLTEtMzM4ODI_1a685299-bfa8-40d3-93a9-f75e6fbe9ea5">32,714</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMS0xLTEtMzM4ODY_809bcb71-d4b5-40a2-a3bc-4f2d30b99e62">37,655</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iba5325337fb447629dd40761b20085ac_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMy0xLTEtMzM4ODY_5d20df4d-232e-49b6-9595-44dfbffa1391">25,160</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4f034dcc34ec4f97b1b287538da11e25_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMS0xLTEtMjg4MDU_077d904c-3fc4-439b-b002-8c2cc7cbe6f0">18,912</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id45501f2632647e7bbcd9975d9d5f9b8_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMy0xLTEtMjg4MDU_02371b32-d126-4e53-99a4-2e083eb3f518">35,403</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMS0xLTEtMjg4MDU_0de4ea39-5e43-4184-8470-c37dd4a9be22">4,998</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i70319cf3a4cf43499a8860f2430ec150_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMy0xLTEtMjg4MDU_9deec0e7-ee4a-41ab-bb21-f2f7392e4dd1">1,303</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzgtMS0xLTEtMjg4MDU_cfa65401-cdc0-4d37-bd0d-1dac53b10cbd">2,802</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzgtMy0xLTEtMjg4MDU_6e3c2506-01a1-4b71-9549-af4dabbbcd2c">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzktMS0xLTEtMjg4MDU_b3d71643-9236-495d-b4c6-5e45185d3741">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzktMy0xLTEtMjg4MDU_6a2e6058-5847-41ef-93e4-45ffc362e7a3">8,660</ix:nonFraction>&#160;</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="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="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current investments</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE1LTEtMS0xLTI4ODA1_78d3501a-20b0-4152-82a4-14db31298814">137,455</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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 colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE1LTMtMS0xLTI4ODA1_33187824-45ff-4f30-996a-a7b0e501eb1e">103,240</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE2LTEtMS0xLTI4ODA1_332ba45c-1ca8-493b-9bf1-7b44a47ff255">481,218</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE2LTMtMS0xLTI4ODA1_6c59cf0d-7fc4-413c-b93a-25b4a480e6a2">203,428</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTEtMS0xLTMzODk5_cd25539e-811d-4358-b2b3-b987196e36db">43,940</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iba5325337fb447629dd40761b20085ac_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTMtMS0xLTMzODk5_44434eb5-ebb7-44a0-bedb-63035b88c26d">67,058</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4f034dcc34ec4f97b1b287538da11e25_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTEtMS0xLTI4ODA1_57b12480-7c98-4b69-93d3-c0302dae843f">39,753</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id45501f2632647e7bbcd9975d9d5f9b8_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTMtMS0xLTI4ODA1_1cf548b3-7fd5-407c-8f21-6179e3a150f1">96,458</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE5LTEtMS0xLTI4ODA1_2da88d00-0c82-40f6-8993-31bb9be85faf">16,077</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE5LTMtMS0xLTI4ODA1_7940c3f6-e492-43e7-96ff-115fb034b3ad">19,006</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIxLTEtMS0xLTMzOTAz_c4bd9630-93c2-403a-9bc0-32b6b723842a">2,119</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIxLTMtMS0xLTMzOTAz_72e1dc92-8ed8-41cd-a2a1-e2db75fd3df9">3,440</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIwLTEtMS0xLTI4ODA1_7814fced-79b7-4e48-8b62-05ef0befa8aa">641</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i70319cf3a4cf43499a8860f2430ec150_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIwLTMtMS0xLTI4ODA1_1fe493bd-b056-4487-896f-653ea7958083">5,735</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current investments</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LongTermInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIyLTEtMS0xLTI4ODA1_79a3949a-c4c9-4236-a5fa-1fca52174dd7">583,748</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:LongTermInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIyLTMtMS0xLTI4ODA1_bf338f76-7934-445d-a960-c73712c1f6b4">395,125</ix:nonFraction>&#160;</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:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:CashCashEquivalentsShortTermAndLongTermInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIzLTEtMS0xLTI4ODA1_fb050c13-8d80-4306-9306-34bdf6ca7e8a">907,364</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;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-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:CashCashEquivalentsShortTermAndLongTermInvestments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIzLTMtMS0xLTI4ODA1_2a9a508a-6608-48be-b119-c381276308c2">767,438</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s cash balance included foreign bank balances totaling $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:DueFromForeignBanks" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIwNQ_de33ebe7-ed8c-4b6e-b3eb-f79974d9d0ea">142,009,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:DueFromForeignBanks" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMg_14d8038e-feed-45f8-851c-e0205c6e4944">225,853,000</ix:nonFraction> as of December&#160;31, 2021 and 2020, respectively.</span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">48</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="iede30868b4c142d3ac907cec86cf3379" continuedAt="ife6d71043fc64b91a8467317675c8e29"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Corporate bonds consist of debt securities issued by both domestic and foreign companies; asset-backed securities consist of debt securities collateralized by pools of receivables or loans with credit enhancement; treasury bills consist of debt securities issued by the U.S. government; municipal bonds consist of debt securities issued by state and local government entities; agency bonds consist of domestic or foreign obligations of government agencies and government-sponsored enterprises that have government backing; and sovereign bonds consist of direct debt issued by foreign governments. All of the Company's securities as of December 31, 2021 and 2020 were denominated in U.S. Dollars.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accrued interest receivable is included in "Prepaid expenses and other current assets" on the Consolidated Balance Sheets and amounted to $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:InterestReceivable" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzEyNTY_dc8d863a-81da-419c-be58-ef6817b36151">3,037,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:InterestReceivable" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzEyNjM_552c30d3-7db3-4889-82f8-4229ccfb66b9">1,560,000</ix:nonFraction> as of December 31, 2021 and 2020, respectively.</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MTc_15820db2-3b33-411b-b9d6-dd50df2720dc" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the Company&#8217;s available-for-sale investments as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:36.583%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.002%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.709%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.002%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.005%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Amortized<br/>Cost</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Unrealized<br/>Gains</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Unrealized<br/>Losses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt 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:1pt 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:1pt 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:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtMS0xLTEtMjg4MDU_bc441cb6-e400-4d60-8813-e11787837ee8">72,863</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtMy0xLTEtMjg4MDU_7d951226-3b08-47ae-8939-99cc3512f4f1">251</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtNS0xLTEtMjg4MDU_a5c3d586-c08e-47b9-ad74-a63d1aa71ac0">26</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtNy0xLTEtMjg4MDU_ab7548db-ecf0-479d-8bf3-cc848d08f1af">73,088</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtMS0xLTEtMjg4MDU_c85cb2f8-f910-4191-a177-7c073f42e0a1">37,568</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtMy0xLTEtMjg4MDU_e99c4b17-efc7-4912-bef1-52a4077d74e3">112</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtNS0xLTEtMjg4MDU_79a3468f-8ed0-4ca3-b944-64b46d54ce94">25</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtNy0xLTEtMjg4MDU_f08b0f54-76ed-487f-b085-0f550cb1aa5d">37,655</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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><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><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><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMS0xLTEtMzM5MjI_af18defe-5733-4ddc-adbc-690c6a5ac1f7">18,864</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMy0xLTEtMzM5MjI_9af008c1-9f35-416c-8009-27cf9cb4dfa8">51</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNS0xLTEtMzM5MjI_de0a7189-334e-4eb6-b750-395731c7a630">3</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNy0xLTEtMzM5MjI_5c4633e2-d93f-4949-91e4-393a19c0f179">18,912</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMS0xLTEtMjg4MDU_2fa07f90-de6e-45fd-a0ad-7ca49fdbbef6">5,029</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMy0xLTEtMjg4MDU_6bbbb113-22ca-4952-8aad-c668ebfe0f58">1</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNS0xLTEtMjg4MDU_a088e4f4-310e-448a-8fa9-ccf7e2c95d1b">32</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNy0xLTEtMjg4MDU_48d20728-76e7-482a-9095-4fa1f02811fc">4,998</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtMS0xLTEtMzM5Mjk_ffb76243-44e4-4eda-925e-cd75be0639c2">2,800</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtMy0xLTEtMzM5Mjk_942dad3b-9b3c-4d66-8a4a-a5c694aa120c">2</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtNS0xLTEtMzM5Mjk_c5226c1c-0e0d-41da-b67f-9a0f5eafed8e">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtNy0xLTEtMzM5Mjk_1ae752eb-a2c6-47f5-83ba-efb7084a0f66">2,802</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTEtMS0xLTI4ODA1_2fcf580e-42ee-4b80-9be3-fa97207b38d7">485,140</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTMtMS0xLTI4ODA1_f96e51e4-5673-4ffd-b083-4f1e59f1babe">555</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTUtMS0xLTI4ODA1_16ad477a-5132-4a08-a64b-11b272cfaf6f">4,477</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTctMS0xLTI4ODA1_777b0f59-b46a-4fdf-aaa3-8f70f6f2bde3">481,218</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTEtMS0xLTMzOTU4_c40d5b38-a23b-4a74-8d73-3a171738edbe">44,197</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTMtMS0xLTMzOTU4_f85b3146-8b2f-476c-999f-57a75edc3ca0">45</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTUtMS0xLTMzOTU4_fdaa79fd-a024-4bec-b2e4-a4931ae6fec8">302</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTctMS0xLTMzOTU4_3616c1d1-0a4e-4763-9922-ab23064ee227">43,940</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTEtMS0xLTI4ODA1_115a0754-dc8d-4ca4-a229-7f4f843e1b1b">39,740</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTMtMS0xLTI4ODA1_b696dc45-b7a7-4604-82ae-90249e4a147b">46</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTUtMS0xLTI4ODA1_ef45d596-a6a7-42bd-bbd2-5d84e2447e32">33</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTctMS0xLTI4ODA1_da036745-0d3a-4676-99d2-793f4fabdffd">39,753</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTEtMS0xLTI4ODA1_a380ab13-f043-40a3-aa3f-6838df8b7fbe">16,128</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTMtMS0xLTI4ODA1_9415c71f-8264-4dcc-836f-1bb7c140d2b4">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTUtMS0xLTI4ODA1_16c647d4-6eee-4512-a2f0-774547b389dc">51</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTctMS0xLTI4ODA1_9698a391-1647-4f4c-84a1-939fc12326aa">16,077</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTEtMS0xLTI4ODA1_108b952e-5469-49a0-a0b2-216f14c64464">2,141</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTMtMS0xLTI4ODA1_0fcb3118-d710-4105-baeb-a413996f67e1">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTUtMS0xLTI4ODA1_2736ed20-d209-4ec9-8c44-3e714fb5849f">22</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTctMS0xLTI4ODA1_66ef647b-7f10-4915-9327-c7614781d0cb">2,119</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTEtMS0xLTI4ODA1_7753c8b0-effa-4aef-9b68-8219f090eb1e">635</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTMtMS0xLTI4ODA1_35a30478-4ecf-47f6-beff-877326d658bc">6</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTUtMS0xLTI4ODA1_5356f665-b664-4203-b911-4d61496fd3e8">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTctMS0xLTI4ODA1_6c2633eb-bc21-42e8-8b79-03c87a9b94ed">641</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTEtMS0xLTI4ODA1_1419243f-5767-43ae-9496-adbac0f4dfeb">725,105</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTMtMS0xLTI4ODA1_bf36bfc6-4383-4e9e-b79d-a9555d7b39da">1,069</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTUtMS0xLTI4ODA1_1fb29981-c2f9-4d49-8970-a3c67df112ac">4,971</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTctMS0xLTI4ODA1_7d28f744-7d4a-4904-bd16-435b5389a607">721,203</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr></table></div></ix:nonNumeric><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the Company&#8217;s gross unrealized losses and fair values for available-for-sale investments in an unrealized loss position as of December&#160;31, 2021 (in thousands):</span></div><div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MTE_533fc9f1-a0c2-49c2-a17c-ac67e97ad3f8" escape="true"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:34.289%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.032%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.032%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.032%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.885%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.032%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.328%"></td><td style="width:0.1%"></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><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><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="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Loss<br/>Position For Less than<br/>12 Months</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Loss<br/>Position For Greater than<br/>12 Months</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMS0xLTEtMzM5NzM_1a41ae93-8319-40e4-b0a5-ea41b152fa56">431,652</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMy0xLTEtMzM5NzM_1b3d7acd-dafb-4466-9033-ad5a10d356a9">4,470</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNS0xLTEtMzM5NzM_6482b01f-5d00-43e2-bcac-5b0ea75c7e22">3,110</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNy0xLTEtMzM5NzM_26a000d8-1031-46f3-9ca2-a4bbba6cc624">33</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtOS0xLTEtMzM5NzM_920a798a-9658-4d55-b9a9-3ef14fa19ef2">434,762</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMTEtMS0xLTMzOTcz_cd4f41fe-ef93-40a2-8287-95d8b2810e83">4,503</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMS0xLTEtMzM5NzY_e003f0be-b0a4-4cb5-834f-96e89289a83a">50,980</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMy0xLTEtMzM5NzY_5f3ad607-a28d-46ac-838e-5f9fcb973cee">317</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNS0xLTEtMzM5NzY_ae63fa0b-ece8-48bc-a283-f4495d59a04d">806</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNy0xLTEtMzM5NzY_8abe4c4b-16f9-4359-8a93-dcbb4fd9c419">10</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtOS0xLTEtMzM5NzY_5eb4be04-aaa8-4fc8-98b0-e2966984b1b2">51,786</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMTEtMS0xLTMzOTc2_7fede6c3-d314-4cff-867d-4883588ac46c">327</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMS0xLTEtMjg4MDU_6b125404-112c-41d7-b619-3d33baa42a69">25,040</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMy0xLTEtMjg4MDU_485bce7d-27cb-4c72-aa09-daf6df0d1cc9">36</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNS0xLTEtMjg4MDU_720f49d5-15e8-48be-a516-79e7ae6bbb31">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNy0xLTEtMjg4MDU_ff540eb7-01fd-4ac9-826c-3313f758eba9">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtOS0xLTEtMjg4MDU_0dce033b-20ec-47ee-b04a-885d63048f01">25,040</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMTEtMS0xLTI4ODA1_4d67a411-bfc8-4fb6-8d06-ad519949df9e">36</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency Bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMS0xLTEtMjg4MDU_005e5699-e333-4e90-87ed-40881100376e">16,077</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMy0xLTEtMjg4MDU_de1f7fc6-2d2c-4702-9834-324c25bc1f11">51</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNS0xLTEtMjg4MDU_028b7caa-5b84-44b0-a8df-7f9c70a079e4">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNy0xLTEtMjg4MDU_cd66f828-c2fe-4bb7-9be9-1c7d42c2d6e9">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtOS0xLTEtMjg4MDU_d758de3e-8297-4d32-a3fa-2db439b53391">16,077</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMTEtMS0xLTI4ODA1_48460740-a77f-4027-b5c9-2bc4a088c796">51</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMS0xLTEtMzM5ODM_15940937-dcd6-40b4-a65d-4dc62ef8dc39">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMy0xLTEtMzM5ODM_574d2348-7210-4242-92f0-b2142831ef10">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctNS0xLTEtMzM5ODM_bacd6fd8-d0cb-40f0-972e-2ddc8c7c1b6b">3,892</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctNy0xLTEtMzM5ODM_415d99c2-475f-47c1-958a-8c2c7a7fbcdf">32</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctOS0xLTEtMzM5ODM_c5fc4a87-1804-4d94-bd52-3349d2ae1da2">3,892</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMTEtMS0xLTMzOTgz_9f8e78fc-0e15-4014-9268-8b4f38a7ee96">32</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMS0xLTEtMjg4MDU_e6e8b84d-141b-4977-aced-315fa8db0b9c">2,119</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMy0xLTEtMjg4MDU_df3b915f-4b3e-46b6-ae3b-eda157f88867">22</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtNS0xLTEtMjg4MDU_215d5d29-aa9a-40fc-a369-13c0a506dae9">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtNy0xLTEtMjg4MDU_056b768c-32ee-4b21-8895-3e8881ac52d6">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtOS0xLTEtMjg4MDU_16986103-c0d7-4b34-a266-76403338e8a5">2,119</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMTEtMS0xLTI4ODA1_c0c3c7b3-c8cb-4adb-a059-6e9090200a43">22</ix:nonFraction>)</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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMS0xLTEtMjg4MDU_fa6e1912-a544-4813-a733-1ab74156bfa3">525,868</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMy0xLTEtMjg4MDU_bec757c7-1309-4c3b-aea6-eb2713fc74f5">4,896</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktNS0xLTEtMjg4MDU_52557de2-ed1d-4e6e-94b1-77041e816b97">7,808</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktNy0xLTEtMjg4MDU_539d5a91-d64f-4c6a-bdda-dab05be9d8f4">75</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktOS0xLTEtMjg4MDU_adfa3bea-95cf-4b4b-8242-803cf473a2fe">533,676</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMTEtMS0xLTI4ODA1_035469bc-94ef-44d9-90e0-853907c53fda">4,971</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></ix:nonNumeric></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">Management monitors debt securities that are in an unrealized loss position to determine whether a loss exists related to the credit quality of the issuer. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows. Based on this evaluation, no allowance for credit losses on debt securities was recorded as of December 31, 2021.</span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="ife6d71043fc64b91a8467317675c8e29"><ix:nonNumeric contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0NDc_b6f8101f-07ed-43c2-aa44-2122a65f08ce" escape="true"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0NDc_fc018196-e80d-46b2-a5a8-116740b09583" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes changes in the allowance for credit losses (in thousands):</span></div><div style="margin-top:9pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"><tr><td style="width:1.0%"></td><td style="width:79.341%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.459%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzAtMS0xLTEtMjg4MDU_955bdb4a-2330-4de0-9c9a-127d56035795">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzEtMS0xLTEtMjk1ODA_23226358-f744-40a1-bf5c-3082fa27cae6">160</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Decreases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzItMS0xLTEtMjk1ODA_b613c510-8cb7-492e-953f-eef07a624cde">160</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzQtMS0xLTEtMjg4MDU_eec09592-1abd-4930-acc4-c8246c0ee077">&#8212;</ix:nonFraction>&#160;</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="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></tr><tr><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></tr><tr><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="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzktMS0xLTEtMjg4MDU_a3b04a57-64ee-4b1f-a806-ed6c6ee289c1">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td></tr></table></div></ix:nonNumeric></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">The Company recorded gross realized gains on the sale of debt securities totaling $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleRealizedGain" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMjg_2f02daea-00dd-4bee-a59e-48023e6e1f4c">246,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleRealizedGain" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMzg_795d6684-8741-496b-b0da-a2abe29acea9">4,283,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleRealizedGain" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxNTI_72f7a0cd-4d27-4712-81e2-21bda00f2519">1,581,000</ix:nonFraction> in 2019, and gross realized losses on the sale of debt securities totaling $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyMjg_018ef2c4-f531-4047-84c9-497849ce89dd">10,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyMzg_85039d5d-8809-4e7f-b14c-3b5fa931cd3c">164,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyNTI_b250ddbb-2c74-4cf5-bd32-37450f555e81">129,000</ix:nonFraction> in 2019.</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MjA_c972c394-680f-4321-a4bb-79b7c80dfa1c" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the effective maturity dates of the Company&#8217;s available-for-sale investments as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:34.876%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.206%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.913%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.297%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.857%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:7.857%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="width:1.0%"></td><td style="width:9.624%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&lt;1&#160;Year</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">1-2&#160;Years</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2-3&#160;Years</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">3-4&#160;Years</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">4-5&#160;Years</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMS0xLTEtMjg4MDU_17d620d8-4896-4fdb-a441-8e5c4516001e">73,088</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMy0xLTEtMjg4MDU_08e5e69f-8a31-4517-9214-22e1d1009720">205,331</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtNS0xLTEtMjg4MDU_80554b29-a3b2-4767-8309-7d47c71e7d5a">175,992</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtNy0xLTEtMjg4MDU_7c80bb9b-ddca-4f52-848d-b0b40dc9e71a">64,356</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtOS0xLTEtMjg4MDU_11c0bde9-8133-4a00-b106-309dce3e56f6">35,539</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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="display:none"></td><td colspan="3" style="display:none"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMTMtMS0xLTI4ODA1_5135d111-bcf6-4c66-9874-ebc8f16f2a7c">554,306</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMS0xLTEtMzQwMTQ_43f3c412-3e72-4fc8-8b13-0090b6c699fd">37,655</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMy0xLTEtMzQwMTQ_1be44b21-4e52-4c39-bdb1-04664400256e">23,370</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNS0xLTEtMzQwMTQ_beb87181-96f4-4932-9561-101c32cb77e9">4,668</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNy0xLTEtMzQwMTQ_836670d2-d4ac-4ccb-be51-38da9ffc23f1">8,092</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItOS0xLTEtMzQwMTQ_de579158-b68f-4863-be60-3531f362e108">7,810</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMTMtMS0xLTM0MDE0_650a9748-b429-4f43-951d-235b6ab366ed">81,595</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMS0xLTEtMjg4MDU_9f8853c2-a15d-4523-acf7-8c091de1068d">18,912</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMy0xLTEtMjg4MDU_1d91c4e2-e003-42e9-9b75-ac26cf772afe">39,753</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNS0xLTEtMjg4MDU_e92d6522-edd1-42f2-add1-80cedf39d422">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNy0xLTEtMjg4MDU_8f0e5ad9-3955-41ba-8184-ae69646b7f1b">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItOS0xLTEtMjg4MDU_3c08319f-95a3-48da-8c3f-23f3d0a33816">&#8212;</ix:nonFraction>&#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="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMTMtMS0xLTI4ODA1_82adc4a3-65a5-45f2-b330-d8714e7fda28">58,665</ix:nonFraction>&#160;</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="display:none"></td><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><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><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><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMS0xLTEtMjg4MDU_e5edc429-c267-4077-8e9d-74c7d6520943">2,802</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMy0xLTEtMjg4MDU_e1b2b7a6-0ac5-46d5-88b5-8f1354503df4">16,077</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtNS0xLTEtMjg4MDU_c7e189a2-6f28-4110-abea-f7c8c1fef897">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtNy0xLTEtMjg4MDU_0f641fa7-5a8c-47a8-9d8a-55479ddfdc9d">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtOS0xLTEtMjg4MDU_3db88bc7-c052-4e82-9b16-856e86a81b08">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMTMtMS0xLTI4ODA1_10a585b4-5136-476c-94b5-581e05fdc5ab">18,879</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMS0xLTEtMzQwMjA_2ad5fc54-45a0-44dd-a28d-92363d3f59fd">4,998</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMy0xLTEtMzQwMjA_2c5f85e8-4dd0-43ed-980d-c731097af633">641</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNS0xLTEtMzQwMjA_b0318fe9-b32a-49c4-86d2-bd8e3c23ba8b">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNy0xLTEtMzQwMjA_a370b57d-319b-4aa8-9703-d480bef29724">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtOS0xLTEtMzQwMjA_e3efa303-1af6-4387-96cc-8aa3537a8cde">&#8212;</ix:nonFraction>&#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="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2e6e3966f74d464096c8781827b91619_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMTMtMS0xLTM0MDIw_130bea27-f39e-41bd-a120-4907d712b1c4">5,639</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMS0xLTEtMjg4MDU_ce6f61d1-1d98-4993-9dfe-607bebc87d03">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMy0xLTEtMjg4MDU_d74b248e-6633-42a5-8e02-cc435e62edef">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNS0xLTEtMjg4MDU_d04b6d9b-5ca9-489a-b9a0-4a38f1b69ffb">1,052</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNy0xLTEtMjg4MDU_91816614-26b5-4bc7-bcc0-f18e838854c4">1,067</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtOS0xLTEtMjg4MDU_03e6dff0-ee75-43d9-b4a3-939ef80d9c35">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMTMtMS0xLTI4ODA1_d244d9d7-c4f1-43f8-9655-734e144fbd21">2,119</ix:nonFraction>&#160;</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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMS0xLTEtMjg4MDU_2003c41f-08f6-4ff1-b89e-29c448d5f6d5">137,455</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMy0xLTEtMjg4MDU_6649c90f-e47e-48d5-8a82-903add648926">285,172</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtNS0xLTEtMjg4MDU_e8b61776-2d89-4f19-a967-5bf28525c36e">181,712</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtNy0xLTEtMjg4MDU_62d714dc-1fbb-446a-8b6f-21f158a531e7">73,515</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;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-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtOS0xLTEtMjg4MDU_edee9a86-a6d3-4876-a82b-1b986d06ee3d">43,349</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMTMtMS0xLTI4ODA1_2aa8bf68-b9cd-4030-8e4d-e6a318cd1c00">721,203</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_118"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 5:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:InventoryDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzQwMQ_2090da37-f376-4dfa-b0b6-668f2913a97d" continuedAt="ia206a8f20496415f8bc3855ebf7d812d" escape="true">Inventories</ix:nonNumeric></span></div><ix:continuation id="ia206a8f20496415f8bc3855ebf7d812d" continuedAt="ibb0800a2290f4adf9dc4c24f2fc1811f"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfInventoryCurrentTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzM5OQ_195bb782-05d6-4fb4-a086-9dc30a40a10b" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventories consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:70.935%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.516%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.517%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></div></td><td colspan="9" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Raw materials</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:InventoryRawMaterialsNetOfReserves" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzItMS0xLTEtMjg4MDU_362960b2-a0e5-4497-abaa-0148321c8ef3">50,452</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:InventoryRawMaterialsNetOfReserves" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzItMy0xLTEtMjg4MDU_4daaeb74-f846-4040-84f0-25bfd76c41d7">26,800</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Work-in-process</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:InventoryWorkInProcessNetOfReserves" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzMtMS0xLTEtMjg4MDU_543e365e-5ee2-4f6f-9b1d-58ecc70ee672">5,293</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:InventoryWorkInProcessNetOfReserves" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzMtMy0xLTEtMjg4MDU_5a9e49ea-f726-4d74-9dc9-a4de707b7efa">4,780</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Finished goods</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:InventoryFinishedGoodsNetOfReserves" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzQtMS0xLTEtMjg4MDU_f5453093-c3f5-41c0-8702-2f116ae119b8">57,357</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:InventoryFinishedGoodsNetOfReserves" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzQtMy0xLTEtMjg4MDU_63fc365f-aa7e-4435-ae85-4885cc442822">29,250</ix:nonFraction>&#160;</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:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:InventoryNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzUtMS0xLTEtMjg4MDU_921c1ca8-02ea-4a71-be4b-3eb52de9ef65">113,102</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:InventoryNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzUtMy0xLTEtMjg4MDU_cd078009-c1ec-443f-a145-ce7fb916cb42">60,830</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric></ix:continuation><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"><ix:continuation id="ibb0800a2290f4adf9dc4c24f2fc1811f">The Company recorded provisions for excess and obsolete inventories of $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="cgnx:ExcessAndObsoleteInventoryCharges" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzE1NQ_d93f5058-b887-4330-8c10-9a32e1263e4c">2,573,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="cgnx:ExcessAndObsoleteInventoryCharges" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzE2Mg_211bb1e2-e02f-4cf4-8c01-62a6a1ea810b">9,908,000</ix:nonFraction> in 2021 and 2020, respectively, which reduced the carrying value of the inventories to their net realizable value. The higher provisions in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.</ix:continuation> </span></div><div><span><br/></span></div><div id="i929e97f6a142453c8a8057dbb6451118_121"></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 6:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzcxNw_106c5e35-8e13-411f-87bc-c1421d43bdf7" continuedAt="i04842e37ad4846a7adc275decbda682b" escape="true">Property, Plant, and Equipment</ix:nonNumeric></span></div><ix:continuation id="i04842e37ad4846a7adc275decbda682b" continuedAt="i72f0c1f4d4cf46f79ef0bc19088f5e03"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:PropertyPlantAndEquipmentTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzcyMQ_7a7898ac-2608-4781-a40d-dd3d81ad1739" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property, plant, and equipment consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:70.935%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.516%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.517%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Land</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id5d7726e056e4214aa7f49e065353761_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzItMS0xLTEtMjg4MDU_a92daba6-3159-40bc-ab03-a05abde88673">3,951</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i64fc80d231e947aa9bf222b2de427dac_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzItMy0xLTEtMjg4MDU_2dc5d592-4f23-4bdb-b62a-4903c10b4fb9">3,951</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Buildings</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8bbd57d8b5e24e379260a83a26e0335d_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzMtMS0xLTEtMjg4MDU_89ed991e-254a-4926-91e0-40cd4dcc0435">24,533</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6c11c5f296d94cb8b215d81fb2599862_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzMtMy0xLTEtMjg4MDU_d2a5f81d-8bbb-498c-b0a2-b66a4e31d7d5">24,533</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Building improvements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i941a6d85ef5e4db6887a4477c54ad5ec_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzQtMS0xLTEtMjg4MDU_0ed0c8fe-ec2b-4d81-829d-3ebc06921f22">47,886</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iaa0e107732624743b8b9116c079cf534_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzQtMy0xLTEtMjg4MDU_e84b473e-9634-484e-beba-e1d9662b251b">45,978</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Leasehold improvements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ifa4fc42921044fb2acd09f06fc702f0e_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzUtMS0xLTEtMjg4MDU_4932d8c7-8b47-4b57-851b-b6159ad29fb0">10,436</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i783fdc7f101e437ca76e266767bbed79_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzUtMy0xLTEtMjg4MDU_b174e8d0-99e3-45e4-99b9-b6b4de227a6c">12,682</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Computer hardware and software</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i93a793acd6604354bfdeb7a098a7ab7c_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzYtMS0xLTEtMjg4MDU_612412be-08be-4743-8cff-1e1b6d14b4b6">50,748</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i82d6f2a16b9647c5a4153885f8b16d0f_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzYtMy0xLTEtMjg4MDU_3f149155-242c-4d33-9251-75c237e409d0">58,162</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Manufacturing test equipment</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i237f0e88a14e4c138cf770014c3cff20_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzctMS0xLTEtMjg4MDU_4388da7e-14a9-4266-a13c-4eb90970be82">30,562</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib4078ec246234f17861cbe7d06d41e4b_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzctMy0xLTEtMjg4MDU_3b3641e3-d713-4a3e-bf78-259db21323d3">29,816</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Furniture and fixtures</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i72196343338a4ad09f7dac2538d4ed3b_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzgtMS0xLTEtMjg4MDU_d5ffadfc-33c8-4e34-a394-888db9a0919c">6,449</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i22b7a4443157492c859ccb73ff921a37_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzgtMy0xLTEtMjg4MDU_5777a430-bfa4-4e97-af5f-0c8ede204bd7">6,372</ix:nonFraction>&#160;</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:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzktMS0xLTEtMjg4MDU_edfa9659-cbb9-4bd1-b75b-d2fa87c85ad0">174,565</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzktMy0xLTEtMjg4MDU_ade19d7c-a59e-40cb-b2ad-4ed75cfb27d5">181,494</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Less: accumulated depreciation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzEwLTEtMS0xLTI4ODA1_e914058d-dbf9-4604-af63-064067d53eb7">97,019</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzEwLTMtMS0xLTI4ODA1_e831e4e2-b0ca-4295-8805-7d686b7a77bb">102,321</ix:nonFraction>)</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:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzExLTEtMS0xLTI4ODA1_a899c9d8-8ef5-4267-87bc-76de2a67e9e4">77,546</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzExLTMtMS0xLTI4ODA1_2d3379b4-1aa5-44a1-846d-a063d877b676">79,173</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">50</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i72f0c1f4d4cf46f79ef0bc19088f5e03">The Company disposed of property, plant, and equipment with a cost basis of $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentDisposals" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzE5Ng_3498cd67-7d2c-4387-b6c2-800f7d65fb24">20,647,000</ix:nonFraction> and accumulated depreciation of $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzIzMQ_d5fe4fce-acce-4a72-bf44-0614f09e7acf">20,614,000</ix:nonFraction> in 2021, resulting in a loss of $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:GainLossOnDispositionOfAssets1" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzI2Ng_b01b9f51-b958-4d80-87b4-b6de4fb36cc3">33,000</ix:nonFraction>. The Company disposed of property, plant, and equipment with a cost basis of $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:PropertyPlantAndEquipmentDisposals" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzQ0Ng_b057d24c-6439-4589-8984-7f1e85f823dc">26,829,000</ix:nonFraction> and accumulated depreciation of $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzQ4MQ_5f57d2d8-a6ef-4e41-b403-f2850d6b770d">24,977,000</ix:nonFraction> in 2020, resulting in a loss of $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:GainLossOnDispositionOfAssets1" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzUxNg_04126adc-ba59-4cb4-a188-385316aa1b9c">1,852,000</ix:nonFraction>. Disposals in 2020 included leasehold improvements and other assets associated with office closures as a part of the Company's 2020 restructuring plan (refer to Note 22).</ix:continuation> </span></div><div id="i929e97f6a142453c8a8057dbb6451118_127"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 7:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:OperatingLeasesOfLessorDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzMyMzA_5d3e1aa3-6cc7-4495-a274-bd3763772e91" continuedAt="ia16149a439624a5281872fe478bd8ddb" escape="true">Leases</ix:nonNumeric></span></div><ix:continuation id="ia16149a439624a5281872fe478bd8ddb" continuedAt="i51dbefed1a584134b16966d5de0b202e"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's leases are primarily leased properties across different worldwide locations where the Company conducts its operations. All of these leases are classified as operating leases. Certain leases may contain options to extend or terminate the lease at the Company's sole discretion. </span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, there were no options to terminate that were accounted for in the determination of the lease term for outstanding leases, and one option to extend that was accounted for in the determination of the lease term for one of the Company's outstanding leases. As of December 31, 2020, there was one option to terminate that was accounted for in the determination of the lease term for one of the Company's outstanding leases, and no options to extend that were accounted for in the determination of the lease term for outstanding leases. Certain leases contain leasehold improvement incentives, retirement obligations, escalating clauses, rent holidays, and variable payments tied to a consumer price index. There were no restrictions or covenants for the outstanding leases as of December 31, 2021 or 2020.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The total operating lease expense was $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:OperatingLeaseExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYxOTI_aee0995f-fb63-4495-8f60-a6175643a2e2"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OperatingLeaseExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYxOTI_bc5e8d0a-a7df-4875-8b56-d1d60655ef25">8,180,000</ix:nonFraction></ix:nonFraction> in both 2021 and 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OperatingLeaseExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzgxOTg_50996761-5536-46aa-969f-61d39c527ebf">6,893,000</ix:nonFraction> in 2019. The total operating lease cash payments were $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:OperatingLeasePayments" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYyMDQ_1c26ab40-92c7-482e-adc9-28a78e899f35">8,225,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OperatingLeasePayments" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYyMTU_2072c3f4-6980-41c1-85f9-8494f6e2bbf0">8,009,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OperatingLeasePayments" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzgyMzQ_10688617-b36b-4dbc-9cc2-3a9156e09c52">6,530,000</ix:nonFraction> in 2021, 2020, and 2019, respectively. The total lease expense for leases with a term of twelve months or less for which the Company elected not to recognize a lease asset or lease liability was $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEzNjU_cd2e678e-dfa0-41b4-a0ab-c1bbb00396e1">154,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEzNzI_cbe10a65-6abe-4e42-9858-7856c6add09b">123,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDU4NTU_38ffdea0-fc79-40e6-956e-9c7ad506000f">275,000</ix:nonFraction> in 2021, 2020, and 2019, respectively.</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzMyMjc_6a13b40e-3f4e-4226-af24-68035304165a" escape="true"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Future operating lease cash payments are as follows (in thousands):</span></div><div style="margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:82.648%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.728%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.224%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">Year Ended December&#160;31,</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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Amount </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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzEtMi0xLTEtMjg4MDU_76a8a229-d5a6-4f58-b461-ac6083e610e2">8,508</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2023</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzItMi0xLTEtMjg4MDU_591f1430-6274-4568-8f09-2749566faf7e">6,883</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzMtMi0xLTEtMjg4MDU_7f146e50-75c6-484b-a089-4e7167b860ca">3,842</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2025</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzQtMi0xLTEtMjg4MDU_3aeef98e-4bc2-4416-8739-53fe1f06d0bd">2,081</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2026</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzUtMi0xLTEtMjg4MDU_7ed047bf-caba-4a0c-b9c7-29bc3a204caa">1,346</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Thereafter</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzYtMi0xLTEtMjg4MDU_0e439078-78e2-45f3-8ad2-fe766a7ee808">5,069</ix:nonFraction>&#160;</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:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzctMi0xLTEtMjg4MDU_38b85afa-2151-4d77-9c6b-2d65ccc419a3">27,729</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The discounted present value of the future lease cash payments resulted in a lease liability of $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:OperatingLeaseLiability" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2MDY_07bad96c-34c7-4703-b0e2-f41d34aab86d">25,581,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:OperatingLeaseLiability" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2MTM_b8137e3e-4b6a-41c0-8871-99f85a542939">26,230,000</ix:nonFraction> as of December 31, 2021 and 2020, respectively. </span></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In December 2021, the Company entered into a lease for a 65,000 square-foot building in Southborough, Massachusetts for a term of ten years to serve as a new distribution center for customers in the Americas. The transition of the current distribution center to the new Southborough facility is expected to take place during the first half of 2022. The Company will have the right and option to extend the term of this lease for an additional period of five years, commencing upon the expiration of the original ten-year term. As of December 31, 2021, this lease had not yet commenced, and therefore was not yet recorded on the Consolidated Balance Sheets, nor did it create any significant rights and obligations. Future payment obligations associated with this lease, which are not included in the future operating lease cash payments table above, total $<ix:nonFraction unitRef="usd" contextRef="i9680e81eb9994576b1c178a64360acd9_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2Mzc4MTk_97ceec66-ed6e-4e2c-bdc3-50f1002273dc">10,239,000</ix:nonFraction>, of which $<ix:nonFraction unitRef="usd" contextRef="i9680e81eb9994576b1c178a64360acd9_I20211231" decimals="-3" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2Mzc4MzY_1973f0c3-8df8-4ffd-bdc5-e88fc7dfbf9c">670,000</ix:nonFraction> is payable in 2022. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020.</span></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The weighted-average discount rate was <ix:nonFraction unitRef="number" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="3" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE4NDM_6b5b09be-57d8-4b71-920b-4e2a4e931996">3.4</ix:nonFraction>% and <ix:nonFraction unitRef="number" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="3" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE4NTA_0a1238a2-15d2-4c9d-9e15-37e09681b244">4.0</ix:nonFraction>% for the leases outstanding as of December 31, 2021 and December 31, 2020, respectively. The weighted-average remaining lease term was <ix:nonNumeric contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE5NzA_83748d2d-d3e6-47e5-9500-e0cff3cfee9e"><ix:nonNumeric contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE5NzA_d83a9a98-8505-43b3-9b3e-a1700fd90765">5.1</ix:nonNumeric></ix:nonNumeric> years for the leases outstanding as of both December 31, 2021 and 2020, respectively.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management closed eleven leased offices in 2020, prior to the end of their lease terms, as a part of a restructuring plan (refer to Note 22). The carrying value of the lease assets associated with these offices was reduced to <ix:nonFraction unitRef="usd" contextRef="ic0eb9a7570944c1ab9168006bb2aa1e2_I20200628" decimals="-3" name="cgnx:OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzIyOTM_26b8980d-a55e-4281-8bbc-99e667d14f07">zero</ix:nonFraction>, resulting in operating lease asset impairment charges of $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OperatingLeaseImpairmentLoss" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzIzNTQ_630deb3f-1183-46b2-ae1a-ec8a3b8d0cca">3,427,000</ix:nonFraction> in 2020 that are included in "Restructuring </span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">51</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i51dbefed1a584134b16966d5de0b202e" continuedAt="id1825b18f394454b8d7c93cd7bf60857">charges" on the Consolidated Statements of Operations. Remaining lease liability obligations associated with the early contract terminations totaled $<ix:nonFraction unitRef="usd" contextRef="i955fae1ce0f246f2a6383d7e4314f3aa_I20211231" decimals="-3" name="us-gaap:OperatingLeaseLiability" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY0NzQ_3cf1e676-c963-4e59-863d-518840a48e15">1,717,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="idaa85ffc8fe24348a2c3c89ee7ee05da_I20201231" decimals="-3" name="us-gaap:OperatingLeaseLiability" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzI2MjE_9419ae6f-9806-464b-a111-65b73cee6f46">2,877,000</ix:nonFraction> as of December 31, 2021 and 2020, respectively, and are included in "Operating lease liabilities" on the Consolidated Balance Sheets. The Company did not record impairment charges related to operating lease assets in 2021 or 2019.</ix:continuation></span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="id1825b18f394454b8d7c93cd7bf60857">The Company owns a building adjacent to its corporate headquarters that was partially occupied by a tenant during a portion of 2020, and for the entirety of 2019. This lease terminated prior to the end of its lease term during the second quarter of 2020, and the Company is now fully occupying this building for its operations. Annual rental income totaled $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:OperatingLeaseLeaseIncome" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY1MzM_e88c1b21-d43f-417d-bde9-ae807c0bad48">77,000</ix:nonFraction> in 2020 and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:OperatingLeaseLeaseIncome" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY1NTU_aefd855d-9111-4b0c-a074-81b77391f205">311,000</ix:nonFraction> in 2019.</ix:continuation> </span></div><div id="i929e97f6a142453c8a8057dbb6451118_130"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 8:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:GoodwillDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90ZXh0cmVnaW9uOmIyYzRmYmMzOTQwNzRmOGQ5M2EyZTdmYzA4YTE5MmExXzE0MDQ_fc9a1149-72dd-4abe-b935-441ddd0d7026" continuedAt="i58b8b0585c2e44ef8b4f0f1bbcc74506" escape="true">Goodwill</ix:nonNumeric></span></div><ix:continuation id="i58b8b0585c2e44ef8b4f0f1bbcc74506"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfGoodwillTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90ZXh0cmVnaW9uOmIyYzRmYmMzOTQwNzRmOGQ5M2EyZTdmYzA4YTE5MmExXzE0MDE_613172ed-56b3-4da8-a204-deb08605e95c" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the carrying value of goodwill were as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:83.380%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.688%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></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:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:Goodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzEtMi0xLTEtMjg4MDU_73899dd2-7e12-4639-9cde-f0a0cfeaf928">243,445</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><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="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sualab Co., Ltd. purchase price adjustment (refer to Note 21)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i30b6dbba7a294a05a1de3af16074b12b_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:GoodwillOtherIncreaseDecrease" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzMtMi0xLTEtMzAxMDE_f8e8c355-ccb1-4a0a-9f55-a1160dea3659">1,004</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:GoodwillForeignCurrencyTranslationGainLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzMtMi0xLTEtMjg4MDU_b584fccb-3680-49ee-8963-e2fc51c0043d">1,637</ix:nonFraction>&#160;</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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:Goodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzUtMi0xLTEtMjg4MDU_38eb8b3e-f826-473d-8b67-983c1cf22bb8">244,078</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><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="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:GoodwillForeignCurrencyTranslationGainLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzctMi0xLTEtMjg4MDU_c3eaeff6-723c-4d61-92fb-5370fcc4cddb">2,365</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:Goodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzgtMi0xLTEtMjg4MDU_f616ef16-adac-41c3-ba65-308fdbfa34bc">241,713</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For its 2021 annual analysis of goodwill, management elected to perform a qualitative assessment. Based on this assessment, management believes it is more likely than not that the fair value of the reporting unit exceeds its carrying value. The Company did not record impairment charges related to goodwill in 2021, 2020, or 2019.</span></div></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_133"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 9:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:IntangibleAssetsDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwNzk_65b47c84-b5a8-49ba-ab2a-770b993db98a" continuedAt="ifeb4ed1d77ba4bdda345fa466def7236" escape="true">Intangible Assets</ix:nonNumeric></span></div><ix:continuation id="ifeb4ed1d77ba4bdda345fa466def7236" continuedAt="ifd89e81369cd457aa49487dbb0a9d295"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwODA_45057871-67d8-42e8-b50a-3c6985d38da3" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:51.176%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.318%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.318%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.320%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Value</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Accumulated<br/>Amortization</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Net<br/>Carrying<br/>Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Distribution networks</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtMS0xLTEtMjg4MDU_40590751-1db4-45c8-957c-3de5d167fdd8">38,060</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtMy0xLTEtMjg4MDU_74705fbf-e234-4806-983e-41076fdb6a77">38,060</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtNS0xLTEtMjg4MDU_2ddadbda-211b-4a3b-8014-fe97bf500497">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Completed technologies</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i79c23c3a546a49569d45604d210eade1_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItMS0xLTEtMjg4MDU_2f66ccfb-0859-4328-ba08-466dea5d8b77">24,217</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i79c23c3a546a49569d45604d210eade1_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItMy0xLTEtMjg4MDU_b89cdf7c-5369-4ea7-999a-f50ffef1e64d">15,234</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i79c23c3a546a49569d45604d210eade1_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItNS0xLTEtMjg4MDU_b74b4b78-2424-4c85-8684-d15f50f12eb2">8,983</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtMS0xLTEtMjg4MDU_1b400925-a9c5-41fa-9fc9-d33a805ea721">10,578</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtMy0xLTEtMjg4MDU_5d7f8671-c240-4ac0-9fd4-38dd90014648">7,891</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtNS0xLTEtMjg4MDU_f50e0f88-8b4d-49ce-84f1-38ed703c39b0">2,687</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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="display:none"></td><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-compete agreements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtMS0xLTEtMjg4MDU_017d16b4-9072-4519-b551-1fdb09f30a0e">710</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtMy0xLTEtMjg4MDU_d8329dcb-65fd-4f76-ac8d-8c8d32894dfb">492</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtNS0xLTEtMjg4MDU_f975f3bd-bb92-4b61-96d6-b3638c5edf7a">218</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Trademarks</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtMS0xLTEtMjg4MDU_65836a5e-237a-4176-bf66-76a91f02e14f">110</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtMy0xLTEtMjg4MDU_0969407f-8182-4359-91fc-4c8bca299afe">110</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtNS0xLTEtMjg4MDU_a6f7f650-6064-494a-aeef-c8b8afe033f3">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctMS0xLTEtMjg4MDU_f0280a96-f6a3-4714-b14f-de6a9db8bcad">73,675</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctMy0xLTEtMjg4MDU_303818b6-c412-4b07-9cb8-ee5abbc6c6d9">61,787</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:IntangibleAssetsNetIncludingGoodwill" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctNS0xLTEtMjg4MDU_1e4bb53e-688d-4072-bea2-82d505e6ba89">11,888</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:3pt double #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:3pt double #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:3pt double #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Value</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Accumulated<br/>Amortization</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Net<br/>Carrying<br/>Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Distribution networks</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTEtMS0xLTI4ODA1_01dfc9a1-ed18-49ed-91f3-b86f10686f8f">38,060</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTMtMS0xLTI4ODA1_7b77c409-5f18-4fee-b6bf-c4a5a076269a">38,060</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTUtMS0xLTI4ODA1_848796e7-d599-4aef-9f3a-0d18e3138b44">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Completed technologies</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if1cc1bfb37c149759d1841760856c173_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTEtMS0xLTI4ODA1_6d46cd26-b11d-47ec-9ca5-3374e576731e">24,217</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if1cc1bfb37c149759d1841760856c173_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTMtMS0xLTI4ODA1_7b422589-d8be-46d8-9c18-66c96e32f2d6">12,397</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if1cc1bfb37c149759d1841760856c173_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTUtMS0xLTI4ODA1_1cc67b1a-40e8-4ec5-bf3f-e6c1c9403d30">11,820</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTEtMS0xLTI4ODA1_acc1088c-9c7f-4d7c-a27b-06a4b3667ac3">10,578</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTMtMS0xLTI4ODA1_38482000-f0d7-4055-9599-79b7b85df637">7,160</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTUtMS0xLTI4ODA1_578214a9-ff50-436f-b369-48714da16166">3,418</ix:nonFraction>&#160;</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="display:none"></td><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-compete agreements</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTEtMS0xLTI4ODA1_334fba67-b908-4780-83ea-331f2c6b2a14">710</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTMtMS0xLTI4ODA1_deaf0964-01f9-48e2-8e8b-0c020cd11ff2">436</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTUtMS0xLTI4ODA1_dc4f9955-e6ae-4263-a301-035dda3b8d1e">274</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Trademarks</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTEtMS0xLTI4ODA1_49ffe7e3-6c98-42e1-b8f3-cc0af6e3c884">110</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTMtMS0xLTI4ODA1_893fdf00-c2da-4eb4-a2a3-4cf5d38d55fa">67</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTUtMS0xLTI4ODA1_5292ece9-319a-488a-ab36-ac5ed195d334">43</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTEtMS0xLTI4ODA1_beb2d2be-5221-484a-8192-9f2f0ac2faa8">73,675</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTMtMS0xLTI4ODA1_e955401b-bf98-43ba-b048-3d05128d1108">58,120</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTUtMS0xLTI4ODA1_10327e9c-e38c-40e3-a439-435f0ab1af79">15,555</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The adverse impact of the COVID-19 pandemic on our business in 2020 triggered a review of long-lived assets, including intangible assets, for potential impairment during the second quarter of 2020. Based on this assessment, management concluded that certain of the Company's finite-lived intangible assets failed the recoverability test, and recorded impairment charges for these assets equal to the amount by which their carrying value exceeded their fair value. The Company also measured the fair value and recorded an impairment charge for its indefinite-lived intangible asset related to in-process technologies. The fair values were established, with the assistance of an outside valuation advisor, using the income approach based on a discounted cash flow model that estimated future revenue streams and expenses attributable to those revenue streams provided by management.</span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">52</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="ifd89e81369cd457aa49487dbb0a9d295"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">This review resulted in intangible asset impairment charges totaling $<ix:nonFraction unitRef="usd" contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzEwMzc_f18dc054-73ea-4a92-b4ab-34859881e23e">19,571,000</ix:nonFraction> in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab Co. Ltd. ("Sualab") as a result of the deteriorating global economic conditions from the COVID-19 pandemic. Completed technologies, in-process technologies, and customer relationships acquired from Sualab were impaired in the amounts of $<ix:nonFraction unitRef="usd" contextRef="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0MjY_d9f130a9-401e-46f3-95cb-ef777d6c1f51">10,070,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0MzA_43329db6-618e-4ce9-b01a-daf02fb30f2b">5,900,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0Mzg_0a145e11-dd7a-47dd-b147-ca94007fe27f">3,382,000</ix:nonFraction>, respectively. In addition, customer relationships acquired from EnShape GmbH that had a gross carrying value of $<ix:nonFraction unitRef="usd" contextRef="ib58b9b72d04944dca738439418889e81_I20200526" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE1NTQ_36c13a9d-4b8b-4d01-a629-868ccb93fe23">447,000</ix:nonFraction> and accumulated amortization of $<ix:nonFraction unitRef="usd" contextRef="ib58b9b72d04944dca738439418889e81_I20200526" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE1ODk_f405ccb0-132f-42f8-b522-2e7c3863ef8b">228,000</ix:nonFraction> on the measurement date were reduced to <ix:nonFraction unitRef="usd" contextRef="i632328a9aece45169ee9a65a27b7de43_I20200628" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" format="ixt:fixed-zero" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE2MzI_f1617cbf-18b4-4a9d-bac0-efc7a23a16af">zero</ix:nonFraction>, resulting in an impairment charge of $<ix:nonFraction unitRef="usd" contextRef="i868c84ba01b343969f185bfae762ea09_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE2NzM_7144fba9-2182-41df-8b9f-13c458bb09dc">219,000</ix:nonFraction>. The Company did not record impairment charges related to intangible assets in 2021 or 2019.</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwODI_5c2dbb57-ba1b-49ba-bc2d-0e65c5b02264" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Estimated amortization expense for each of the five succeeding fiscal years and thereafter is as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:81.623%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.445%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Year Ended December&#160;31,</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzEtMi0xLTEtMjg4MDU_ccefed9c-25dd-443d-92ee-06c5b2b4d866">3,275</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2023</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzItMi0xLTEtMjg4MDU_5e3b8165-e48c-4a99-85e0-3cf487d2c267">2,594</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzMtMi0xLTEtMjg4MDU_0968c85a-b5aa-4058-9dab-61f0f23dda28">2,080</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2025</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzQtMi0xLTEtMjg4MDU_39732aa3-7790-421d-ab29-5fb9673c0a79">1,757</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2026</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzUtMi0xLTEtMjg4MDU_27a7c362-130f-4fd8-a5e9-2f18ed690327">1,452</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Thereafter</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzYtMi0xLTEtMjg4MDU_b057110e-c8f4-43c7-ab0d-9202d9aefc62">730</ix:nonFraction>&#160;</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:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzctMi0xLTEtMjg4MDU_7d2c7a16-4938-4646-9d62-38523127c783">11,888</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_136"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 10:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE2Nw_81e016a8-2000-4986-94aa-39a122194531" continuedAt="ie561059df2b14ec18ed0f8d360b641c4" escape="true">Accrued Expenses</ix:nonNumeric></span></div><ix:continuation id="ie561059df2b14ec18ed0f8d360b641c4"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE2OQ_911b827c-4529-4df2-bd15-8c618f7a641a" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accrued expenses consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:64.002%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.908%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.057%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</span></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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Incentive compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccruedBonusesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzItMS0xLTEtMjg4MDU_d4f30770-ab94-4b36-b27e-bedbd93446b6">37,917</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccruedBonusesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzItMy0xLTEtMjg4MDU_6d6947fc-1158-4cda-aa3e-e82fa7451edf">28,935</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Salaries and payroll taxes</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccruedSalariesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzMtMS0xLTEtMjg4MDU_d139d362-158f-4b18-afe1-5332b4332738">8,519</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccruedSalariesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzMtMy0xLTEtMjg4MDU_9a4c379e-6bac-4c8e-b4e4-a4ee41be0299">7,911</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign retirement obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:RetirementAllowance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzQtMS0xLTEtMjg4MDU_442b14c1-899c-41f7-806f-c50f0c881ce3">7,572</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:RetirementAllowance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzQtMy0xLTEtMjg4MDU_481acf88-9c59-4be5-a1f8-9199307f02a9">6,886</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrualClassifiedCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzUtMS0xLTEtMjg4MDU_1248b834-aa76-4aeb-9c19-1164b1a81882">5,427</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:ProductWarrantyAccrualClassifiedCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzUtMy0xLTEtMjg4MDU_86ae142e-32f1-426f-9f75-08f8bdec638f">5,406</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Vacation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccruedVacationCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzYtMS0xLTEtMjg4MDU_931f6150-55d4-4afc-9a0f-49ef23a54825">4,686</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccruedVacationCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzYtMy0xLTEtMjg4MDU_219ff97b-1cb2-4669-aca2-12c53ee1ed37">3,641</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:OtherAccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzctMS0xLTEtMjg4MDU_23c6cabd-9e1c-4de4-9d12-d99d95300a2d">28,311</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:OtherAccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzctMy0xLTEtMjg4MDU_d723fdf7-5f2b-4ae8-9a86-5ed851fb9628">24,485</ix:nonFraction>&#160;</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:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzgtMS0xLTEtMjg4MDU_4b18a828-9387-41a6-89e0-d6061c6af802">92,432</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AccruedLiabilitiesCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzgtMy0xLTEtMjg4MDU_f3fb8080-e50b-4a5f-bf88-a7f08269295a">77,264</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE3Mg_8f584d85-f1de-4c71-ba85-00fc99068759" escape="true"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the warranty obligation were as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:81.209%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.591%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzEtMS0xLTEtMjg4MDU_6c5b2bb9-5fa5-46a0-90d1-38bbbffbcb92">4,713</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Provisions for warranties issued during the period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ProductWarrantyAccrualWarrantiesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzItMS0xLTEtMjg4MDU_f7cb0ab1-84a7-4603-86c3-0e2a6314d7aa">3,463</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fulfillment of warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ProductWarrantyAccrualPayments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzMtMS0xLTEtMjg4MDU_5fecd4a0-9c44-4c57-b65a-a0acb7c6c153">2,770</ix:nonFraction>)</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="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzUtMS0xLTEtMjg4MDU_11662342-7a61-476c-abaf-7962dbb7d0a4">5,406</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Provisions for warranties issued during the period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrualWarrantiesIssued" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzYtMS0xLTEtMjg4MDU_6b30986c-8d67-4be2-a107-d3399dd35656">3,256</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fulfillment of warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrualPayments" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzctMS0xLTEtMjg4MDU_f6859de1-3c3d-4e10-8e0a-39637dacfab8">3,235</ix:nonFraction>)</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="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ProductWarrantyAccrual" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzktMS0xLTEtMjg4MDU_92db4524-c5e7-4ad1-8e7f-b90fb4f1d390">5,427</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_139"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 11:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:CommitmentsAndContingenciesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzY3Nw_8767f61b-e7c6-4ff9-bc13-97b2d3a387c1" continuedAt="ied73c98fb08948468034762a62a1a023" escape="true">Commitments and Contingencies</ix:nonNumeric></span></div><ix:continuation id="ied73c98fb08948468034762a62a1a023" continuedAt="i96be8805545e4659b2d502f4b5bf09f7"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2021, the Company had outstanding purchase orders totaling $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwNw_d527a1f1-f18d-4092-a512-7f7d02f40809">100,750,000</ix:nonFraction> to procure inventory from various vendors, due in part to higher inventory purchases in response to global supply chain constraints. Certain of these purchase orders may be canceled by the Company, subject to cancellation penalties. These purchase commitments relate primarily to expected sales in 2022.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A significant portion of the Company's outstanding inventory purchase orders as of December&#160;31, 2021, as well as additional preauthorized commitments to procure strategic components based on the Company's expected customer demand, are placed with the Company's primary contract manufacturer for the Company's assembled products. The Company has the obligation to purchase any non-cancelable and non-returnable components that have been purchased by this contract manufacturer with the Company's preauthorization, when these components </span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">53</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i96be8805545e4659b2d502f4b5bf09f7"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">have not been consumed within the period defined in the terms of the Company's agreement with this contract manufacturer. As a result of the terms of this agreement, the Company has purchased $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:OtherInventoryPurchasedGoods" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3MTk_218caec8-a204-467a-867f-42b04be9a95b">19,448,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:OtherInventoryPurchasedGoods" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3MzI_a2896703-6f4f-41a5-b1d9-9e14b5a774be">4,291,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:OtherInventoryPurchasedGoods" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3NDQ_1dd49c4e-b9bb-4fda-9ab5-a1bd020c4b70">3,700,000</ix:nonFraction> of inventory in 2021, 2020, and 2019, respectively, prior to the components being consumed by the contract manufacturer to produce the Company's assembled products. While the Company typically expects such purchased components to be used in future production of Cognex finished goods, these components are considered in the Company's reserve estimate for excess and obsolete inventory. Furthermore, the Company accrues for losses on commitments for the future purchase of non-cancelable and non-returnable components from this contract manufacturer at the time that circumstances, such as changes in demand, indicate that the value of the components may not be recoverable, the loss is probable, and management has the ability to reasonably estimate the amount of the loss.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Various claims and legal proceedings generally incidental to the normal course of business are pending or threatened on behalf of or against the Company. While we cannot predict the outcome of these matters, we believe that any liability arising from them will not have a material adverse effect on our financial position, liquidity, or results of operations.</span></div></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_145"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 12:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="cgnx:IndemnificationProvisionsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDUvZnJhZzo3YjIwZTU4Y2UyYjg0NTI1YTg3OGRmZjFkOWU1ZDhmNy90ZXh0cmVnaW9uOjdiMjBlNThjZTJiODQ1MjVhODc4ZGZmMWQ5ZTVkOGY3XzIzOTM_1d3e8448-7910-44af-9cae-4e416aa403f5" continuedAt="iad363666ccaa4aad84c55382d6404f2c" escape="true">Indemnification Provisions</ix:nonNumeric></span></div><ix:continuation id="iad363666ccaa4aad84c55382d6404f2c" continuedAt="i645ec7b30d004fdd9315d0ff969ee846"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Except as limited by Massachusetts law, the by-laws of the Company require it to indemnify certain current or former directors, officers, and employees of the Company against expenses incurred by them in connection with each proceeding in which he or she is involved as a result of serving or having served in certain capacities. Indemnification is not available with respect to a proceeding as to which it has been adjudicated that the person did not act in good faith in the reasonable belief that the action was in the best interests of the Company. The maximum potential amount of future payments the Company could be required to make under these provisions is unlimited. The Company has never incurred significant costs related to these indemnification provisions. As a result, the Company believes the estimated fair value of these provisions is not material.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In the ordinary course of business, the Company may accept standard limited indemnification provisions in connection with the sale of its products, whereby it indemnifies its customers for certain direct damages incurred in connection with third-party patent or other intellectual property infringement claims with respect to the use of the Company&#8217;s products. The maximum potential amount of future payments the Company could be required to make under these provisions is generally subject to fixed monetary limits. The Company has never incurred significant costs to defend lawsuits or settle claims related to these indemnification provisions. As a result, the Company believes the estimated fair value of these provisions is not material.</span></div></ix:continuation><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i645ec7b30d004fdd9315d0ff969ee846">In the ordinary course of business, the Company also accepts limited indemnification provisions from time to time, whereby it indemnifies customers for certain direct damages incurred in connection with bodily injury and property damage arising from the use of the Company&#8217;s products. The maximum potential amount of future payments the Company could be required to make under these provisions is generally limited and is likely recoverable under the Company&#8217;s insurance policies. As a result of this coverage, and the fact that the Company has never incurred significant costs to defend lawsuits or settle claims related to these indemnification provisions, the Company believes the estimated fair value of these provisions is not material.</ix:continuation> </span></div><div id="i929e97f6a142453c8a8057dbb6451118_148"></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 13:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MjY_2f2036ff-e5b9-4a24-8482-d1a12454bf79" continuedAt="i6759a872251c47b7b37ad6d012b83cbb" escape="true">Derivative Instruments</ix:nonNumeric></span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i6759a872251c47b7b37ad6d012b83cbb" continuedAt="i03e100ea484242f09d5b0ff35598ea07">The Company&#8217;s foreign currency risk management strategy is principally designed to mitigate the potential financial impact of changes in the value of transactions and balances denominated in foreign currencies resulting from changes in foreign currency exchange rates. The Company enters into economic hedges utilizing foreign currency forward contracts with maturities of up to <ix:nonNumeric contextRef="i8403092ce78e46f287d80209e29e1af1_D20210101-20211231" name="us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1" format="ixt-sec:durday" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzQxNg_293183f3-17e1-4e6e-a201-451e4bcde74c">95</ix:nonNumeric> days to manage the exposure to fluctuations in foreign currency exchange rates arising primarily from foreign-denominated receivables and payables. The gains and losses on these derivatives are intended to be offset by the changes in the fair value of the assets and liabilities being hedged. These economic hedges are not designated as hedging instruments for hedge accounting treatment. </ix:continuation></span></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">54</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i03e100ea484242f09d5b0ff35598ea07"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzEzOTI_730e6bbb-dce5-4c03-8765-bf0d81d679f4" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company had the following outstanding forward contracts (in thousands): </span></div><div style="margin-top:10pt;text-align:justify"><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:47.291%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.765%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.180%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.180%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.354%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="6" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="6" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2020</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Currency</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Notional Value</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">USD Equivalent</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Notional Value</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">USD Equivalent</span></td></tr><tr style="height:9pt"><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="display:none"></td><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><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><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><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><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="18" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Euro</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="eur" contextRef="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTEtMS0xLTI4ODA1_e4a65144-894f-4c07-99d4-53855c493b89">65,000</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTItMS0xLTI4ODA1_fd2f7eda-417f-424f-bc09-63080ef9d7b8">73,748</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="eur" contextRef="i46b3383699f54592b7ede9d54961aeb6_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTQtMS0xLTI4ODA1_5b255012-d325-4cfc-b38d-1a317df24394">50,000</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i46b3383699f54592b7ede9d54961aeb6_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTUtMS0xLTI4ODA1_d72e1247-8c15-4c6b-9183-64f556f4b8e3">61,342</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Chinese Renminbi</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="cny" contextRef="i00459c765246439382160d7274b765d4_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTEtMS0xLTM0MTYy_8f584549-7540-4bfb-ad45-2aa77c0d3b4e">54,374</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i00459c765246439382160d7274b765d4_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTItMS0xLTM0MTYy_f5137f66-b31e-4895-92a4-0caffc9b2a75">8,500</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="cny" contextRef="ia68a5da34e724a81893bf9be3e413d8c_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTQtMS0xLTM0MTYy_a4228872-173a-4a63-a77a-8aa4afbc830a">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia68a5da34e724a81893bf9be3e413d8c_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTUtMS0xLTM0MTYy_22ca8d14-82e9-43e6-97ef-c974931b03c1">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Mexican Peso</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="mxn" contextRef="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTEtMS0xLTI4ODA1_89a3f154-9326-49d8-82c1-3ab282a03d6d">140,000</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTItMS0xLTI4ODA1_cd558b2d-ee9e-42f5-bd85-3dbd2ac47a65">6,842</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="mxn" contextRef="iad34d6812e224628aaf77d2b49448365_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTQtMS0xLTI4ODA1_7fd3f6da-615b-4d3b-9158-0ae1b5e795d2">155,000</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iad34d6812e224628aaf77d2b49448365_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTUtMS0xLTI4ODA1_4b89776b-a1ce-4b55-9c33-31bf763e2aa5">7,776</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Japanese Yen</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="jpy" contextRef="ia4ac27b77f9347d59de048dc447103ab_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTEtMS0xLTI4ODA1_04e7eb3b-1afd-4f15-9f8a-ac4d630593c9">600,000</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia4ac27b77f9347d59de048dc447103ab_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTItMS0xLTI4ODA1_ce80e4d0-3d7c-40b0-a439-b24fb0e57ddc">5,213</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="jpy" contextRef="i93ebcd0f4d05432abddab316785497af_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTQtMS0xLTI4ODA1_883f7909-8bc1-44f0-85f7-9593f5346f9a">600,000</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i93ebcd0f4d05432abddab316785497af_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTUtMS0xLTI4ODA1_0174aa99-ee9b-43e1-b152-72e3ada3018f">5,808</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">British Pound</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="gbp" contextRef="i71a8b16636c744088ae729b18fffb3af_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTEtMS0xLTM0MDM5_5719ae79-7c43-4208-a69e-36410f8a1746">3,370</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i71a8b16636c744088ae729b18fffb3af_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTItMS0xLTM0MDM5_b80d2e5e-d77c-49ad-a733-8a24e539de4b">4,552</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="gbp" contextRef="i233b3e65c4014824a116028552a33e6b_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTQtMS0xLTM0MDM5_af3f6841-2b6c-4c4b-af85-5bbf388894c8">1,675</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i233b3e65c4014824a116028552a33e6b_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTUtMS0xLTM0MDM5_dfa1e18d-f0e8-4079-9bf1-b2bafe95522a">2,287</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Hungarian Forint</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="huf" contextRef="i4c575fbed7374c838d828cf6cf30c79c_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTEtMS0xLTI4ODA1_c081db9d-6f61-4edd-9e18-adc75a5e1c78">1,355,000</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4c575fbed7374c838d828cf6cf30c79c_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTItMS0xLTI4ODA1_d00477da-b1c7-44c7-bb54-1e8aded286a0">4,155</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="huf" contextRef="i45f95c900587476f9a93fde30adfbaf1_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTQtMS0xLTI4ODA1_dabb8f56-a81b-431d-888c-38d73cda4e27">1,330,000</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i45f95c900587476f9a93fde30adfbaf1_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTUtMS0xLTI4ODA1_2094d454-0a66-4f61-a834-0a13df3d7a48">4,494</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Canadian Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="cad" contextRef="iccaf5fac85854bc78b3b41877b85ec45_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTEtMS0xLTI4ODA1_7e96c872-9481-4979-8fbb-99154db125b7">1,480</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iccaf5fac85854bc78b3b41877b85ec45_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTItMS0xLTI4ODA1_f6dff2bf-27bf-4525-a047-aa08e3302c10">1,167</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="cad" contextRef="iec122b031b4a4ca6b3633d5405753240_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTQtMS0xLTI4ODA1_ddde978d-9f1a-40cd-beaf-6cbcf724ad3d">1,285</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iec122b031b4a4ca6b3633d5405753240_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTUtMS0xLTI4ODA1_c44bf72c-f3b5-4dc6-924d-8085b11b31c6">1,010</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Korean Won</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="krw" contextRef="ibaaae7dc618d498782e79c903a2d481b_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTEtMS0xLTM0MDQ2_c2c3a189-379d-485a-abbb-4de6dbbcb3f9">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibaaae7dc618d498782e79c903a2d481b_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTItMS0xLTM0MDQ2_bb22115e-3db7-4b76-8755-5c636bfe61f5">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="krw" contextRef="i497d9d68981c44ebb35250193a714eb7_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTQtMS0xLTM0MDQ2_5fc2b09d-321e-403d-ab1b-889a940d51d4">6,925,000</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i497d9d68981c44ebb35250193a714eb7_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTUtMS0xLTM0MDQ2_561892f6-8b13-4026-827a-1554df877637">6,377</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Taiwanese Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="twd" contextRef="i00a64ebf1e97460399ab2caa80730e9b_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTEtMS0xLTI4ODA1_6e8a812c-e270-4fa0-bb52-2d09142220cc">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i00a64ebf1e97460399ab2caa80730e9b_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTItMS0xLTI4ODA1_c6560529-fed6-42ea-ac88-5ee17c351855">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="twd" contextRef="ia7422c5d263441d58ee5c68d7143fed0_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTQtMS0xLTI4ODA1_65b15d3a-e883-4d6b-9679-e67c54176e95">38,035</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia7422c5d263441d58ee5c68d7143fed0_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTUtMS0xLTI4ODA1_3c70c9b7-bff4-4c93-90f8-a37833112213">1,362</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Singapore Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="sgd" contextRef="if322716820c4489ab6cadd0ef3660c0a_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTEtMS0xLTI4ODA1_14cbbf01-ad5d-4a1e-895c-5d14dadb4fa9">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if322716820c4489ab6cadd0ef3660c0a_I20211231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTItMS0xLTI4ODA1_14109803-0389-46cc-bd44-fed5f7dc23f9">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="sgd" contextRef="i6c8355418cf24fdd81200d77b1ee46b9_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTQtMS0xLTI4ODA1_f6b73c61-76a5-4011-b803-a2a79b6aedb1">1,465</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6c8355418cf24fdd81200d77b1ee46b9_I20201231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTUtMS0xLTI4ODA1_9e23008e-0423-451c-b082-893524928e6d">1,110</ix:nonFraction>&#160;</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="display:none"></td><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><td colspan="3" style="display:none"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MDY_8a5fae9b-dc05-4dc5-a31f-17db875507fb" escape="true"><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information regarding the fair value of the outstanding forward contracts was as follows (in thousands):</span></div><div style="margin-top:10pt;text-align:justify"><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:15.274%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.204%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.788%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.350%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.888%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.788%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.358%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Asset Derivatives</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr style="height:14pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Balance<br/>Sheet  Location</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Balance<br/>Sheet   Location</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr style="height:24pt"><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;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</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;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</span></td></tr><tr><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><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><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="36" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9c4108ecbb154b9689e5bb60e97d0990_I20211231" decimals="-3" name="us-gaap:DerivativeAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtMy0xLTEtMjg4MDU_390c26f4-bfb0-44e7-92b9-2869422a93c5">39</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if647a88887404ad0929e10c5f5dee470_I20201231" decimals="-3" name="us-gaap:DerivativeAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtNS0xLTEtMjg4MDU_fbd2d05e-19f8-4138-bdba-7dead4f6b843">265</ix:nonFraction>&#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="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Accrued expenses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7b4846a2320b403d951b251fe43bd88b_I20211231" decimals="-3" name="us-gaap:DerivativeLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtOS0xLTEtMjg4MDU_09c253ab-8bb2-4e8a-ad3e-5625d6ac8cb8">230</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7d912f3d97904dfbba9ec1dc3cc1dfda_I20201231" decimals="-3" name="us-gaap:DerivativeLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtMTEtMS0xLTI4ODA1_d129df17-057e-47d8-b43f-889a7120cfcd">38</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:OffsettingAssetsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzEzOTU_2d7296f2-22d2-4afc-b4f4-7d7c25ed68b2" escape="true"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the gross activity for all derivative assets and liabilities which were presented on a net basis on the Consolidated Balance Sheets due to the right of offset with each counterparty (in thousands):</span></div><div style="margin-top:14pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:18.108%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.826%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.562%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.826%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.709%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.814%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.562%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.394%"></td><td style="width:0.1%"></td></tr><tr><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Asset Derivatives</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of recognized assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DerivativeFairValueOfDerivativeAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItMi0xLTEtMjg4MDU_272e10a0-f679-4f5a-b9f2-bda963605e08">39</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DerivativeFairValueOfDerivativeAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItNC0xLTEtMjg4MDU_c705f29c-eb75-4fad-9ad1-75682480d6cf">265</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of recognized liabilities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DerivativeFairValueOfDerivativeLiability" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItOC0xLTEtMjg4MDU_0e60717b-77dd-4357-8055-4868128b59ac">230</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DerivativeFairValueOfDerivativeLiability" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItMTAtMS0xLTI4ODA1_104d2d80-0847-43de-b132-e11af0b0886e">38</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts offset</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtMi0xLTEtMjg4MDU_6f4d824a-ba84-4e7d-992a-b86f74195484">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtNC0xLTEtMjg4MDU_508940e9-a9a4-4842-8eed-2a2f14094f89">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts offset</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtOC0xLTEtMjg4MDU_874a0ac4-cbd4-4b10-8724-021a1fc5e408">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtMTAtMS0xLTI4ODA1_fe1b062c-c692-4be6-a6d2-f1c8264cd0eb">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net amount of assets presented</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DerivativeAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtMi0xLTEtMjg4MDU_cd5f9d3e-f4ca-474a-a1c4-9f4e8763061f">39</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DerivativeAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtNC0xLTEtMjg4MDU_73e5c113-69e6-4e33-99d4-bfff4a085634">265</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net amount of liabilities presented</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DerivativeLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtOC0xLTEtMjg4MDU_a029ec92-53f6-4721-930d-1a01afd49c8d">230</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DerivativeLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtMTAtMS0xLTI4ODA1_dd389352-5026-43ce-83d6-3bd9c7f08e65">38</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MTA_00765aca-c74d-48db-8797-b283cab53f3d" escape="true"><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information regarding the effect of derivative instruments, net of the underlying exposure, on the consolidated financial statements was as follows (in thousands):</span></div><div style="margin-top:10pt;text-align:justify"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MDA_eea57657-70c6-4161-ba6d-65d18cec2766" escape="true"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:21.920%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:22.800%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.762%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.908%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.911%"></td><td style="width:0.1%"></td></tr><tr style="height:12pt"><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Location in Financial Statements</span></td><td colspan="3" rowspan="2" 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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td></tr><tr><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><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><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><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><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><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><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><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="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gains (losses) recognized in current operations</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency gain (loss)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7738a97fca024a00829bfaed4f536e63_D20210101-20211231" decimals="-3" name="us-gaap:DerivativeGainLossOnDerivativeNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTMtMS0xLTI4ODA1_bf8d5714-b162-4f54-b6c6-d0bcc50cc8a7">4,262</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #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-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i9ba0ae2aca854dc3accbe251cf58f567_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:DerivativeGainLossOnDerivativeNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTUtMS0xLTI4ODA1_87422c9f-b691-4787-a2a9-76b8707fcc04">12,308</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #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-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i80a722d47fc34f3388de28ec4399d41e_D20190101-20191231" decimals="-3" name="us-gaap:DerivativeGainLossOnDerivativeNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTctMS0xLTI4ODA1_d1e965b7-c223-4897-a37a-be9f36ec248b">1,305</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></ix:nonNumeric></div></ix:nonNumeric></ix:continuation><div style="text-align:justify"><span><br/></span></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">55</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_151"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><div style="margin-top:6pt"><span><br/></span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 14: <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:RevenueFromContractWithCustomerTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNjg_351938ef-db21-4acf-8311-dd012aae4cc0" continuedAt="ibb5dd832617d467e8457c82f48cf099b" escape="true">Revenue Recognition</ix:nonNumeric></span></div><ix:continuation id="ibb5dd832617d467e8457c82f48cf099b" continuedAt="i0a7f396ff18445d7882f31d35c230605"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:DisaggregationOfRevenueTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzA_8694e2e6-13a4-4208-a455-d2530cc45bf2" escape="true"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes disaggregated revenue information by geographic area based on the customer's country of domicile (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:61.216%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.630%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.826%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.630%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.632%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Americas</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i60257de642494bd1a3f4066707e2f9c2_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItMi0xLTEtMjg4MDU_4b1dab75-8252-4bdd-a480-51cbdc844a53">435,220</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i8b857d6347784d988a40fca03c6bd5be_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItNC0xLTEtMjg4MDU_66005e54-622e-4f3a-b26b-c3dafc7b6e8c">310,027</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i565882183d72492aba9afe23745416e2_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItNi0xLTEtMjg4MDU_9f6062d7-ff0e-4dce-9ef9-a3cf1bc8a6d5">277,155</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Europe</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtMi0xLTEtMjg4MDU_5b44449d-3c21-4765-870e-9e790b946493">247,744</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtNC0xLTEtMjg4MDU_c36f8673-d5de-407b-bff1-f79de5f688d6">208,787</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtNi0xLTEtMjg4MDU_6c1e0582-49ce-4650-a6bc-5bf80498cb9f">227,738</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Greater China</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtMi0xLTEtMjg4MDU_1fd6221e-66aa-4708-bf27-025b349b6e1b">200,135</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtNC0xLTEtMjg4MDU_c4e0d176-fe44-4563-8a22-e21cb7e741bd">168,287</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtNi0xLTEtMjg4MDU_535f614c-3e54-4ff6-bb4a-2229c2bdfd98">115,061</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other Asia</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9478b847f49e4115928476734dea9c64_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtMi0xLTEtMjg4MDU_c4ba9e80-5457-4f9f-9780-8b046e7b519d">153,999</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if9fc10a69f254823a47c3b4444adf857_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtNC0xLTEtMjg4MDU_9b761a3c-c8ed-4a34-b035-5a5e4927bee9">123,919</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia09d8e352163476a90fdecfca35298c5_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtNi0xLTEtMjg4MDU_52b7fd45-c1db-4e80-84a8-164f32d1d9de">105,671</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtMi0xLTEtMjg4MDU_6494d25c-1e00-4db0-81e1-cb58c1406e7e">1,037,098</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtNC0xLTEtMjg4MDU_ffe38b1d-23de-49f9-966d-4d888bed8741">811,020</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtNi0xLTEtMjg4MDU_5ebd64a5-db76-4c49-9980-ebcb722de048">725,625</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div><div style="margin-top:1pt;text-align:justify"><span><br/></span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes disaggregated revenue information by revenue type (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:61.125%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.466%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.824%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.613%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.824%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.616%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Standard products and services</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i978d0a39464248048a6adfb0338684b7_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItMi0xLTEtMjg4MDU_3ee547fc-c8c2-4d8c-9c15-ce19ce8c12ed">889,253</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if8ddf600fc0548fd9b6824b8496ad6bd_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItNC0xLTEtMjg4MDU_f76d54f5-4e71-4bdd-b793-92b75072b4a6">674,830</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icccce2aa3ff74ec8a00c89034af41fc6_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItNi0xLTEtMjg4MDU_ec77bc31-0c42-47e3-8720-034cbb4b783a">629,220</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Application-specific customer solutions</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4d3eb05597f64cf7a138bef69f2aa751_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtMi0xLTEtMjg4MDU_aaf5ef65-3b1b-4c5f-b8b7-2080768a8a24">147,845</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i25c7239e696d401ab604a30f0c0518a0_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtNC0xLTEtMjg4MDU_4cf10cc7-f6e7-4f3f-853a-94da03e6e054">136,190</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3215f7665a784c45aa04c3aae867d897_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtNi0xLTEtMjg4MDU_d0ab2447-c963-42aa-8fe3-b26e2b9d3807">96,405</ix:nonFraction>&#160;</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:0 1pt"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtMi0xLTEtMjg4MDU_db88e3dd-f260-4e01-aba4-77eaa2e3e2c8">1,037,098</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtNC0xLTEtMjg4MDU_3584afe5-ac41-4c0e-975b-eaa0f594628f">811,020</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtNi0xLTEtMjg4MDU_bfea890b-5fb0-4da6-bc1e-7e855884603a">725,625</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Costs to Fulfill a Contract</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Costs to fulfill a contract are included in "Prepaid expenses and other current assets" on the Consolidated Balance Sheets and amounted to $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="us-gaap:CapitalizedContractCostGross" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzQyMg_4c383601-34eb-40fb-bab0-54fe3f749e7f">10,854,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="0" name="us-gaap:CapitalizedContractCostGross" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzQyOQ_05c98405-676b-41a9-a359-8027f9b16867">6,846,000</ix:nonFraction> as of December 31, 2021 and 2020, respectively. </span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounts Receivable, Contract Assets, and Contract Liabilities</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accounts receivable represent amounts billed and currently due from customers which are reported at their net estimated realizable value. The Company maintains an allowance against its accounts receivable for credit losses. Contract assets consist of unbilled revenue which arises when revenue is recognized in advance of billing for certain application-specific customer solutions contracts. Contract liabilities consist of deferred revenue and customer deposits which arise when amounts are billed to or collected from customers in advance of revenue recognition.</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzE_06fbdd16-41cd-46cb-b1d4-32ea3f5fa76b" escape="true"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes changes in the allowance for credit losses (in thousands):</span></div><div style="text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"><tr><td style="width:1.0%"></td><td style="width:79.341%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.459%"></td><td style="width:0.1%"></td></tr><tr><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzEtMS0xLTEtMjg4MDU_886e49ff-402b-4a3b-a9a3-fb7f0b833b52">530</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:ProvisionForDoubtfulAccounts" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzItMS0xLTEtMjg4MDU_9ebdd672-b755-45a7-98ef-a722d6fd997d">600</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Write-offs, net of recoveries</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzMtMS0xLTEtMjg4MDU_854dd442-0b03-425a-b309-e0fc1a21a51b">300</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzQtMS0xLTEtMjg4MDU_1a3a10a9-fd82-4ba1-ba32-22f003658371">1</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzUtMS0xLTEtMjg4MDU_1e6f717a-f236-45b3-acad-374fa1f076b6">831</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ProvisionForDoubtfulAccounts" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzYtMS0xLTEtMjg4MDU_cdea0e7a-3cc6-436b-94d5-d1ea1c755d97">&#8212;</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Write-offs, net of recoveries</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzctMS0xLTEtMjg4MDU_65408213-5970-4b17-8474-cf0acdc2316b">55</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzgtMS0xLTEtMjg4MDU_9ca3018d-1bcf-4316-b17d-63aeb2edb7d7">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzktMS0xLTEtMjg4MDU_0345c9ad-3a95-4598-8faf-e188ea6ff404">776</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's higher estimate of expected credit losses in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">56</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><div style="margin-top:3pt"><span><br/></span></div><ix:continuation id="i0a7f396ff18445d7882f31d35c230605"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzM_c4d4c0f5-3b82-491a-8097-762e46dc2664" escape="true"><div style="margin-top:3pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the deferred revenue and customer deposits activity (in thousands):</span></div><div style="margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:79.398%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.402%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzEtMS0xLTEtMjg4MDU_11333579-57fa-4468-8784-2485ee25465f">14,432</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferral of revenue billed in the current period, net of recognition</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzItMS0xLTEtMjg4MDU_2040c3b7-6869-4895-8cb1-a96d395b15f0">19,014</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Recognition of revenue deferred in prior period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzMtMS0xLTEtMjg4MDU_15aefcea-5339-40db-989d-7e26949b00a8">12,443</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="cgnx:ContractLiabilityForeignExchangeRateChanges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzQtMS0xLTEtMjg4MDU_2383fdf0-721c-43f7-80ec-f56db4d5ad04">271</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzUtMS0xLTEtMjg4MDU_b7216cfc-a8f9-43db-a9a1-660ecff404c7">21,274</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferral of revenue billed in the current period, net of recognition</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzYtMS0xLTEtMjg4MDU_5ec60266-3eab-46a0-9c3b-2916886239c2">31,907</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Recognition of revenue deferred in prior period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzctMS0xLTEtMjg4MDU_e25f467a-e052-4e16-9fbc-20b7545ced12">17,403</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="cgnx:ContractLiabilityForeignExchangeRateChanges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzgtMS0xLTEtMjg4MDU_c44557fd-2f31-4415-a948-f22048847c3f">35</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ContractWithCustomerLiabilityCurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzktMS0xLTEtMjg4MDU_55e77b4a-502e-45db-ae3f-54e0ad03528c">35,743</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a practical expedient, the Company has elected not to disclose the aggregate amount of the transaction price allocated to unsatisfied performance obligations, as our contracts have an original expected duration of less than one year.</span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">57</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_154"></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 15:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:StockholdersEquityNoteDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzQxMzM_248170f5-df2c-4988-817a-c66a4763c5c5" continuedAt="ic4331882d8284aaab56be07a9405f873" escape="true">Shareholders&#8217; Equity</ix:nonNumeric></span></div><ix:continuation id="ic4331882d8284aaab56be07a9405f873"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Preferred Stock</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has <ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzY3_88a2cd52-d66b-488e-b1ae-86902419c06c">400,000</ix:nonFraction> shares of authorized but unissued $<ix:nonFraction unitRef="usdPerShare" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwNA_4e535f56-686e-498c-8411-9de4218b08dc">.01</ix:nonFraction> par value preferred stock.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Common Stock</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On April 25, 2018, the Company's shareholders approved an amendment to the Company's Articles of Organization to increase the authorized number of shares of $<ix:nonFraction unitRef="usdPerShare" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzMwNA_c6c170eb-9a88-450e-bb4e-42be1788763e">.002</ix:nonFraction> par value common stock from <ix:nonFraction unitRef="shares" contextRef="ia18096d71003430faf7fc3b7199862b2_I20160427" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzMzNQ_436e17f4-ab76-4df0-b547-4a3c5da5249f">200,000,000</ix:nonFraction> to <ix:nonFraction unitRef="shares" contextRef="ibc957dc1955640e68337295dda8c967f_I20180425" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0MQ_09eb80e1-6238-4ab6-baaf-da02cb472495">300,000,000</ix:nonFraction>. In addition, on April 25, 2018, the Company's shareholders approved an amendment and restatement of the Company's 2001 General Stock Option Plan which provides for an increase in the number of available shares by <ix:nonFraction unitRef="shares" contextRef="ic97efe271a134f3bb78c5e0f0c609dcf_I20160428" decimals="INF" name="us-gaap:CommonStockSharesAuthorized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzU1OA_c92ee5c6-9ac3-40bb-a08a-21a667946899">10,000,000</ix:nonFraction>.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Each outstanding share of common stock entitles the record holder to <ix:nonFraction unitRef="vote" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="cgnx:VoteEntitledForEachCommonShareOutstanding" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzYzMQ_06b4547b-57b3-45fb-a2b6-0200903a91e2">one</ix:nonFraction> vote on all matters submitted to a vote of the Company&#8217;s shareholders. Common shareholders are also entitled to dividends when and if declared by the Company&#8217;s Board of Directors.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock Repurchases</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In October 2018, the Company's Board of Directors authorized the repurchase of $<ix:nonFraction unitRef="usd" contextRef="icee5a3a1e242481d9356d6512fd34156_I20181029" decimals="-3" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzIzNDQ_a989eb26-52cf-4520-9829-8b33be18ec9e">200,000,000</ix:nonFraction> of the Company's common stock. Under this October 2018 program, the Company repurchased <ix:nonFraction unitRef="shares" contextRef="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodShares" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1NDE_8ca487d2-81d3-4131-9f88-0976af85426f">1,398,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1NjQ_d8872c36-3e16-4624-8a13-f6a57ea4120f">61,690,000</ix:nonFraction> in 2019, <ix:nonFraction unitRef="shares" contextRef="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodShares" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1Nzk_29c71666-22ef-4942-bbbf-5f76b07d47eb">1,215,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI2MDI_fc45ded2-eebb-4dbb-b5db-5724c3286048">51,036,000</ix:nonFraction> in 2020, and <ix:nonFraction unitRef="shares" contextRef="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodShares" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI1NzY_694c6c48-db8b-4854-83b9-6679de1b07c2">957,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI1OTM_a505062c-985c-4242-b986-f64c933d43c9">78,652,000</ix:nonFraction> in 2021, which completed purchases under this program. On March 12, 2020, the Company's Board of Directors authorized the repurchase of an additional $<ix:nonFraction unitRef="usd" contextRef="ib603cdbab9484789a7f90ba5470fa1fc_I20200312" decimals="-3" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI3NzY_529d01a7-3fa3-484a-95d6-4113ec4cc28e">200,000,000</ix:nonFraction> of the Company's common stock. Under this March 2020 program, the Company repurchased <ix:nonFraction unitRef="shares" contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodShares" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxMzU_309bb633-40cf-44a5-9cc6-ea404f201db1">1,060,000</ix:nonFraction> shares, including <ix:nonFraction unitRef="shares" contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231" decimals="-3" name="cgnx:StockRepurchasedDuringPeriodSharesNotYetSettled" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzE2NDkyNjc0NDc4NDI_7d5f3cc8-d693-480b-8b8d-85dbbdd53ac6">5,000</ix:nonFraction> shares that had not yet settled as of December 31, 2021, at a cost of $<ix:nonFraction unitRef="usd" contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxNDE_02b8c66c-b0c3-4ca6-b080-944dba2acf93">83,000,000</ix:nonFraction> in 2021, leaving a remaining balance of $<ix:nonFraction unitRef="usd" contextRef="i10dc5333496046ad93d3758e0acfd0ad_I20211231" decimals="-3" name="us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxNDI_67b0ee27-eeff-4be1-af11-78d9aee8b6ca">117,000,000</ix:nonFraction>. The Company may repurchase shares under this program in future periods depending on a variety of factors, including, among other things, the impact of dilution from employee stock awards, stock price, share availability, and cash requirements. The Company is authorized to make repurchases of its common stock through open market purchases, pursuant to Rule 10b5-1 trading plans, or in privately negotiated transactions.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Dividends</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s Board of Directors declared and paid cash dividends of $<ix:nonFraction unitRef="usdPerShare" contextRef="i6b8a386974cc4d9ba5c5b000e859ee31_D20190101-20190929" decimals="3" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzM4MTk_54ae00ff-370a-41ec-89ba-d7fd3b45f142">0.050</ix:nonFraction> per share in the first, second, and third quarters of 2019, $<ix:nonFraction unitRef="usdPerShare" contextRef="idf4cd8f218d9414faa06b3c55217d8fe_D20190930-20191231" decimals="3" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0MDk_a87e2288-6598-4d11-961e-96c81e26b7b9">0.055</ix:nonFraction> per share in the fourth quarter of 2019 and in the first, second, and third quarters of 2020, and $<ix:nonFraction unitRef="usdPerShare" contextRef="icf5af4f37b30453da1856b17e836038f_D20200928-20201231" decimals="3" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0NzY_9f57f50d-8836-410b-9d26-c14b763d48a4">0.060</ix:nonFraction> per share in the fourth quarter of 2020 and in the first, second, and third quarters of 2021. The dividend was increased to $<ix:nonFraction unitRef="usdPerShare" contextRef="i92b408fed68541808d3ffb0dc09c1308_D20211004-20211231" decimals="3" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM2MDE_98fd7407-bb4f-4882-b0ec-1885b249de2a">0.065</ix:nonFraction> per share in the fourth quarter of 2021. Also, in the fourth quarter of 2020, an additional special cash dividend of $<ix:nonFraction unitRef="usdPerShare" contextRef="icf5af4f37b30453da1856b17e836038f_D20200928-20201231" decimals="2" name="us-gaap:CommonStockDividendsPerShareDeclared" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM3MjE_a48ee045-8741-4c48-965e-1d23e62f0947">2.00</ix:nonFraction> per share was declared and paid. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total dividends paid were $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:PaymentsOfDividends" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI2Njc_a25766eb-d77b-4c9d-8f48-f5cf1f6e57f0">43,263,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:PaymentsOfDividends" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM3ODU_bb2fde66-242a-4e89-8914-6fc533298f83">390,508,000</ix:nonFraction> in 2020, which included $<ix:nonFraction unitRef="usd" contextRef="i22ac892990aa4be6bea90ca4813eba67_D20201228-20201228" decimals="0" name="us-gaap:PaymentsOfDividends" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM4MTI_2d1516a1-e767-4f65-b047-6b03e44065fd">351,428,000</ix:nonFraction> paid for the special cash dividend, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:PaymentsOfDividends" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM4NTE_0f51e5cb-aeb9-4188-8378-f47aab36c6ba">35,124,000</ix:nonFraction> in 2019. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend on such factors as the Board deems relevant, including, among other things, the Company's ability to generate positive cash flow from operations.</span></div></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_160"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 16:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTc_b9f49a2e-4956-4cd8-86b0-a79895711d81" continuedAt="i2c35f2f7b8e74149a183533ecb805d4a" escape="true">Stock-Based Compensation</ix:nonNumeric></span></div><ix:continuation id="i2c35f2f7b8e74149a183533ecb805d4a" continuedAt="ie1f04a3d65514582b56576e5ceb013fb"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock Plans</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). As of December&#160;31, 2021, the Company had <ix:nonFraction unitRef="shares" contextRef="i39707b072766401697c047f98d14f735_I20211231" decimals="0" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIxOQ_de54873d-0ed5-43f1-b06a-9e46d35171b3">15,640,000</ix:nonFraction> shares available for grant under its stock plans. Stock options are granted with an exercise price equal to the market value of the Company&#8217;s common stock at the grant date and generally vest over <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQxOQ_cac7f81a-55a4-43ac-b985-ca51aa05fe04">four</span> or <ix:nonNumeric contextRef="idd5ac6d2068247fbaaf23d9582522e3a_D20210101-20211231" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQyNQ_ab9f4384-c9af-49f1-8ef4-2eeda50b6206">five years</ix:nonNumeric> based on continuous employment and expire <ix:nonNumeric contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231" name="cgnx:ExpirationPeriodOfStockOptionPlan" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQ3MA_40016799-2a45-48b2-ba37-9201dca91763">ten years</ix:nonNumeric> from the grant date. RSUs generally vest upon <ix:nonNumeric contextRef="ib1a2499886a74a06992d20a3f6b53efb_D20210101-20211231" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" format="ixt-sec:durwordsen" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzUxOQ_5b682129-2934-41c7-aaad-2880575bfd93">three years</ix:nonNumeric> of continuous employment or incrementally over such three-year period. Participants are not entitled to dividends on RSUs.</span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">58</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="ie1f04a3d65514582b56576e5ceb013fb" continuedAt="i50313128893e448fa60216cdb484d731"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock Options</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTU_fc83a782-130b-4479-bada-6bdd9cda16a7" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the Company&#8217;s stock option activity:</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:43.409%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.223%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.223%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.223%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.226%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Shares<br/>(in&#160;thousands)</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-<br/>Average<br/>Exercise<br/>Price</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-<br/>Average<br/>Remaining<br/>Contractual<br/>Term<br/>(in&#160;years)</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Aggregate<br/>Intrinsic Value<br/>(in&#160;thousands)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzEtMS0xLTEtMjg4MDU_2331fc0f-89ad-4666-8d17-8ecf97ed1695">8,970</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzEtMy0xLTEtMjg4MDU_3da45363-162b-446b-bdc0-4c5ba545accd">44.73</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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;border-top:1pt solid #000000;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 #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Granted</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzItMS0xLTEtMjg4MDU_e002c8d5-b59b-4483-b845-95155c975bbb">564</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzItMy0xLTEtMjg4MDU_0c65a51a-ce4c-42cd-a7f3-825286e068d7">88.62</ix:nonFraction>&#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="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Exercised</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzMtMS0xLTEtMjg4MDU_918ea564-b5ab-4212-965b-3def5da77747">1,694</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzMtMy0xLTEtMjg4MDU_1aa8ac03-d9ec-4979-93f6-c22f03d1534a">37.70</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Forfeited or expired</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzQtMS0xLTEtMjg4MDU_17cf905b-66ba-4e58-a5cd-88f5e37e5524">230</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzQtMy0xLTEtMjg4MDU_cd203d65-fc9e-4245-9b57-a78ac260725e">50.34</ix:nonFraction>&#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="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2021</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtMS0xLTEtMjg4MDU_3e97f91a-5270-4a62-9212-4bb7e6ef70af">7,610</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtMy0xLTEtMjg4MDU_be77dacc-eabb-4f93-9f60-a71993d6efe0">49.38</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtNS0xLTEtMjg4MDU_22fbd0e1-e175-40ac-888e-68bd46bf93a9">6.57</ix:nonNumeric></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtNy0xLTEtMjg4MDU_ebb91edc-8be9-4d18-9ad2-d1c21639949f">222,053</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Exercisable as of December 31, 2021</span></td><td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtMS0xLTEtMjg4MDU_7231e661-ba47-4145-b1d2-eb99cf90d07d">3,442</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtMy0xLTEtMjg4MDU_c9491fc9-47d2-4a6e-8972-bfe59c343e56">39.87</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;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;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtNS0xLTEtMjg4MDU_8c4d24bb-b971-40be-8201-8c82aa2243f9">5.45</ix:nonNumeric></span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtNy0xLTEtMjg4MDU_6ae28c09-6887-43c1-aa71-7fa37765e4b9">130,448</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Options vested or expected to vest as of&#160;<br/>&#160;December 31, 2021 (1)</span></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctMS0xLTEtMjg4MDU_93a32ce5-8d7a-49fd-b5be-3dba086217cb">7,134</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #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-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctMy0xLTEtMjg4MDU_7fcb7365-304a-4ad7-8fd9-ee85ed1083d8">48.66</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #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;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctNS0xLTEtMjg4MDU_8290432a-c870-46d4-b728-9529789fb409">6.49</ix:nonNumeric></span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctNy0xLTEtMjg4MDU_3ace5b06-4b1e-4860-96a1-ef92e3091b0c">212,746</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:4pt;padding-left:36pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1) In addition to the vested options, the Company expects a portion of the unvested options to vest at some point in the future. Options expected to vest are calculated by applying an estimated forfeiture rate to the unvested options.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM2OTg_d5c8b3bb-557f-4928-85a0-18a3da8f55e7" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair values of stock options granted in each period presented were estimated using the following weighted-average assumptions:</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:54.847%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.996%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.143%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.146%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year&#160;Ended&#160;December&#160;31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Risk-free rate</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231" decimals="3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItMS0xLTEtMjg4MDU_e9d9273f-7933-435d-b3f4-a5ace6ab5ddf">1.3</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231" decimals="3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItMy0xLTEtMjg4MDU_c32dc394-7e97-44d3-bd0d-c242841c0c73">1.4</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231" decimals="3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItNS0xLTEtMjg4MDU_16e2f14e-3958-4168-86d4-d0aa356f96e8">2.7</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected dividend yield</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtMS0xLTEtMjg4MDU_1b900f04-ed85-4599-98cc-25d6edb3acf2">0.27</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtMy0xLTEtMjg4MDU_ebf7ffd2-eab8-44ee-9019-427e127f64c8">0.41</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtNS0xLTEtMjg4MDU_a3d11c55-1a6a-4c89-a285-a039635d2a71">0.39</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected volatility</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtMS0xLTEtMjg4MDU_c9a7640a-b120-42d8-8335-29a7aa1ece86">39</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtMy0xLTEtMjg4MDU_7afad64f-04ee-4ec9-ab6a-5b6edb430e21">37</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtNS0xLTEtMjg4MDU_35423c34-a6c6-4b23-b302-12115317ba1f">37</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected term (in years)</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonNumeric contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtMS0xLTEtMjg4MDU_76a4b598-165c-4f26-9b70-2b1511d1ecca">6.0</ix:nonNumeric></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtMy0xLTEtMjg4MDU_a1ad429d-4ef5-4f10-989d-b67a0a52a3d6">6.0</ix:nonNumeric></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonNumeric contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtNS0xLTEtMjg4MDU_fb29ad4b-736c-40ed-80af-53bb95cae8fb">5.3</ix:nonNumeric></span></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Risk-free rate</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The risk-free rate was based on a treasury instrument whose term was consistent with the contractual term of the option.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Expected dividend yield</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Generally, the current dividend yield is calculated by annualizing the cash dividend declared by the Company&#8217;s Board of Directors and dividing that result by the closing stock price on the grant date.&#160;</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Expected volatility</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The expected volatility was based on a combination of historical volatility of&#160;the Company&#8217;s&#160;common stock over the contractual term of the option and implied volatility for traded options of the Company&#8217;s stock.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Expected term</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The expected term was derived from the binomial lattice model from the impact of events that trigger exercises over time.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The weighted-average grant-date fair value of stock options granted was $<ix:nonFraction unitRef="usdPerShare" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE4OTc_1043856e-d6a7-489a-8a27-d59dd134c754">33.79</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usdPerShare" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5MDc_f8035c7d-6d18-4a57-b4c8-49261c445189">19.62</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usdPerShare" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5MjE_be3848b0-3b4d-45f9-9d20-83b69d9c28a8">18.62</ix:nonFraction> in 2019.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The total intrinsic value of stock options exercised was $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5ODg_ea76d5a9-e76b-4f18-b1e5-4caf15bf65c1">80,369,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5OTg_e5bac2a2-e29d-4402-8ff8-bf4d405efec3">166,796,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwMTI_c0302d0a-32d0-4d79-883c-4b483ab8a6de">90,762,000</ix:nonFraction> in 2019. The total fair value of stock options vested was $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwNzE_dd6d9184-0661-4e10-b756-6d3520cfb982">45,328,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwODE_54443fa6-f7ea-4428-a6da-56c25353515a">45,998,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwOTU_2f44fc4c-4931-476d-b2b3-e9d33e9c7bd4">38,974,000</ix:nonFraction> in 2019.</span></div></ix:continuation><div style="margin-top:5pt;text-align:justify"><span><br/></span></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">59</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i50313128893e448fa60216cdb484d731"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Restricted Stock Units (RSUs)</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM2OTk_74921bb4-2dd6-4302-b984-605c31b252ef" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following tables summarizes the Company's RSU activity:</span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:62.496%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.666%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:19.808%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Shares<br/>(in&#160;thousands)</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Weighted-Average<br/>Grant Date Fair Value</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Nonvested as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i0d2d7b131c914aa3813c98711237ce0c_I20201231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzEtMS0xLTEtMjg4MDU_4215c67a-70ee-4564-b37a-239cb8bb0a11">554</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i0d2d7b131c914aa3813c98711237ce0c_I20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzEtMy0xLTEtMjg4MDU_47dbd58e-7b6f-4162-8fc0-0103ac5c29ce">51.27</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Granted</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzItMS0xLTEtMjg4MDU_187954e0-981d-4a97-951e-612428b7bb98">335</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzItMy0xLTEtMjg4MDU_5e3c8d8e-284c-46bf-b638-0d7ba84c872d">87.03</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Vested</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzMtMS0xLTEtMjg4MDU_df78c491-6670-4c1d-b2c3-fd90d10476df">16</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzMtMy0xLTEtMjg4MDU_2be6fa17-2241-4690-be4f-fa4e255702c8">57.31</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Forfeited or expired</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="shares" contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzQtMS0xLTEtMjg4MDU_9e1a60b3-1845-41c3-a1f2-0c677e2f34e7">50</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzQtMy0xLTEtMjg4MDU_0c461377-9da8-4b62-9a11-b138c0398826">58.47</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Nonvested as of December 31, 2021</span></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzUtMS0xLTEtMjg4MDU_5039049d-af46-4617-809c-f4720d958de2">823</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzUtMy0xLTEtMjg4MDU_6989c182-88ff-41df-baae-f377459a94b4">65.26</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of RSUs is determined based on the observable market price of the Company's stock on the grant date less the present value of expected future dividends. The weighted-average grant-date fair value of RSUs granted in 2020 and 2019 was $<ix:nonFraction unitRef="usdPerShare" contextRef="icace5d553dd64444a04f231db888b7ef_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIyNzA_9db7a7b7-8304-4c9e-bd01-c756e054a407">52.09</ix:nonFraction> and $<ix:nonFraction unitRef="usdPerShare" contextRef="ie01ba116a66c474d84265161be749d7d_D20190101-20191231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE1ODM_435d9fd7-35b9-419f-b9fb-f20c757fd378">48.61</ix:nonFraction>, respectively. There were <ix:nonFraction unitRef="shares" contextRef="i84da32e16b6e4d98bbab4cb608388e92_D20210101-20211231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE3MTU_657c2efc-3548-4fcf-b6b2-34e1dc638d49">16,000</ix:nonFraction> RSUs that vested in 2021, and <ix:nonFraction unitRef="shares" contextRef="ie01ba116a66c474d84265161be749d7d_D20190101-20191231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIzMjE_1488a12b-a44e-44a9-ad8d-3bb0226c01f5"><ix:nonFraction unitRef="shares" contextRef="icace5d553dd64444a04f231db888b7ef_D20200101-20201231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIzMjE_f46a8775-5c71-4196-a141-1adb81a8b074">no</ix:nonFraction></ix:nonFraction> RSUs that vested in 2020 and 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock-Based Compensation Expense</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company stratifies its employee population into <ix:nonFraction unitRef="group" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="INF" name="cgnx:NumberOfGroupsWithinEmployeePopulation" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI0NTE_f840c723-ab31-429a-b161-9ab5c7fadb04">two</ix:nonFraction> groups: one consisting of senior management and another consisting of all other employees. The Company currently applies an estimated forfeiture rate of <ix:nonFraction unitRef="number" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="2" name="cgnx:EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI2MDc_94adf9a4-c7b8-44c9-a5ad-2e868d80a7e5">8</ix:nonFraction>% to all unvested options for senior management and a rate of <ix:nonFraction unitRef="number" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="2" name="cgnx:EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI2NzA_b0a3f918-ce62-479c-9a6d-9083d43072f8">12</ix:nonFraction>% for all other employees. Each year during the first quarter, the Company revises its forfeiture rate. This resulted in a decrease to compensation expense of $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI4MzE_40190433-a2c8-4958-857f-bd5fa21b2062">255,000</ix:nonFraction> in 2021, an increase to compensation expense of $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI4Nzk_2cd86aeb-a2fa-48cb-90b8-b78b657d66e6">1,787,000</ix:nonFraction> in 2020, and a decrease to compensation expense of $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI5MzI_ef8ffe60-f686-4fd4-b12d-12b03061ffa1">499,000</ix:nonFraction> in 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2021, total unrecognized compensation expense related to non-vested stock-based awards, including stock options and RSUs, was $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMwODU_e3e7db1c-72b8-4ab8-8a05-7457c2b40ecb">47,690,000</ix:nonFraction>, which is expected to be recognized over a weighted-average period of <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMxNTg_d0b240c6-4649-4fa0-90ad-a0986d890522">1.4</ix:nonNumeric> years.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The total stock-based compensation expense and the related income tax benefit recognized was $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMyNjE_91a353a9-a1f0-427e-a45f-93341ecdcce1">43,774,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMzNzc_e9357901-b88f-4935-95ea-d630c2c904f6">6,764,000</ix:nonFraction>, respectively, in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0MDI_3a54ca76-4bcd-4050-9708-933c33b8bb6f">42,661,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0MDk_ebcb4e9a-8e03-4844-a575-55c88e0cbb35">6,569,000</ix:nonFraction>, respectively, in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0Mzg_f4c0ef22-d993-41b7-a1e0-a3af7dc99872">45,589,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0NDU_26fb8698-ff7f-4810-a489-61f63477f86d">7,756,000</ix:nonFraction>, respectively, in 2019. Stock-based compensation expense recognized in 2020 included credits of $<ix:nonFraction unitRef="usd" contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628" decimals="-3" name="us-gaap:ShareBasedCompensation" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE5OTc_ed05ca7a-ab66-4d57-901f-ce6c35841f3f">1,401,000</ix:nonFraction> relating to grants cancelled as a result of the Company's workforce reduction in the second quarter of 2020. No compensation expense was capitalized in 2021, 2020, or 2019.</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTI_1fa6fcdf-f452-4462-bced-3a9250617cb1" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the stock-based compensation expense by caption for each period presented on the Consolidated Statements of Operations (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"></td><td style="width:51.176%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.318%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.318%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.320%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cost of revenue</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia5a436cb2a4b40208126b213a56803a5_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItMS0xLTEtMjg4MDU_9b9d6814-1941-4683-bf3e-a50c2d5102df">1,345</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id25aced7c5bb44fe800cc559f6166ff8_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItMy0xLTEtMjg4MDU_68bc5b9a-551d-4bc6-8015-d95bf1f6996a">1,365</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2f165371239b461d8c3a62bad05a3b86_D20190101-20191231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItNS0xLTEtMjg4MDU_1df58d7c-cdcf-45cf-a1cf-87524c61c922">1,504</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Research, development, and engineering</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if8ab3d4c8f6a477f9e4c9e2b8888052a_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtMS0xLTEtMjg4MDU_fd2888ba-54ec-4e9d-924a-25d7994d2aa7">13,535</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6b6b154e38b2410788bce4314a3d47bf_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtMy0xLTEtMjg4MDU_5c072872-d6b1-4728-8238-9de9a3ccf30b">13,387</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id16927732c3f42ae9f82e1e9ddd307ed_D20190101-20191231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtNS0xLTEtMjg4MDU_bc8f78b7-a263-4c11-9f2a-cbef27ee3ed0">15,748</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Selling, general, and administrative</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i52df1bc9391d4aeeb11bfa4d9b3d10b8_D20210101-20211231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtMS0xLTEtMjg4MDU_86d22ad4-434c-4f82-85dd-6fea0e164a58">28,894</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5b1d16e2e3c74de6973268b28ba5fc9c_D20200101-20201231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtMy0xLTEtMjg4MDU_2e8c5937-e367-479f-a0ec-9f1deae108ec">27,909</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if66ef68195be46f98ef233ab367cb7c7_D20190101-20191231" decimals="-3" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtNS0xLTEtMjg4MDU_efc8d2d3-74e1-454d-b229-568665d36840">28,337</ix:nonFraction>&#160;</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="display:none"></td><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><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtMS0xLTEtMjg4MDU_3203b5d6-5d7b-40df-a6f0-3e8b7b77c7fa">43,774</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtMy0xLTEtMjg4MDU_c7a8a496-3072-4157-bf81-0df30d0bc0a6">42,661</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt 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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:AllocatedShareBasedCompensationExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtNS0xLTEtMjg4MDU_6c29ccbd-2dd8-4970-8340-69d457daad9c">45,589</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_166"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 17:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzczNA_af1347f2-e889-4042-a627-61511b1d1a06" continuedAt="i7960f4743ebe4c72af1657a8dadb1a2f" escape="true">Employee Savings Plan</ix:nonNumeric></span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i7960f4743ebe4c72af1657a8dadb1a2f">Under the Company's Employee Savings Plan, a defined contribution plan, all U.S. employees who have attained age <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan" format="ixt-sec:duryear" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzE0OQ_10ac3430-45a5-4ff2-a71c-0d4832d6cbfd">21</ix:nonNumeric> may contribute up to <ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzE3Mw_c013a6ec-f4e3-4fae-8000-f58b4c7e6a2d">100</ix:nonFraction>% of their pay on a pre-tax basis under the Company's Employee Savings Plan, subject to the annual dollar limitations established by the Internal Revenue Service ("IRS"). The Company matches <ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzM2NQ_d55155f3-1e13-4115-8f88-51300f74388c">50</ix:nonFraction>% of the first <ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="us-gaap:DefinedContributionPlanEmployerMatchingContributionPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzM4MQ_b15230f5-d4d4-45d5-9281-ab5e5fc9d70d">6</ix:nonFraction>% of pay an employee contributes. Company contributions vest <ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="cgnx:CompanyContributionsVestAtEndOfOneYear" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ0Mw_67d6c804-17ca-4d6a-a2b2-a10eef965e84">25</ix:nonFraction>%, <ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="cgnx:CompanyContributionsVestAtEndOfTwoYear" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ0Nw_6ed33f74-f2e8-430d-a300-56e0e2442dd4">50</ix:nonFraction>%, <ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="cgnx:CompanyContributionsVestAtEndOfThreeYears" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ1MQ_3eec1737-dec1-49bb-bd8e-c279058017f9">75</ix:nonFraction>%, and <ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="cgnx:CompanyContributionsVestAtEndOfFourYears" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ1OQ_4a7f83f7-6316-4c2b-b8f0-e3331800cc35">100</ix:nonFraction>% after one, two, three, and four years of continuous employment with the Company, respectively. Company contributions totaled $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:DefinedContributionPlanCostRecognized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzU4Nw_2f1b8875-c302-4257-8745-3436363021fd">2,898,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:DefinedContributionPlanCostRecognized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzU5Nw_7766a1eb-0ac0-4bdc-8b10-d4f876146f05">2,636,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:DefinedContributionPlanCostRecognized" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzYxMQ_392c5b55-3b41-4e15-9863-b2cf4ba6e416">2,729,000</ix:nonFraction> in 2019. Cognex stock is not an investment alternative and Company contributions are not made in the form of Cognex stock.</ix:continuation></span></div><div id="i929e97f6a142453c8a8057dbb6451118_172"></div><div style="margin-top:9pt"><span><br/></span></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">60</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 18:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:IncomeTaxDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0ODU_c73f7911-5cdf-478d-b89d-80abe365eac2" continuedAt="i56c10adacdb44c96bc02d2c14f6e6150" escape="true">Income Taxes</ix:nonNumeric></span></div><ix:continuation id="i56c10adacdb44c96bc02d2c14f6e6150" continuedAt="i3908cc26e55649568beaebbd7cb4347b"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Domestic income before taxes was $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzYw_01f26496-e6af-47de-adc6-915f782ebacf">121,729,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcw_ed94811a-9a41-47b5-9006-acf57af4c06e">39,425,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0_68fb52a5-c23d-4839-bd51-829a8d862a53">31,396,000</ix:nonFraction> in 2019. Foreign income before taxes was $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyNg_c4f3dc51-cbae-4d9c-8ba4-0c680120a81b">197,171,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEzNg_02cf539d-dcc5-46d8-a4f6-ce256c938f4c">147,486,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE1MA_5fae3d1b-21fb-4049-9ddd-c7c3d312eff7">131,598,000</ix:nonFraction> in 2019. </span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MDU_c1dae69d-ea71-4760-9db0-9883953fe039" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income tax expense (benefit) consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:48.680%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.151%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.151%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.154%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="15" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtMS0xLTEtMjg4MDU_b4d3fc40-096d-4ae5-8211-5ac47b6d3027">27,870</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtMy0xLTEtMjg4MDU_f5ea76b0-37e8-4f9b-aa88-d0f76a7feb9b">160</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtNS0xLTEtMjg4MDU_ac7beb9e-8df5-409c-80c3-b4e4b370e4f8">15,854</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtMS0xLTEtMjg4MDU_eef03ef0-6a70-4657-977f-16221c0ed392">5,372</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtMy0xLTEtMjg4MDU_45a3d871-b087-4f9f-8923-bb8aad392a55">921</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtNS0xLTEtMjg4MDU_83d24008-7077-49a2-b4ca-5f56779a8278">2,108</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:CurrentForeignTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtMS0xLTEtMjg4MDU_944f2fc3-a1fb-43c3-932c-9b609ffd3923">8,406</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:CurrentForeignTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtMy0xLTEtMjg4MDU_369d15ed-77b8-473e-b301-873768a75837">13,197</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:CurrentForeignTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtNS0xLTEtMjg4MDU_8a1b9c54-e92e-4176-83ca-f2ad77339a4c">30,670</ix:nonFraction>&#160;</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:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:CurrentIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtMS0xLTEtMjg4MDU_e3b295d5-5334-401c-bd6e-0e82a67611cd">41,648</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:CurrentIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtMy0xLTEtMjg4MDU_e906f24b-1c75-420e-be30-6a2863b17f05">14,278</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:CurrentIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtNS0xLTEtMjg4MDU_43b3a535-97eb-42f7-9896-5e15395bbdb7">48,632</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred:</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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtMS0xLTEtMjg4MDU_e3066966-66f8-4115-bd0a-a7e4c39941a0">19,266</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtMy0xLTEtMjg4MDU_36fe1fd3-cea1-4ecc-9218-a643a1312d5b">18,266</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtNS0xLTEtMjg4MDU_748e878d-ef68-4152-9b92-388e4dfca823">352,808</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktMS0xLTEtMjg4MDU_f854523b-d901-4049-8b7f-c3cc635520f5">769</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktMy0xLTEtMjg4MDU_312a261c-f9d6-442b-906b-738290a7a1dc">556</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktNS0xLTEtMjg4MDU_21b221aa-ee6b-4642-99cb-9ea3ceb45c90">183</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTEtMS0xLTI4ODA1_5400c127-2f4f-41f4-ba8a-367c0e763080">17,406</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTMtMS0xLTI4ODA1_78843ee9-4d35-4812-a100-bf3b2c09c2bf">15,269</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTUtMS0xLTI4ODA1_69da7260-83ad-4299-a25a-842f5b95daa4">442,494</ix:nonFraction>)</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:0 1pt"></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:DeferredIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTEtMS0xLTI4ODA1_e4b44265-f153-4b5b-ace8-3519fb22ae13">2,629</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:DeferredIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTMtMS0xLTI4ODA1_2448e1e5-fc22-4bf1-a9d9-b2e0de0804d0">3,553</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:DeferredIncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTUtMS0xLTI4ODA1_88ec9e3b-f7de-4662-a917-ba41aac6f8cb">89,503</ix:nonFraction>)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTEtMS0xLTI4ODA1_579d746c-59ca-470d-ac61-dc40e3f04d0c">39,019</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTMtMS0xLTI4ODA1_32748354-bff6-465f-afa6-7ad53a699120">10,725</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTUtMS0xLTI4ODA1_ea3c9dba-9590-4051-90bd-40eda09926bb">40,871</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"></td></tr></table></div></ix:nonNumeric><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MjM_f41c2f11-e2cc-44da-9c99-88beb0367e11" escape="true"><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A reconciliation of the U.S. federal statutory corporate tax rate to the Company&#8217;s income tax expense (benefit), or effective tax rate, was as follows:</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:62.296%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.613%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.613%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.614%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year&#160;Ended&#160;December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense at U.S. federal statutory corporate tax rate</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItMS0xLTEtMjg4MDU_41b592fc-4833-4245-bcc4-3500fc9b12a3">21</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItMy0xLTEtMjg4MDU_d8a9a86e-d3a4-4968-a616-1cfdf59b04b7">21</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItNS0xLTEtMjg4MDU_3f25d1cf-79ab-4436-8c2e-5da31c3e4042">21</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State income taxes, net of federal benefit</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtMS0xLTEtMjg4MDU_d98d1311-03f9-4e42-afcd-33a91b34dabc">1</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtMy0xLTEtMjg4MDU_6c487358-a325-484d-b1aa-a7c350dafc68">1</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtNS0xLTEtMjg4MDU_2919218e-b7c8-43f1-990f-2d041b95a787">2</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign tax rate differential</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtMS0xLTEtMjg4MDU_db7c5db6-5922-44ce-ad3c-681d46a5ba20">5</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtMy0xLTEtMjg4MDU_a116b0da-0a0a-4cbf-8cdc-22ceedb8fd37">6</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtNS0xLTEtMjg4MDU_d1fb5a9d-f106-41eb-9e7d-514b2dae7f1e">9</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Tax credit</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtMS0xLTEtMjg4MDU_8fc5c00d-f4ad-4540-8c8e-625ce228d838">2</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtMy0xLTEtMjg4MDU_c43ad427-d45f-4833-8519-6e93b5b4c35d">1</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtNS0xLTEtMjg4MDU_f9ec83ee-a4fd-4a48-b200-1dcbff8e0d9d">1</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to employee stock options</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtMS0xLTEtMjg4MDU_45ba0e7e-5800-47e0-93c9-c9a2ee478a6b">3</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtMy0xLTEtMjg4MDU_b459da30-1017-4f43-b373-302f440e0f85">7</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtNS0xLTEtMjg4MDU_2d47bc4c-383b-4591-8882-e6fc90640a10">4</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to tax return filings</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctMS0xLTEtMjg4MDU_1ff6f22b-3455-4c54-81df-f0525e2bbc1c">1</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctMy0xLTEtMjg4MDU_af4c8482-f7ee-43a9-bbc7-a44250a51288">5</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctNS0xLTEtMjg4MDU_a0117afd-9e50-432d-833a-ee139f225690">&#8212;</ix:nonFraction>&#160;</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"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">Discrete tax expense related to German withholding</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtMS0xLTEtMjg4MDU_5e7ed789-10f2-48ea-9dd7-1dd515be1103">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtMy0xLTEtMjg4MDU_7aacf694-4611-457d-9d9b-d202031d9a20">1</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtNS0xLTEtMjg4MDU_c8eb4369-3057-46fa-94d5-b9e1c6a77fdb">&#8212;</ix:nonFraction>&#160;</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="display:none"></td><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><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax expense related to migration of acquired IP</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTEtMS0xLTI4ODA1_b63f568e-faba-4759-b403-1421ed3e24aa">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTMtMS0xLTI4ODA1_00f2f91b-37d3-4f3d-bf5f-b386e144f6e6">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTUtMS0xLTI4ODA1_efb6df13-75b4-489f-828b-d0c4d41b5236">18</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to change in tax structure</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTEtMS0xLTI4ODA1_f8515d95-8061-4544-9ca9-b9bf7ef2cbd6">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTMtMS0xLTI4ODA1_cd253062-ddbb-4853-9bd6-81fe99a37064">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTUtMS0xLTI4ODA1_d6cb9a53-5f49-4fb0-ac67-84f2985176ae">268</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax expense related to GILTI impact of change in tax structure</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTEtMS0xLTI4ODA1_34458d96-2e97-4d51-b598-14ed3ac01af5">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTMtMS0xLTI4ODA1_788fc85d-22fa-4355-b33e-743ae6833e7d">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTUtMS0xLTI4ODA1_f28ce59f-fd46-416e-b9f1-facc35997219">214</ix:nonFraction>&#160;</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="display:none"></td><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><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other discrete tax events</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTEtMS0xLTI4ODA1_fe915573-d6dd-4922-a1e8-ebbcfdffc6f7">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" format="ixt:fixed-zero" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTMtMS0xLTI4ODA1_1753b2aa-e580-440c-ac63-7bd6fa615e3c">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTUtMS0xLTI4ODA1_1cddc0f7-b3eb-4189-b5d4-cd3e7268682c">1</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTEtMS0xLTI4ODA1_2bb93242-02e3-4da3-8ee3-66c6f1a50e32">1</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTMtMS0xLTI4ODA1_1d41b714-c997-46f1-996f-dfc9a911c701">2</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTUtMS0xLTI4ODA1_ae2eade7-178e-4ac0-ac12-f9a25ebb8ea5">3</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense (benefit)</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTEtMS0xLTI4ODA1_57f83aa1-fdf5-4929-bbe4-655385dacc7d">12</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTMtMS0xLTI4ODA1_74a6c74e-b8c5-454b-b5fb-aafb6b964009">6</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTUtMS0xLTI4ODA1_57055a61-3699-4825-8e8a-a1e987d5ec65">25</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Change in Accounting Policy</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2019, the Company elected to change its method of accounting for the United States Global Intangible Low-Taxed Income (GILTI) tax from recording the tax impact in the period it is incurred to recognizing deferred taxes for temporary tax basis differences expected to reverse as GILTI tax in future years. The change is considered preferable, as it appropriately matches the Company's current and deferred income tax implications related to the change in international tax structure noted above.</span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">61</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i3908cc26e55649568beaebbd7cb4347b" continuedAt="i1fc6affb4d754730a439793f8a0432fa"><ix:nonNumeric contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" name="us-gaap:ScheduleOfChangeInAccountingEstimateTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0ODY_09d6c586-98cd-4ead-92ef-b9362a527f1c" escape="true"><div style="margin-bottom:8pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The change in this accounting policy impacted the Company's 2019 reported results as follows (in thousands):</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:53.936%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.520%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.821%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.520%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.821%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.582%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Statement of Operations</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;Year Ended December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income before income tax expense</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtMS0xLTEtMjg4MDU_e589dbeb-1c5c-4204-aa99-488972bc8ae7">162,994</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtMy0xLTEtMjg4MDU_d995ea18-8495-4fbb-88b1-31f1ecd76df3">162,994</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231" decimals="-3" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtNS0xLTEtMjg4MDU_c585896d-a4b6-4e38-bfd2-ef9e3d6ac161">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense (benefit)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtMS0xLTEtMjg4MDU_9600fdc1-1a61-40d1-9dbf-912f39655add">40,871</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtMy0xLTEtMjg4MDU_c6366db9-c0ed-4f77-90e3-9c66f3482b6c">393,317</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231" decimals="-3" name="us-gaap:IncomeTaxExpenseBenefit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtNS0xLTEtMjg4MDU_d0172786-0bca-40f9-a86d-cb14ffb01f52">352,446</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtMS0xLTEtMjg4MDU_2506ecde-e514-42d3-afd7-f66fcc79cc42">203,865</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231" decimals="-3" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtMy0xLTEtMjg4MDU_f3e25805-ceff-4669-9b6b-b134217caa23">556,311</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:NetIncomeLoss" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtNS0xLTEtMjg4MDU_05730576-ae44-45b4-afed-3833970b78e7">352,446</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;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 #000000;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 #000000;padding:0 1pt"></td></tr><tr><td colspan="6" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income per weighted-average common and common-equivalent share:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtMS0xLTEtMjg4MDU_879ced48-c03e-4c2b-a509-8079da797de4">1.19</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtMy0xLTEtMjg4MDU_c4bab9b6-9db6-496f-a129-e1fd9800166f">3.25</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usdPerShare" contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtNS0xLTEtMjg4MDU_0e1774fd-66fd-4e91-8cde-79fc37f15fc4">2.06</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Diluted</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktMS0xLTEtMjg4MDU_f1b424df-7e10-4ed6-ab6b-b0ee8ec8beb8">1.16</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;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-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktMy0xLTEtMjg4MDU_bfaeb174-d9f8-4979-91fc-c8d7cfef2372">3.17</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;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-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usdPerShare" contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktNS0xLTEtMjg4MDU_f716c406-f7fd-4d15-aa66-ff5f39b33438">2.01</ix:nonFraction>)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-bottom:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:53.936%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.520%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.821%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.520%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.821%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.582%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Balance Sheet</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy<br/></span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred tax assets</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:DeferredTaxAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtMS0xLTEtMjg4MDU_7400f06f-1240-4d3c-b031-a0a963daeffc">449,519</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231" decimals="-3" name="us-gaap:DeferredTaxAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtMy0xLTEtMjg4MDU_3dca24d5-d2d7-4ff4-ad39-4e94ac6a73f4">469,621</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231" decimals="-3" sign="-" name="us-gaap:DeferredTaxAssetsGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtNS0xLTEtMjg4MDU_b640a61f-eaeb-4a39-ab25-e25af2805e42">20,102</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred tax liabilities</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtMS0xLTEtMjg4MDU_c2a5dc30-2d2e-4c64-b766-05e24f81f3f0">332,344</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilities" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtMy0xLTEtMjg4MDU_64da8b50-4024-4ba2-9b96-40f62b82a81a">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231" decimals="-3" name="us-gaap:DeferredIncomeTaxLiabilities" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtNS0xLTEtMjg4MDU_7fe12834-368d-4da4-a073-1c00ad492c02">332,344</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-bottom:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:53.936%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.520%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.821%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.520%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.821%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.582%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Statement of Shareholders' Equity</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;Year Ended December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy<br/></span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Retained earnings</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:RetainedEarningsAccumulatedDeficit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtMS0xLTEtMjg4MDU_2cbdc561-6eb3-45e6-8f42-10ebcb6996cb">753,268</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231" decimals="-3" name="us-gaap:RetainedEarningsAccumulatedDeficit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtMy0xLTEtMjg4MDU_aa43fb26-1343-40aa-81f7-96940ba5d4d8">1,105,714</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231" decimals="-3" sign="-" name="us-gaap:RetainedEarningsAccumulatedDeficit" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtNS0xLTEtMjg4MDU_86d3700a-4c6a-47ea-8630-a4e6b2bc37c2">352,446</ix:nonFraction>)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Discrete Tax Items</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income tax expense included a decrease of $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMDA_a69346d3-ffb1-492c-8831-bb3e88240956">11,036,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMTI_20ef7233-12dc-4ae1-889e-4dcc58a4b50d">12,788,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMjg_c631d868-5fda-401f-bfcf-2ab476e29a08">6,472,000</ix:nonFraction> in 2019 related to stock options, primarily from the excess tax benefit arising from the difference between the deduction for tax purposes and the compensation cost recognized for financial reporting purposes from stock option exercises. The Company cannot predict the level of stock option exercises by employees in future periods.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income tax expense in 2021 and 2020 also included discrete tax items related to the final true-up of the prior year's tax accrual upon filing the related tax return. In 2020, this included a tax benefit of $<ix:nonFraction unitRef="usd" contextRef="i9c502ee279f04030a69eee355d54bd16_D20200101-20201231" decimals="-3" name="us-gaap:IncomeTaxReconciliationTaxSettlementsForeign" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE3NDE_5ed3bb0a-e45b-4b86-8c9b-f79d4344416f">13,984,000</ix:nonFraction> primarily to recognize a foreign tax benefit on certain gains taxed outside of the United States based on clarifications to rules relating to the use of foreign tax credits. This benefit was partially offset by tax expense for a transfer price adjustment in China of $<ix:nonFraction unitRef="usd" contextRef="i9f2450d3a26446f4b85444fb9284cece_D20200101-20201231" decimals="-3" name="us-gaap:IncomeTaxReconciliationTaxSettlementsForeign" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzIwMTE_8f37a195-4637-4b98-b996-71ad5798609a">3,267,000</ix:nonFraction> and smaller tax expense adjustments related to foreign tax filings of $<ix:nonFraction unitRef="usd" contextRef="ia5768b0e810e4157b4eae97d0d1b08c6_D20200101-20201231" decimals="-3" name="us-gaap:IncomeTaxReconciliationTaxSettlementsForeign" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzIwODQ_93518580-4775-4831-af39-d3f8114f809e">843,000</ix:nonFraction>.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2020, interpretations of a German law relating to withholding taxes on intellectual property rights emerged. The Company conducted a careful review of the interpretation, submitted required tax filings, and believes it has adequate reserves for this German tax exposure.</span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">62</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i1fc6affb4d754730a439793f8a0432fa" continuedAt="i1e5e912b541e4936a49e588b4694a6b5"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2019, the Company made changes to its international tax structure as a result of legislation by the European Union regarding low tax structures that resulted in an intercompany sale of intellectual property. The Company recorded an associated deferred tax asset and income tax benefit of $<ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-5" name="cgnx:DeferredTaxAssetsForeignTaxStructureChange" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzI2OTY_c6a1da24-e293-47b0-b89f-0d49a04bbfae">437,500,000</ix:nonFraction> in Ireland based on the fair value of the intellectual property, that is being realized over 15 years as future tax deductions. From a United States perspective, the sale was disregarded, and any future deductions claimed in Ireland were added back to taxable income as part of GILTI minimum tax. The Company recorded an associated deferred tax liability and income tax expense of $<ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzMwNzg_56c4cabc-3d1b-4fb8-9d05-be2b4ba8f507">350,000,000</ix:nonFraction>, representing the GILTI minimum tax related to the fair value of the intellectual property. The result of these transactions was a net discrete tax benefit of $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzMyNDA_b606a11b-c2c8-46c5-bf29-eaa3ad04d590">87,500,000</ix:nonFraction>. Management expects an immaterial impact on its current effective tax rate excluding discrete items in future years as a result of this change.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2019, in connection with the acquisition of Sualab, Co. Ltd., the Company migrated acquired intellectual property to certain subsidiaries to align with its corporate tax structure. As a result of this transaction, the Company recorded a discrete tax expense of $<ix:nonFraction unitRef="usd" contextRef="i4452ed78907f4d219ac405351100fab2_D20190101-20191231" decimals="-3" name="cgnx:EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzM2NDg_0884a4cd-842e-40c0-8883-befe41e6f85e">28,528,000</ix:nonFraction>, which included a reserve of $<ix:nonFraction unitRef="usd" contextRef="i4bc97ab3a3094188b15fe79424b28ed5_I20191231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzM2ODA_41a19472-2148-4e8f-ac9e-3f53b7369c9e">3,700,000</ix:nonFraction> for certain related tax uncertainties. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Tax Reserves</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:SummaryOfIncomeTaxContingenciesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MjU_e73b0503-5cd7-4219-b6f0-038e8c29d740" escape="true"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the reserve for income taxes, excluding gross interest and penalties, were as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:81.158%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:16.642%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2019</span></td><td style="padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzAtMS0xLTEtMjg4MDU_c60f048b-8c46-405c-8226-15bc34bb4ea9">11,591</ix:nonFraction>&#160;</span></td><td style="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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzEtMS0xLTEtMjg4MDU_ad295a2a-b5bc-4813-9349-3529c959666b">162</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzItMS0xLTEtMjg4MDU_c155652a-2b26-4edd-bf1f-9c1d704b9588">3,383</ix:nonFraction>&#160;</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="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzQtMS0xLTEtMjg4MDU_9a5cdad6-2ff8-4dce-bf4b-371a40658925">1,184</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzUtMS0xLTEtMjg4MDU_1699d5fb-051d-4efe-9c9f-1c5e521f0488">13,952</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzYtMS0xLTEtMjg4MDU_ed9dcac1-b310-421c-a5c8-0bdb1bd65327">280</ix:nonFraction>)</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzctMS0xLTEtMzk2ODU_278e88fd-443d-48f7-b81d-a6ce4c372e78">100</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzctMS0xLTEtMjg4MDU_019bf6d2-64a9-4e6e-94b2-f095417d5983">525</ix:nonFraction>&#160;</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="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzktMS0xLTEtMjg4MDU_6af22703-6eff-4175-ad5c-6e9bbd3ef315">485</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefits" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzEwLTEtMS0xLTI4ODA1_f949fee0-9de6-4fbd-846b-d77b67907743">13,812</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s reserve for income taxes, including gross interest and penalties, was $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="cgnx:UnrecognizedTaxBenefitsGross" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ2MjU_d1b8229e-77c3-4c80-946d-962a49a79952">15,808,000</ix:nonFraction> as of December 31, 2021, which included $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="us-gaap:LiabilityForUncertainTaxPositionsNoncurrent" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ2Njg_bf1f3fbe-fa69-4632-a293-014a768913fa">14,780,000</ix:nonFraction> classified as a non-current liability and $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ3MTM_6e1a8197-8519-4c11-857d-c2629787d097">1,028,000</ix:nonFraction> recorded as a reduction to non-current deferred tax assets. The Company's reserve for income taxes, including gross interest and penalties, was $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="0" name="cgnx:UnrecognizedTaxBenefitsGross" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ4NjA_56f1f861-710a-41d0-b682-88060cf38d71">15,285,000</ix:nonFraction> as of December 31, 2020, which included $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="0" name="us-gaap:LiabilityForUncertainTaxPositionsNoncurrent" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ5MDM_82b0c23e-e6a6-4793-9aa1-6906a09d8e69">14,257,000</ix:nonFraction> classified as a non-current liability and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="0" name="cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ5NDg_bcd3d9b4-8c51-43a8-9c4b-96f3e419eceb">1,028,000</ix:nonFraction> recorded as a reduction to non-current deferred tax assets. The amount of gross interest and penalties included in these balances was $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzUwODU_908fb27e-0d1d-4212-95e5-469b5bfd7135">1,996,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="0" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzUwOTI_91cd4586-8452-4f11-9b85-ea67ece8892f">1,332,000</ix:nonFraction> as of December&#160;31, 2021 and 2020, respectively. If the Company&#8217;s tax positions were sustained or the statutes of limitations related to certain positions expired, these reserves would be released and income tax expense would be reduced in a future period. As a result of the expiration of certain statutes of limitations, there is a potential that a portion of these reserves could be released, which would decrease income tax expense by approximately $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="cgnx:MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU1NjA_739d8672-38b4-4599-bc73-1c717105e66e">2,000,000</ix:nonFraction> to $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="cgnx:MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU1NjY_890e388b-376e-4be6-a126-ade9ccfc6f3d">3,500,000</ix:nonFraction> over the next twelve months.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has defined its major tax jurisdictions as the United States, Ireland, China, and Korea and within the United States, Massachusetts. The statutory tax rate is <ix:nonFraction unitRef="number" contextRef="iffc7295ab67445f8bd6fc5841d17366c_D20210101-20211231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU3NjM_fe237968-3269-4a7e-8063-92ef6ce812c2">12.5</ix:nonFraction>% in Ireland, <ix:nonFraction unitRef="number" contextRef="i6a2c8b01c55f45a383585d973a17734e_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU3ODE_427a0bbc-d352-404b-b290-7bf867ba023d">25</ix:nonFraction>% in China, and <ix:nonFraction unitRef="number" contextRef="ia7b70df5ca144c19aa32c0b1861d055c_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEwOTk1MTE2MzY4NzM_e79126be-173b-4748-a30e-05dc15a4eedd">22</ix:nonFraction>% in Korea, compared to the U.S. federal statutory corporate tax rate of <ix:nonFraction unitRef="number" contextRef="i0c3c1c01066849da8660af393f5f2d8c_D20210101-20211231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU4NTU_4b78f6d6-fffd-43e3-9c9d-32b08f5f6d97">21</ix:nonFraction>%. These differences resulted in a favorable impact to the effective tax rate of <ix:nonFraction unitRef="number" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU5Mzc_c4e27146-7e1a-4eed-bcd8-39a6410ddd11">5</ix:nonFraction> percentage points for 2021, <ix:nonFraction unitRef="number" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU5NzE_67b20751-d9ab-45fb-bec5-0f7b83006a4a">6</ix:nonFraction> percentage points for 2020, and <ix:nonFraction unitRef="number" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEwOTk1MTE2MzY5NTY_4a7ed864-2293-4747-a989-a0387d5e45b0">9</ix:nonFraction> percentage points for 2019. Management has determined that earnings from its legal entity in China will be indefinitely reinvested to provide local funding for growth, and that earnings from all other jurisdictions will not be indefinitely reinvested. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Within the United States, the tax years 2017 through 2020 remain open to examination by the Internal Revenue Service ("IRS") and various state taxing authorities. The tax years 2016 through 2020 remain open to examination by various taxing authorities in other jurisdictions in which the Company operates. The Company is under audit by the IRS for the tax years 2017 and 2018. Additionally, the Company is under audit by the Commonwealth of Massachusetts for tax years 2017 and 2018. Management believes the Company is adequately reserved for these </span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">63</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><ix:continuation id="i1e5e912b541e4936a49e588b4694a6b5"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">audits. The final determination of tax audits could result in favorable or unfavorable changes in our estimates. Any reserves associated with this audit period will not be released until the issue is settled or the audit is concluded. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Interest and penalties included in income tax expense were $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY4OTY_1a9b6951-233c-4aed-9b58-5b394bb01b51">281,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5MDA_a04ff342-6a24-4230-a923-b7282ddf0732">340,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5MDg_ddad0de7-7ac9-4bbb-9b63-7b8f432fbc63">116,000</ix:nonFraction> in 2021, 2020, and 2019, respectively.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash paid for income taxes totaled $<ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="0" name="us-gaap:IncomeTaxesPaidNet" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5ODU_23bc8c94-c00f-497d-af4a-4af9921feda9">49,435,000</ix:nonFraction> in 2021, $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:IncomeTaxesPaidNet" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5OTU_2185f2ed-1a79-46ed-968a-a1169ebb5d9d">33,695,000</ix:nonFraction> in 2020, and $<ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="0" name="us-gaap:IncomeTaxesPaidNet" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcwMDk_cca28c92-e46b-4290-8bc6-7ff547bbee83">13,443,000</ix:nonFraction> in 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Deferred Tax Assets and Liabilities</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MzA_8224b3d3-71f6-45c7-95d0-a08e9d507856" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred tax assets and liabilities, presented on a gross basis by jurisdiction, consisted of the following (in thousands):</span></div><div style="margin-top:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:66.495%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.735%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.737%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt 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:1pt solid #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Intangible asset in connection with change in tax structure</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzMtMS0xLTEtMjg4MDU_7f3f1a47-3ba1-44a1-91b4-947951160202">404,526</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzMtMy0xLTEtMjg4MDU_73aec3d6-b4a7-4989-bd93-6e16f6db742f">424,156</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Stock-based compensation expense</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzQtMS0xLTEtMjg4MDU_af9b5b53-1740-4604-b79a-e6cbab2d6d0d">15,279</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzQtMy0xLTEtMjg4MDU_d29489a1-8203-4557-a896-0ae1752a9b84">13,294</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal and state tax credit carryforwards</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzUtMS0xLTEtMjg4MDU_01612576-ade2-4b63-9323-c142b0564e2e">11,051</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzUtMy0xLTEtMjg4MDU_3187120d-01d2-42b9-ae45-16c24a1b5600">10,171</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Inventory and revenue related</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsInventory" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzYtMS0xLTEtMjg4MDU_1ff2b573-7ac2-41d8-b9e9-a24e8bab8ec7">7,426</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredTaxAssetsInventory" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzYtMy0xLTEtMjg4MDU_346b6d5e-79a6-483c-b40e-40d57cf8de00">5,976</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Bonuses, commissions, and other compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzctMS0xLTEtMjg4MDU_41a8c042-f59b-47e6-b49d-c184d7a8c734">7,263</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzctMy0xLTEtMjg4MDU_1c6901cb-33d5-4e54-902c-9fba7964b4d1">4,932</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Depreciation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:NoncurrentDeferredTaxAssetsDeprecation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzgtMS0xLTEtMjg4MDU_5ee575a3-9b97-4b21-9098-71d40af37d0f">5,395</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:NoncurrentDeferredTaxAssetsDeprecation" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzgtMy0xLTEtMjg4MDU_39e132c2-581b-4224-b313-b8a7e91f1502">4,211</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign net operating losses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzktMS0xLTEtMjg4MDU_4d1d6b7a-7350-482c-8b2f-4ceffc5fce8c">751</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzktMy0xLTEtMjg4MDU_6725ff1d-c5e9-4be8-b0e6-8d3f54ca6006">602</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:DeferredTaxAssetsOtherNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEwLTEtMS0xLTI4ODA1_803158de-9c24-499b-b303-0565bf1f2d62">9,023</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:DeferredTaxAssetsOtherNoncurrent" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEwLTMtMS0xLTI4ODA1_5de66853-a49e-442e-97cf-5cb58ca070eb">4,342</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax assets</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzExLTEtMS0xLTI4ODA1_62df57c6-520b-467f-a435-59123145acec">460,714</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzExLTMtMS0xLTI4ODA1_72629142-5b2e-4402-8377-e8beb6ab0447">467,684</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Valuation allowance</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsValuationAllowance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEyLTEtMS0xLTI4ODA1_91e00f2b-c257-45b7-9491-ed7140b18840">8,188</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredTaxAssetsValuationAllowance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEyLTMtMS0xLTI4ODA1_393784c5-51a1-4873-9c82-54e9b9e9a641">8,568</ix:nonFraction>)</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:0 1pt"></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:DeferredTaxAssetsLiabilitiesNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEzLTEtMS0xLTI4ODA1_a1522544-ace5-45f8-8b6c-589aed0aa113">452,526</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt 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:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:DeferredTaxAssetsLiabilitiesNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEzLTMtMS0xLTI4ODA1_7fcf8fb5-f1d2-4f4a-8e8a-1b77c632c604">459,116</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:14pt"><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax liabilities:</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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">GILTI tax basis differences in connection with change in tax structure</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzE2LTEtMS0xLTI4ODA1_246cf6c0-6255-42ef-938a-c546de1f7be2">327,725</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzE2LTMtMS0xLTI4ODA1_984bc615-23e8-4d54-8aaf-f3849eb37458">339,364</ix:nonFraction>)</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="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 style="height:14pt"><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></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net deferred taxes</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="cgnx:DeferredIncomeTaxAssetsLiabilitiesNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzIyLTEtMS0xLTM5NzA2_33e3df49-b980-4c7f-ab14-67a02f114c86">124,801</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="cgnx:DeferredIncomeTaxAssetsLiabilitiesNet" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzIyLTMtMS0xLTQxNjU4_b03e8b80-0830-499f-b6b1-134e350a969e">119,752</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, the Company had a deferred tax asset for foreign tax credit carryforwards of $<ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="0" name="us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsForeign" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE2NDkyNjc0NTgxMjU_25f9350c-39e2-4cad-9374-3362ee314132">1,730,000</ix:nonFraction>. These credits are considered to be realizable and will be utilized in a future period.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, the Company had a valuation allowance for state research and development tax credits of $<ix:nonFraction unitRef="usd" contextRef="id624ea8a42db4ca6a9c8968c5c834a62_I20211231" decimals="0" name="us-gaap:DeferredTaxAssetsValuationAllowance" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcyOTY_f39dfcce-cbe7-4a52-85e8-edd3be361784">11,750,000</ix:nonFraction> that was not considered to be realizable. Should these credits be utilized in a future period, the reserve associated with these credits would be reversed in the period when it is determined that the credits can be utilized to offset future state income tax liabilities. As of December 31, 2021, the Company had state research and development tax credit carryforwards of $<ix:nonFraction unitRef="usd" contextRef="i2d7f829283d84ef790a2db8c1f7a3fcc_I20211231" decimals="0" name="us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzc2NzA_3c3c183e-facf-46c4-8ba8-2f690c6174bb">13,250,000</ix:nonFraction>, which will begin to expire for the 2025 tax return.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">While the deferred tax assets, net of valuation allowance, are not assured of realization, management has evaluated the realizability of these deferred tax assets and has determined that it is more likely than not that these assets will be realized. In reaching this conclusion, we have evaluated certain relevant criteria including the Company&#8217;s historical profitability, current projections of future profitability, and the lives of tax credits, net operating losses, and other carryforwards. Should the Company fail to generate sufficient pre-tax profits in future periods, we may be required to establish valuation allowances against these deferred tax assets, resulting in a charge to current operations in the period of determination.</span></div></ix:continuation><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">64</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_178"></div><hr style="page-break-after:always"/><div style="min-height:58.5pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div><div><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - NOTES TO CONSOLIDATED FINANCIAL STATEMENTS</span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 19:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:EarningsPerShareTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzcxMQ_e0584c1d-0dcc-4696-9971-76b1e5ca59fb" continuedAt="i0e510a4fb7e04237a56974d29d5f55d5" escape="true">Weighted Average Shares</ix:nonNumeric></span></div><ix:continuation id="i0e510a4fb7e04237a56974d29d5f55d5"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzcwNA_5d3c376d-9a1f-47d1-832b-e97a5d70eda2" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Weighted-average shares were calculated as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:55.058%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.976%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.976%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.124%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></td></tr><tr><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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Basic weighted-average common shares outstanding</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItMS0xLTEtMjg4MDU_08af47b9-1ce7-4382-aa1e-a6e52d26d292">176,463</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItMy0xLTEtMjg4MDU_4dea4dec-8555-428e-96d5-4697595d57a3">173,489</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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 #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItNS0xLTEtMjg4MDU_d03dedbb-50e9-4e02-b756-9685c76716b5">171,194</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of dilutive stock awards</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtMS0xLTEtMjg4MDU_6296d338-3d5d-421f-acc4-a9b88fbdb834">3,453</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtMy0xLTEtMjg4MDU_f441f917-c1e2-4a86-a4b6-cc3622d27bca">3,103</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtNS0xLTEtMjg4MDU_6608bef6-1275-4447-8366-691f054b5097">4,075</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Diluted weighted-average common and common-equivalent shares outstanding</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtMS0xLTEtMjg4MDU_ded06639-23bc-4e05-8e7c-5066d06f6f2d">179,916</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtMy0xLTEtMjg4MDU_873852bc-272c-4004-a288-94ca53bd7870">176,592</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtNS0xLTEtMjg4MDU_088cf7d0-c5dc-4e28-bf7b-e4f1251a5d05">175,269</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock options to purchase <ix:nonFraction unitRef="shares" contextRef="i7c9f8c01dcbb4324b28ecd41ace87fd9_D20210101-20211231" decimals="0" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEzMw_bd135b3f-738e-4b2e-ae8d-0893e81cbaff">497,504</ix:nonFraction>, <ix:nonFraction unitRef="shares" contextRef="i8bd1c6a0aebf4c03923831a10dbbf2a6_D20200101-20201231" decimals="0" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEzNw_a2029492-df70-4fff-b359-1911ec0c6064">4,371,194</ix:nonFraction>, and <ix:nonFraction unitRef="shares" contextRef="i197680ce6f4a47b08921cc9e95e40369_D20190101-20191231" decimals="0" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzE0NQ_c0afaa15-402d-4929-ae65-fe96fe69dc5e">5,735,608</ix:nonFraction> shares of common stock, on a weighted-average basis, were outstanding in 2021, 2020, and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. Restricted stock units totaling <ix:nonFraction unitRef="shares" contextRef="ic686f763cf704bc2867ccfd9c33dc6c7_D20210101-20211231" decimals="0" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEwOTk1MTE2Mjg1MzM_e9d9631d-88af-406e-9335-e3aaa10b63d5">605</ix:nonFraction>, <ix:nonFraction unitRef="shares" contextRef="i35cd9fec0a4c4a84826235af293727b2_D20200101-20201231" decimals="0" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzM5MA_a5430abd-d420-40f2-88b4-23b696f36bd3">3,826</ix:nonFraction>, and <ix:nonFraction unitRef="shares" contextRef="ica46cebde58f4747ba082879193d850e_D20190101-20191231" decimals="0" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzM5Nw_7acc35d9-4ec3-4006-9d02-685e6e548f69">13,092</ix:nonFraction> shares of common stock, on a weighted-average basis, were outstanding in 2021, 2020, and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive.</span></div></ix:continuation><div id="i929e97f6a142453c8a8057dbb6451118_181"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 20:&#160;<ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:SegmentReportingDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExODc_3e523a4c-132d-4526-af48-7aac20dd32f0" continuedAt="i607bf39d86984ac4b488db202630c072" escape="true">Segment and Geographic Information</ix:nonNumeric></span></div><ix:continuation id="i607bf39d86984ac4b488db202630c072" continuedAt="i7881e2f87cf44db48e5745c11645edc8"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company operates in <ix:nonFraction unitRef="segment" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="INF" name="us-gaap:NumberOfReportableSegments" format="ixt-sec:numwordsen" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5Xzcz_a1834e9b-4ac2-4093-96f2-072e8a6ca64f">one</ix:nonFraction> segment, machine vision technology. The Company&#8217;s chief operating decision maker is the chief executive officer, who makes decisions to allocate resources and assesses performance at the corporate level. The Company offers a variety of machine vision products that have similar economic characteristics, have the same production processes, and are distributed by the same sales channels to the same types of customers.</span></div><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExOTI_df76ff1b-1165-4929-8dff-64d3a58375c5" escape="true"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes information about geographic areas (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:28.665%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.389%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.389%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.243%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.389%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.393%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">United&#160;States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Greater China </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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Other</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;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 #000000;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 #000000;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 #000000;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 #000000;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia69b052cbadd44c094541da53ba42a51_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItMS0xLTEtMjg4MDU_da7ef867-bcbc-4aab-b1ab-2ecfb9269bb2">393,690</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItMy0xLTEtMjg4MDU_6ff88039-958b-40cc-9a2d-4b3697449ab7">247,744</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItNS0xLTEtMjg4MDU_d8c8af01-a6bb-4a80-9ac6-9e8c4d6400fe">200,135</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic575a52a81ce437ca78b900c07321681_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItNy0xLTEtMjg4MDU_02bcff06-af7e-41b5-811e-92516f593cf2">195,529</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItOS0xLTEtMjg4MDU_cb4b26ea-2895-4d4a-b0c6-e734a4e3da00">1,037,098</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idcbb00e30a054c9b8dc545052284d730_I20211231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtMS0xLTEtMjg4MDU_9bd70e65-8a4b-4b97-b107-85ba019b9de5">63,141</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib4cda65b83b74a7dbc080d8fedc4d2d9_I20211231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtMy0xLTEtMjg4MDU_86554e87-ad60-4558-b8cd-fe335ea39b8b">16,982</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib4944b90959b4b208c0bdfb2c87ee10e_I20211231" decimals="-3" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtNS0xLTEtMjg4MDU_6313ae38-0c78-4e97-91dd-c01266212ca2">960</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic40beac310a64112b7eb01f6089573c1_I20211231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtNy0xLTEtMjg4MDU_0d7429e9-c016-4ee4-9185-19a127baf977">3,705</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtOS0xLTEtMjg4MDU_85125cc8-a495-4e4b-a845-1086cca63759">84,788</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id5d24b55c6524d6790756827a7d2e825_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtMS0xLTEtMjg4MDU_4b119ac3-d757-4492-8da8-23437be94a3b">280,205</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtMy0xLTEtMjg4MDU_3bfbcf66-327c-4537-948f-7f05e4f9369f">208,787</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtNS0xLTEtMjg4MDU_2c497f8b-eb4c-4fe0-b761-62744957ac12">168,287</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibf814c6bf04c4e9f9549f0a609b74a55_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtNy0xLTEtMjg4MDU_e39904f7-3037-4043-88ab-dbad16bdd5a2">153,741</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtOS0xLTEtMjg4MDU_1bc88923-1afb-40d4-8270-54e654b6cb90">811,020</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iaa126896ec044da89c6508ff396378a1_I20201231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtMS0xLTEtMjg4MDU_8374e9c1-8846-4f87-943c-658aedb3c5ab">60,911</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ibf2b1fc85cfa4174b619517220508ae0_I20201231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtMy0xLTEtMjg4MDU_3904e8bc-9b3f-4aa7-937e-ccfce0cef826">20,014</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3c5581736dbd4ad78c3d6e655e93c4ea_I20201231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtNS0xLTEtMjg4MDU_0c6ab6c5-1cc9-42a6-9959-c344810a7ed4">1,278</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ife8b2f31ce1a4b4faa1a745448f716d4_I20201231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtNy0xLTEtMjg4MDU_7555d633-d136-4c48-a6b2-a028df08ea4e">4,764</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtOS0xLTEtMjg4MDU_f66a2abc-c697-47cd-b7eb-8a9bf008f4c2">86,967</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2019</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><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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i14b5eafbd9ff4be7b9cc2e0919d2dbc7_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtMS0xLTEtMjg4MDU_f0140f10-254e-48e7-9ebc-ec5484678d7b">247,689</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtMy0xLTEtMjg4MDU_e593257e-3f76-4416-9004-5e120bed8474">227,738</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtNS0xLTEtMjg4MDU_20d8a720-39df-40a4-86a1-fd9e6477e08f">115,061</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4921f86f652d4f2e94c4bf9eb25c62e9_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtNy0xLTEtMjg4MDU_2dfbe906-aea1-4b28-a83e-46d61bf81b46">135,137</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231" decimals="-3" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtOS0xLTEtMjg4MDU_af4ab4dc-e9c2-4c4f-9891-d7db6cc28fa5">725,625</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6413254449a541988fcda017a15d0532_I20191231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktMS0xLTEtMjg4MDU_77af6107-6286-4af3-8798-88e8be2551ad">68,496</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ieee8eed26dbb44f6aae613473b0dd2ef_I20191231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktMy0xLTEtMjg4MDU_2f4a3cd4-d298-4ae9-a8e7-5e07fd12c1f8">21,691</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic693d5b307414a6c964e0ec425adb970_I20191231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktNS0xLTEtMjg4MDU_30f31139-1094-4ef0-b7f5-dbf9b664d0ee">1,487</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic325874dd99f48839c0a0457e159b140_I20191231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktNy0xLTEtMjg4MDU_d28510e3-c745-46b6-9235-9572f0935fc6">3,602</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia991b13c7b074439964a26d579235ee4_I20191231" decimals="-3" name="us-gaap:NoncurrentAssets" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktOS0xLTEtMjg4MDU_3dbdd8d9-a4ec-48fc-855f-0862178dd7f4">95,276</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue is presented geographically based on the customer&#8217;s country of domicile. </span></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue from a single customer accounted for <ix:nonFraction unitRef="number" contextRef="if4d3420bee2e4188a13523c87c8f50bf_D20210101-20211231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2Mjk5ODE_7c0b4498-10f0-4c39-a856-0bef04b89fb6">17</ix:nonFraction>% and <ix:nonFraction unitRef="number" contextRef="i7f7dc7e149214e86b41eb5b243af420c_D20200101-20201231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2Mjk5ODY_eaf33093-b293-4d26-a307-7827fe30e310">14</ix:nonFraction>% of total revenue in 2021 and 2020, respectively. Revenue from this customer was not greater than 10% of total revenue in 2019. Accounts receivable from this same customer accounted for <ix:nonFraction unitRef="number" contextRef="i4b9aad94c75f49d5ae535996bb5e0901_D20210101-20211231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzAxOTQ_58e89779-0cb7-4298-a968-cb1328f622e3">15</ix:nonFraction>% and <ix:nonFraction unitRef="number" contextRef="i7c5b8c599c9542b590f4d0e8f2ced040_D20200101-20201231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExMjE_8a68e9e5-0396-4ad6-ac04-05e6ddbe273c">19</ix:nonFraction>% of total accounts receivable as of December 31, 2021 and 2020, respectively.</span></div></ix:continuation><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i7881e2f87cf44db48e5745c11645edc8">Revenue from a second customer accounted for <ix:nonFraction unitRef="number" contextRef="i64c87fe8f4fd462c8a6abc5bb13ea76c_D20200101-20201231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MDI_c1e9b0de-9697-44d2-9ed1-7b8c8b52af96">13</ix:nonFraction>% of total revenue in 2020. Revenue from this customer was not greater than 10% of total revenue in 2021 or 2019. Accounts receivable from this same customer accounted for <ix:nonFraction unitRef="number" contextRef="iaf6c363e3eef41d1b00219abbd835f2d_D20210101-20211231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MDc_94dab11b-7f35-4606-8e1e-63288ac470fb">11</ix:nonFraction>% and <ix:nonFraction unitRef="number" contextRef="i93b04104f7b44c7996743be1d0745981_D20200101-20201231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MTI_beb44829-ba5e-4967-8b7e-e8ed9789391b">20</ix:nonFraction>% of total accounts receivable as of December 31, 2021 and 2020, respectively.</ix:continuation>  </span></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">65</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_187"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 21: <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:BusinessCombinationDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzI3NDI_e7b5b60d-3326-4a69-ae7e-ba4dac3f44e5" continuedAt="i1119940a42d143139135cbc11d2f93ee" escape="true">Business Acquisitions</ix:nonNumeric></span></div><ix:continuation id="i1119940a42d143139135cbc11d2f93ee" continuedAt="i30d5d2c448df469a958db31513021574"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Sualab Co., Ltd.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On October 16, 2019, the Company acquired all the outstanding shares of Sualab Co., Ltd. (Sualab), a provider of deep learning-based vision software for industrial image analysis based in Korea. The total consideration of $<ix:nonFraction unitRef="usd" contextRef="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016" decimals="-3" name="us-gaap:BusinessCombinationConsiderationTransferred1" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzI3NQ_8a3c2d78-2e9b-487b-b41d-26735a882737">193,638,000</ix:nonFraction> included cash payments of $<ix:nonFraction unitRef="usd" contextRef="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016" decimals="-3" name="us-gaap:PaymentsToAcquireBusinessesGross" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzMwNA_2f443ba3-eb56-4b7a-a74d-d769a9dbf23d">170,602,000</ix:nonFraction> upon closing. In the fourth quarter of 2020, the Company recorded a credit to goodwill in the amount of $<ix:nonFraction unitRef="usd" contextRef="i237d35dadb3345778dc0eb90a293a886_D20200928-20201231" decimals="-3" name="us-gaap:PaymentsForProceedsFromPreviousAcquisition" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzEwOTk1MTE2Mzc0NjY_71980b38-59ba-4baf-a11c-69d110054906">1,004,000</ix:nonFraction> representing a purchase price adjustment. The remaining consideration consists of deferred payments of $<ix:nonFraction unitRef="usd" contextRef="i9d7909d7f5534ecaae7d688eb528cbe5_I20191016" decimals="-3" name="us-gaap:BusinessCombinationContingentConsiderationLiability" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzUyNQ_68f123c2-3103-4d9f-8cf3-a10fd0aa6cfb">24,040,000</ix:nonFraction> that may become payable in October 2023, contingent upon the continued employment of key talent, and is being recorded as compensation expense over the four-year period.</span></div></ix:continuation><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i30d5d2c448df469a958db31513021574">Deteriorating global economic conditions from the COVID-19 pandemic triggered a review of long-lived assets for potential impairment in the second quarter of 2020. This review resulted in intangible asset impairment charges totaling $<ix:nonFraction unitRef="usd" contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIwNTM_f18dc054-73ea-4a92-b4ab-34859881e23e">19,571,000</ix:nonFraction> in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab. Completed technologies, in-process technologies, and customer relationships acquired from Sualab were impaired in the amounts of $<ix:nonFraction unitRef="usd" contextRef="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzMzU_d9f130a9-401e-46f3-95cb-ef777d6c1f51">10,070,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzMzk_43329db6-618e-4ce9-b01a-daf02fb30f2b">5,900,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628" decimals="-3" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzNDc_0a145e11-dd7a-47dd-b147-ca94007fe27f">3,382,000</ix:nonFraction>, respectively.</ix:continuation> </span></div><div style="text-align:justify"><span><br/></span></div><div id="i929e97f6a142453c8a8057dbb6451118_193"></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 22: <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzU_264b0137-75fc-49fc-b4c5-a9714a548593" continuedAt="icfb23723a2dc454a93f980264b535fd7" escape="true">Restructuring Charges</ix:nonNumeric></span></div><ix:continuation id="icfb23723a2dc454a93f980264b535fd7" continuedAt="i75ff934c54124afcbd974ddd946c6ed7"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On May 26, 2020, the Company's Board of Directors approved a restructuring plan intended to reduce the Company's operating costs, optimize its business model, and address the impact of the COVID-19 pandemic. The restructuring plan included a global workforce reduction of approximately <ix:nonFraction unitRef="number" contextRef="i9ff3a1f2d3354f8b9e1a3862c0d45393_I20200526" decimals="2" name="us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzMyMw_92c4a693-f824-4f89-8b3c-4dcfc2194f87">8</ix:nonFraction>% and office closures. The Company recorded restructuring charges from these actions totaling $<ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzQxOA_cad14c00-8c13-4a8f-9b95-865f623d4ff1">15,924,000</ix:nonFraction> in 2020 which are included in &#8220;Restructuring charges&#8221; on the Consolidated Statements of Operations. As of December 31, 2020, the majority of these actions were completed and no additional charges are expected to be incurred in future periods in relation to this restructuring plan. There were no restructuring charges recognized in 2021.</span></div><div style="text-align:justify"><span><br/></span></div><ix:nonNumeric contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" name="us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzM_97ef8f96-2fc4-4708-a651-5534e354caa2" escape="true"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the restructuring charges for the year ended December 31, 2020 (in thousands):</span></div><div><span><br/></span></div><div style="text-align:justify"><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:72.876%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td style="width:0.1%"></td><td style="width:0.530%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:24.194%"></td><td style="width:0.1%"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Amount</span></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">One-time termination benefits</span></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i37df6f70493e443da67537c212115ae6_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzEtMy0xLTEtMjg4MDU_37c5b8d5-6cf8-4a91-82a2-582c23638c3f">10,159</ix:nonFraction>&#160;</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="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Contract termination costs</span></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0045cc5a44304747895b82294c5175c6_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzItMy0xLTEtMjg4MDU_25b2f15e-d1f9-457d-a41a-d9599ae7ee31">5,207</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other associated costs</span></td><td colspan="3" style="display:none"></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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if297a806261f492eba965b248dda338d_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzMtMy0xLTEtMjg4MDU_ecb3f7d8-26dc-419f-bec4-ddef4fcc83e6">558</ix:nonFraction>&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="3" style="display:none"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzQtMy0xLTEtMjg4MDU_e21f38c2-207a-475a-98e4-898ceb0e7dec">15,924</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></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><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><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><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><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><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td></tr></table></div></ix:nonNumeric><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">One-time termination benefits included severance, health insurance, and outplacement services for <ix:nonFraction unitRef="employees" contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231" decimals="0" name="us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminated" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzkxOA_3b3ca0cc-8065-42ac-8c06-bdd2b3b0f1bf">181</ix:nonFraction> employees who were either terminated during the second quarter of 2020, or were notified during the second quarter of 2020 that they would be terminated at a future date. For employees not required to render service beyond a minimum retention period, the one-time termination benefits were recognized in the second quarter of 2020. Otherwise, these benefits, including retention bonuses for selected employees, were recognized over the remaining service period which was completed by December 31, 2020.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Contract termination costs included operating lease asset impairment charges for eleven offices closed prior to the end of the contractual lease term. These costs also included the write-off of leasehold improvements and other equipment related to these abandoned offices that had no alternative use, as well as other associated operating costs, such as utilities, that the Company is obligated to pay for the remainder of the lease term. These contract termination costs were primarily recognized in the second quarter of 2020 when the Company ceased using the property for economic benefit. </span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other associated costs primarily included legal fees related to the employee termination actions, which were recognized when the services were performed. </span></div></ix:continuation><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">66</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><ix:continuation id="i75ff934c54124afcbd974ddd946c6ed7" continuedAt="i1080bea3d9b540ec98db96642f2a204b"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzQ_884fb63b-838d-4527-af0d-759aa82f112c" escape="true"><div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the activity in the Company&#8217;s restructuring reserve, which is included in &#8220;Accrued expenses&#8221; on the Consolidated Balance Sheets (in thousands):</span></div><div style="text-align:justify"><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:38.227%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.104%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.384%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.081%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.384%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.788%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.384%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.548%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">One-time Termination Benefits</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Contract Termination Costs</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Other Associated Costs</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7a0d52863fc64903a1109399c06704c4_I20191231" decimals="-3" name="us-gaap:RestructuringReserve" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtMS0xLTEtMjg4MDU_7eda4e14-65a2-4924-accc-232a7b4ce42c">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idb40d4ead52e4f36857491315a43c857_I20191231" decimals="-3" name="us-gaap:RestructuringReserve" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtMy0xLTEtMjg4MDU_a63afe9d-1665-472d-86ea-8ce351ab4fca">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iba8f6eeab77d4be9ab1ba46ab39e7c44_I20191231" decimals="-3" name="us-gaap:RestructuringReserve" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtNS0xLTEtMjg4MDU_44f5a097-a754-45c0-bcf1-161aa246a621">&#8212;</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic9333dbc34ff416cb78724fc271fe455_I20191231" decimals="-3" name="us-gaap:RestructuringReserve" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtNy0xLTEtMjg4MDU_c5172119-9fd9-418d-94ab-e6edac5b104d">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Restructuring charges</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItMS0xLTEtMjg4MDU_244ba3d4-1613-4fda-8db6-ad3a3c6d7775">11,329</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItMy0xLTEtMjg4MDU_f5e03248-b587-4b0f-8be0-acec33e2410a">5,220</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItNS0xLTEtMjg4MDU_53cc9fa9-8de1-45d6-bdca-ae5fa3d6a9ba">636</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItNy0xLTEtMjg4MDU_06c841d2-6925-4aab-98b1-05932ff7a44c">17,185</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash payments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsForRestructuring" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtMS0xLTEtMjg4MDU_a2188970-d6c3-4edf-97b7-0b3c80bede51">8,717</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsForRestructuring" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtMy0xLTEtMjg4MDU_8065d37f-21cc-4a2d-8f54-04c8a180bfb9">317</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsForRestructuring" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtNS0xLTEtMjg4MDU_205f2944-1286-467e-af7c-d80f2221ffbf">563</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsForRestructuring" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtNy0xLTEtMjg4MDU_119e00e8-2b25-4fca-99f3-264ce4697df0">9,597</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-cash restructuring charges</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveSettledWithoutCash2" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtMS0xLTEtMjg4MDU_0c578a22-5d47-4085-8f0a-c1e1e23b516d">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveSettledWithoutCash2" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtMy0xLTEtMjg4MDU_828a50c7-1798-4b12-ad5e-280c80c36023">4,163</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveSettledWithoutCash2" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtNS0xLTEtMjg4MDU_ce822bdf-3ffb-4a98-a9e5-73be56ad7eee">&#8212;</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveSettledWithoutCash2" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtNy0xLTEtMjg4MDU_fdbb372f-a513-4646-b381-9b1992a773a1">4,163</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Restructuring adjustments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:RestructuringReserveAccrualAdjustment1" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtMS0xLTEtMjg4MDU_1cfac3e1-96e1-4ec2-a11d-82e5add7c1b2">1,170</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:RestructuringReserveAccrualAdjustment1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtMy0xLTEtMjg4MDU_a536b9e6-30c5-4fc8-b897-3e32a523a911">13</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:RestructuringReserveAccrualAdjustment1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtNS0xLTEtMjg4MDU_db2f8b0e-36bc-45fe-ba80-5f07eca333cd">78</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:RestructuringReserveAccrualAdjustment1" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtNy0xLTEtMjg4MDU_ef28b8cc-15a4-489c-86b5-7414fde67559">1,261</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtMS0xLTEtMjg4MDU_b0991e49-39bf-43c5-8652-2de4f155331d">182</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtMy0xLTEtMjg4MDU_ba41d2eb-7993-4241-bca0-c44c1a88cd7a">23</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtNS0xLTEtMjg4MDU_a3886c95-10b9-41f4-93ca-c1adc5762d26">20</ix:nonFraction>&#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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtNy0xLTEtMjg4MDU_e61ccb78-e87e-412f-8f4e-1b9702f734ce">225</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib7bc21127ccf42c5bc8aaa79832c5c1a_I20201231" decimals="-3" name="us-gaap:RestructuringReserve" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctMS0xLTEtMjg4MDU_8a9b833b-7f8e-44ee-b290-5d8840995895">1,624</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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 colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie3121f3a9e4f4a46a3cc68910d57a5fd_I20201231" decimals="-3" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctMy0xLTEtMjg4MDU_70991245-5311-4b6e-892a-d7e3944b1c97">750</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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 colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia644d53df91e4028845acea026614935_I20201231" decimals="-3" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctNS0xLTEtMjg4MDU_c4bf920f-b02f-448b-b7bc-ef3f672ead8a">15</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</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 colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i718830787ba64d9698a6ce9053392157_I20201231" decimals="-3" name="us-gaap:RestructuringReserve" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctNy0xLTEtMjg4MDU_983ed93a-ed1a-4930-8454-777bb7f642b1">2,389</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="display:none"></td><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><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="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash payments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsForRestructuring" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktMS0xLTEtMzE4OTk_5a873642-660d-4dc4-88a4-03fd581196c0">1,142</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsForRestructuring" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktMy0xLTEtMzE4OTk_c0eed3d1-adc6-49c5-a142-e469783c0356">227</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsForRestructuring" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktNS0xLTEtMzE4OTk_c39ebe70-c40d-4230-9dd6-91bf531210da">15</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231" decimals="-3" name="us-gaap:PaymentsForRestructuring" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktNy0xLTEtMzE4OTk_8b48ff4a-3a4c-4b55-8c99-98b77fbfb263">1,384</ix:nonFraction>)</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="display:none"></td><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><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><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="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTEtMS0xLTMxODk5_eb31acca-c248-4658-9dc3-0400cf4b69b1">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTMtMS0xLTMxODk5_aef82e78-fba2-46d7-a9bf-ff6f3d47a363">7</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTUtMS0xLTMxODk5_2c36355f-ecf5-4398-aa5e-f5f08aa3c928">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231" decimals="-3" sign="-" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTctMS0xLTMxODk5_bd7ca028-bc9c-4ad9-bb26-22538946cc05">7</ix:nonFraction>)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib389c9638e4c4a1d98465f63dd2ef34f_I20211231" decimals="-3" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTEtMS0xLTMxOTMx_56d48ade-0b47-4554-925b-23df5c2fd77e">482</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iee99fc76bf3243cbb665a0905540cbb9_I20211231" decimals="-3" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTMtMS0xLTMxOTMx_9186d782-31d3-40a3-a3cd-9b69e01ab3d5">516</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0c0cc45df87a4b288075510563ebd8e5_I20211231" decimals="-3" name="us-gaap:RestructuringReserve" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTUtMS0xLTMxOTMx_5a03bc1b-84c9-4056-b9cb-a8cffab329e5">&#8212;</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;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-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iac93fa12ce9346e89d74784d16a4f197_I20211231" decimals="-3" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTctMS0xLTMxOTMx_3208ef0c-df3d-4172-8350-299272da6d73">998</ix:nonFraction></span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div></ix:nonNumeric></ix:continuation><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i1080bea3d9b540ec98db96642f2a204b">Restructuring adjustments related to one-time termination benefits consisted primarily of the favorable true-up of severance estimates based on final agreements and health insurance estimates based on employee elections.</ix:continuation> </span></div><div id="i929e97f6a142453c8a8057dbb6451118_196"></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">NOTE 23: <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="us-gaap:SubsequentEventsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzIxOQ_f1167668-9c8a-4d88-8386-ff2cc9eaed2b" continuedAt="ida8267fb59584f5996d50d5187535c8e" escape="true">Subsequent Events</ix:nonNumeric></span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="ida8267fb59584f5996d50d5187535c8e">On February 17, 2022, the Company's Board of Directors declared a cash dividend of $<ix:nonFraction unitRef="usdPerShare" contextRef="ia0707d1af0314a219bcf26b1a7beb49a_I20220217" decimals="INF" name="us-gaap:DividendsPayableAmountPerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzExNQ_52a52791-96e0-4e22-bb9c-407b6dd6ad69">0.065</ix:nonFraction> per share. The dividend is payable <ix:nonNumeric contextRef="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217" name="us-gaap:DividendsPayableDateDeclaredDayMonthAndYear" format="ixt:date-monthname-day-year-en" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzE1Mw_0c7efb42-1e82-49a0-b657-226202fa0e8b">March 18, 2022</ix:nonNumeric> to all shareholders of record as of the close of business on <ix:nonNumeric contextRef="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217" name="us-gaap:DividendsPayableDateOfRecordDayMonthAndYear" format="ixt:date-monthname-day-year-en" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzIxNw_519e290b-5b12-496e-841d-09b3fc52f25c">March 4, 2022</ix:nonNumeric>.</ix:continuation></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">67</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_202"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION &#8211; <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90ZXh0cmVnaW9uOmM2OGQyYWY0NzU1ZTRkZWJhZjBiNjc2MjY2MzFhZGMzXzEzNg_b4b9caf0-8cac-4dc2-920b-a03735d0e41b" continuedAt="i38f026f3433a45e7b4380a72ebee01f0" escape="true">SCHEDULE II &#8211; VALUATION AND QUALIFYING ACCOUNTS</ix:nonNumeric></span></div><ix:continuation id="i38f026f3433a45e7b4380a72ebee01f0"><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.269%"><tr><td style="width:1.0%"></td><td style="width:30.711%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.536%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.472%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.536%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.472%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.536%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.472%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.536%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.914%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.472%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:2.581%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:8.481%"></td><td style="width:0.1%"></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Additions</span></td><td colspan="3" style="padding:0 1pt"></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Description</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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance&#160;at<br/>Beginning<br/>of Period</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Charged&#160;to<br/>Costs and<br/>Expenses</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Charged<br/>to Other<br/>Accounts</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Deductions</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Other</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance&#160;at<br/>End of<br/>Period</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="33" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(In thousands)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Allowance for Credit Losses on Accounts Receivable:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2021</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6d0d3605ae3a47539276eb78b04403f8_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMi0xLTEtMjg4MDU_11e22b5e-c965-4050-bf2e-398696495915">831</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtNC0xLTEtMjg4MDU_2f154ae6-cea2-4348-89c3-81541d3af325">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtOC0xLTEtMjg4MDU_b1ba36a8-5899-4fa6-ac9a-dede1261bb04">55</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMTAtMS0xLTI4ODA1_96d1472f-8be3-4e41-996f-1adc322383f9">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i5ee1836468e946feba304dc524cc45e2_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMTItMS0xLTI4ODA1_2be33b75-cfc6-4f22-b133-84bbaa65e623">776</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3dbe155ff0004ff98791a6784bd4c861_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMi0xLTEtMjg4MDU_dec0cb85-62b4-4a5c-bb4b-de2a5930bf0c">530</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtNC0xLTEtMjg4MDU_23aa080b-4674-4b54-a24e-498314783e9b">600</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtOC0xLTEtMjg4MDU_96ebc5f2-63cd-4b83-b4ec-97fc34c60e12">300</ix:nonFraction>)</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:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMTAtMS0xLTI4ODA1_3bbf00fc-d3a3-4855-8367-83a8c2820bef">1</ix:nonFraction>&#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:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6d0d3605ae3a47539276eb78b04403f8_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMTItMS0xLTI4ODA1_1b9af348-33dd-49f2-aaa5-29db063463b2">831</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id3be38a15bc644abb5cb39c413e9327b_I20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMi0xLTEtMjg4MDU_a5902860-ce23-4d21-bf3d-4a14ff6b99e1">596</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtNC0xLTEtMjg4MDU_a9228485-fb86-4665-941a-ba27d3304ed2">215</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtOC0xLTEtMjg4MDU_fae6bc3e-bae2-4683-abea-5e020d9fc894">286</ix:nonFraction>)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMTAtMS0xLTI4ODA1_481d1e62-7151-4f77-9614-f0f92849d35d">5</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3dbe155ff0004ff98791a6784bd4c861_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMTItMS0xLTI4ODA1_339e5b56-c733-441a-8e3a-57fb4ccb0c46">530</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Reserve&#160;for Sales Returns:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2021</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2131ea7c04b54b24a5d7cbceda55413f_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMi0xLTEtMjg4MDU_c8be0117-1977-4a73-9b75-9ca58aced10d">1,291</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtNC0xLTEtMjg4MDU_7292cc34-7327-42ec-8df8-21a128ce64bc">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToOtherAccounts" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtNi0xLTEtNDA0MzI_066e41fd-750c-41fe-862e-ab87ded7a97c">227</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtOC0xLTEtMjg4MDU_86769c5b-cb60-4706-912c-77f3832e8d19">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMTAtMS0xLTI4ODA1_23ce4753-339d-47eb-b5f4-7913ace49b7b">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i72aa6831b808442cacbb8b5967d7fa20_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMTItMS0xLTI4ODA1_85f9bcbe-609b-497b-bfdf-5fe0dd3c4af4">1,518</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib429e8609f0f44a1954e51d83ac80522_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMi0xLTEtMjg4MDU_2dfb222b-8e92-410b-889e-53fac2be27de">1,291</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktNC0xLTEtMjg4MDU_649cddd4-ffb1-4ac3-938c-1a14ff7ad7f6">&#8212;</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktOC0xLTEtMjg4MDU_10f8aec6-add0-4fe9-8b9e-5c6a19f6cf88">&#8212;</ix:nonFraction>&#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:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMTAtMS0xLTI4ODA1_7a8cd3c4-90aa-4a28-ae1d-724041490453">&#8212;</ix:nonFraction>&#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:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2131ea7c04b54b24a5d7cbceda55413f_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMTItMS0xLTI4ODA1_2afedadf-da60-45fa-adbb-1f614e2f043f">1,291</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i407ba1b76823440abdd13f6172c63277_I20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTItMS0xLTI4ODA1_f9393f3e-e365-419b-a09d-2fa7b3ec8e7a">1,050</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTQtMS0xLTI4ODA1_a069a74a-51b5-4c54-a795-469c5c58f423">225</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTgtMS0xLTI4ODA1_5f28dfec-3922-40c4-830c-85e41b101688">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTEwLTEtMS0yODgwNQ_a5ef22de-fef6-440f-a249-b7c8eee7001c">16</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib429e8609f0f44a1954e51d83ac80522_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTEyLTEtMS0yODgwNQ_58c25d02-49ef-4ef6-b25e-f9f8958e7a5c">1,291</ix:nonFraction>&#160;</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred Tax Valuation Allowance:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2021</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1602cc3e102c42a98e804619365a09b5_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTItMS0xLTI4ODA1_4d19574c-cf49-4ca3-9929-05bfd0275a54">8,568</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTQtMS0xLTI4ODA1_8e303289-ccfe-4b90-b1aa-83fc4e70f003">1,420</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTgtMS0xLTI4ODA1_db359c2d-1fac-4548-8a27-1116172a2609">1,800</ix:nonFraction>)</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTEwLTEtMS0yODgwNQ_61a183d8-d48e-41b1-90ed-1a60eb11bfd2">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="idf98d43520b547b68e3e7b727e376e60_I20211231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTEyLTEtMS0yODgwNQ_b8a84040-e6ae-4328-a9d1-c5291ec2bffd">8,188</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTItMS0xLTI4ODA1_408e07d8-ce5a-4707-92b6-639b43506ce9">7,312</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTQtMS0xLTI4ODA1_98d9fb36-42f2-413d-951c-c7385e967fa2">1,256</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTgtMS0xLTI4ODA1_b99e1686-374f-4e6b-af8f-6952fab58ab1">&#8212;</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTEwLTEtMS0yODgwNQ_2510c32a-c467-4104-bb05-b2c64a26b1f6">&#8212;</ix:nonFraction>&#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 style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1602cc3e102c42a98e804619365a09b5_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTEyLTEtMS0yODgwNQ_d72312e9-b752-4d09-bc04-3e25eae452b1">8,568</ix:nonFraction>&#160;</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 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3c925d5554374d1da0be16bce2fc2da0_I20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTItMS0xLTI4ODA1_47e2b0f2-c2b7-4967-8897-af2cbda69372">6,112</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTQtMS0xLTI4ODA1_b11a19b0-5c7e-4757-aa23-6c23e0b5de07">1,200</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTgtMS0xLTI4ODA1_140822e5-0c3b-413c-9239-2cb6288ffa6d">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" format="ixt:fixed-zero" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTEwLTEtMS0yODgwNQ_35316abe-579c-45fe-8b4d-0b2d5abf7a20">&#8212;</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" format="ixt:num-dot-decimal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTEyLTEtMS0yODgwNQ_9cbb9592-6478-4c3c-8886-0f10e11a1f98">7,312</ix:nonFraction>&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr></table></div><div style="margin-top:4pt;padding-left:36pt;text-indent:-36pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:23.78pt">Specific write-offs</span></div><div style="padding-left:36pt;text-indent:-36pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(2)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:23.78pt">Foreign currency exchange rate changes</span></div></ix:continuation><div style="padding-left:36pt"><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">68</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_205"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;9: CHANGES IN AND DISAGREEMENTS WITH ACCOUNTANTS ON ACCOUNTING AND FINANCIAL DISCLOSURE</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There were no disagreements with accountants on accounting or financial disclosure during 2021 or 2020.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_208"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 9A: CONTROLS AND PROCEDURES</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Disclosure Controls and Procedures</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As required by Rules 13a-15 and 15d-15 of the Securities Exchange Act of 1934, the Company has evaluated, with the participation of management, including the Chief Executive Officer and the Chief Financial Officer, the effectiveness of its disclosure controls and procedures (as defined in such rules) as of the end of the period covered by this report. Based on such evaluation, the Chief Executive Officer and Chief Financial Officer concluded that such disclosure controls and procedures were effective as of that date.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Management&#8217;s Report on Internal Control over Financial Reporting</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management is responsible for establishing and maintaining adequate internal control over financial reporting. Management has evaluated the effectiveness of the Company&#8217;s internal control over financial reporting based on the framework in Internal Control &#8211; Integrated Framework issued in 2013 by the Committee of Sponsoring Organizations of the Treadway Commission (COSO).</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Based on our evaluation, management has concluded that the Company&#8217;s internal control over financial reporting was effective as of December&#160;31, 2021.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Attestation Report of the Registered Public Accounting Firm on Internal Control over Financial Reporting</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s internal control over financial reporting as of December&#160;31, 2021 has been audited by Grant Thornton LLP, an independent registered public accounting firm, as stated in their report which is included herein.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">Changes in Internal Control over Financial Reporting</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There have been no changes in the Company's internal control over financial reporting that occurred during the fourth quarter of the year ended December&#160;31, 2021 that have materially affected, or are reasonably likely to materially affect, the Company&#8217;s internal control over financial reporting. We have considered the impact of the COVID-19 pandemic on our internal controls over financial reporting. Personnel constraints related to working from home have made our ability to execute certain controls more challenging; however, we have enhanced existing monitoring controls in an effort to ensure we continue to have effective internal controls during this time. The Company continues to review its disclosure controls and procedures, including its internal control over financial reporting, and may from time to time make changes aimed at enhancing their effectiveness and to ensure that the Company&#8217;s systems evolve with its business.</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">69</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">REPORT OF INDEPENDENT REGISTERED PUBLIC ACCOUNTING FIRM</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Board of Directors and Shareholders                                                                                                                         Cognex Corporation</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:115%">Opinion on internal control over financial reporting</span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">We have audited the internal control over financial reporting of Cognex Corporation (a Massachusetts corporation) and subsidiaries (the &#8220;Company&#8221;) as of December 31, 2021 based on criteria established in the 2013 Internal Control&#8212;Integrated Framework issued by the Committee of Sponsoring Organizations of the Treadway Commission (&#8220;COSO&#8221;). In our opinion, the Company maintained, in all material respects, effective internal control over financial reporting as of December 31, 2021, based on criteria established in the 2013 Internal Control&#8212;Integrated Framework issued by COSO.</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">We also have audited, in accordance with the standards of the Public Company Accounting Oversight Board (United States) (&#8220;PCAOB&#8221;), the consolidated financial statements of the Company as of and for the year ended December 31, 2021, and our report dated February 17, 2022 expressed an unqualified opinion on those financial statements.</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:115%">Basis for opinion</span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">The Company&#8217;s management is responsible for maintaining effective internal control over financial reporting and for its assessment of the effectiveness of internal control over financial reporting, included in the accompanying Management&#8217;s Report on Internal Control Over Financial Reporting. Our responsibility is to express an opinion on the Company&#8217;s internal control over financial reporting based on our audit. We are a public accounting firm registered with the PCAOB and are required to be independent with respect to the Company in accordance with the U.S. federal securities laws and the applicable rules and regulations of the Securities and Exchange Commission and the PCAOB. </span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">We conducted our audit in accordance with the standards of the PCAOB. Those standards require that we plan and perform the audit to obtain reasonable assurance about whether effective internal control over financial reporting was maintained in all material respects. Our audit included obtaining an understanding of internal control over financial reporting, assessing the risk that a material weakness exists, testing and evaluating the design and operating effectiveness of internal control based on the assessed risk, and performing such other procedures as we considered necessary in the circumstances. We believe that our audit provides a reasonable basis for our opinion.</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:115%">Definition and limitations of internal control over financial reporting</span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">A company&#8217;s internal control over financial reporting is a process designed 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. A company&#8217;s internal control over financial reporting includes those policies and procedures that (1) pertain to the maintenance of records that, in reasonable detail, accurately and fairly reflect the transactions and dispositions of the assets of the company; (2) provide reasonable assurance that transactions are recorded as necessary to permit preparation of financial statements in accordance with generally accepted accounting principles, and that receipts and expenditures of the company are being made only in accordance with authorizations of management and directors of the company; and (3) provide reasonable assurance regarding prevention or timely detection of unauthorized acquisition, use, or disposition of the company&#8217;s assets that could have a material effect on the financial statements.</span></div><div style="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%">Because of its inherent limitations, internal control over financial reporting may not prevent or detect misstatements. Also, projections of any evaluation of effectiveness to future periods are subject to the risk that controls may become inadequate because of changes in conditions, or that the degree of compliance with the policies or procedures may deteriorate.</span></div><div style="text-align:justify"><span><br/></span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">/s/ <ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:AuditorName" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDgvZnJhZzpkMjAzZmVkOWI1ZGM0ZmVmYWVkOGE1ZjU1YWRkMWJjOC90ZXh0cmVnaW9uOmQyMDNmZWQ5YjVkYzRmZWZhZWQ4YTVmNTVhZGQxYmM4XzEzMTk0MTM5NTQ0MTE1_75ec7183-af2a-4f7c-b1f2-e7b402574a8b">GRANT THORNTON LLP</ix:nonNumeric></span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonNumeric contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231" name="dei:AuditorLocation" id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDgvZnJhZzpkMjAzZmVkOWI1ZGM0ZmVmYWVkOGE1ZjU1YWRkMWJjOC90ZXh0cmVnaW9uOmQyMDNmZWQ5YjVkYzRmZWZhZWQ4YTVmNTVhZGQxYmM4XzEzMTk0MTM5NTQ0MTE2_10997c32-d9ee-4c47-932e-98930fdf04d9">Boston, Massachusetts</ix:nonNumeric></span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">February&#160;17, 2022 </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">70</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_211"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 9B: OTHER INFORMATION</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">None</span></div><div id="i929e97f6a142453c8a8057dbb6451118_2036"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM 9C: DISCLOSURE REGARDING FOREIGN JURISDICTIONS THAT PREVENT INSPECTIONS</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">Not Applicable</span></div><div id="i929e97f6a142453c8a8057dbb6451118_214"></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">PART III</span></div><div id="i929e97f6a142453c8a8057dbb6451118_217"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;10:&#160;DIRECTORS, EXECUTIVE OFFICERS, AND CORPORATE GOVERNANCE</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information with respect to Directors and Executive Officers of the Company and the other matters required by Item&#160;10 shall be included in the Company&#8217;s definitive Proxy Statement for the Annual Meeting of Shareholders to be held on May 4, 2022 and is incorporated herein by reference. In addition, certain information with respect to Executive Officers of the Company may be found in the section captioned &#8220;Executive Officers of the Registrant,&#8221; appearing in Part I &#8211; Item&#160;4A of this Annual Report on Form 10-K.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has adopted a Code of Business Conduct and Ethics covering all employees, which is available, free of charge, on the Company&#8217;s website, </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">www.cognex.com</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">under "Company-Investor Information-Governance". The Company intends to disclose on its website any amendments to or waivers of the Code of Business Conduct and Ethics on behalf of the Company&#8217;s directors and executive officers that would otherwise be required to be disclosed under the rules of the SEC or The NASDAQ Stock Market LLC.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_220"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;11:&#160;EXECUTIVE COMPENSATION</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information with respect to executive compensation and the other matters required by Item&#160;11 shall be included in the Company&#8217;s definitive Proxy Statement for the Annual Meeting of Shareholders to be held on May&#160;4, 2022 and is incorporated herein by reference.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_223"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;12:&#160;SECURITY OWNERSHIP OF CERTAIN BENEFICIAL OWNERS AND MANAGEMENT AND RELATED STOCKHOLDER MATTERS</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information with respect to security ownership and the other matters required by Item&#160;12 shall be included in the Company&#8217;s definitive Proxy Statement for the Annual Meeting of Shareholders to be held on May&#160;4, 2022 and is incorporated herein by reference.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table provides information as of December&#160;31, 2021 regarding shares of common stock that may be issued under the Company&#8217;s existing equity compensation plans:</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:27.639%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:18.694%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:1.979%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:21.187%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:21.187%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:1.981%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Plan Category</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Number&#160;of&#160;securities&#160;to&#160;be<br/>issued upon exercise of<br/>outstanding&#160;options, warrants and rights, and vesting of restricted stock units</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Weighted-average&#160;exercise<br/>price&#160;of&#160;outstanding&#160;options, restricted stock units, warrants,&#160;and&#160;rights</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Number&#160;of&#160;securities<br/>remaining&#160;available&#160;for&#160;future<br/>issuance under equity<br/>compensation plans<br/>(excluding&#160;securities&#160;reflected<br/>in column (a))</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(a)</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Equity compensation plans approved by shareholders (4)</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">8,432,197&#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:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">44.56&#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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">15,640,000&#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:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">Equity compensation plans not approved by shareholders (4)</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(3)</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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;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:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">8,432,197</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">44.5636</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;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-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">15,640,000</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:0 1pt"></td></tr></table></div><div style="margin-top:4pt;padding-left:36pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">(1)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%;padding-left:17.24pt">Includes shares to be issued upon exercise of outstanding options under the Company&#8217;s 2007 Stock Option and Incentive Plan, and subsequent to shareholder approval, the 2001 General Stock Option Plan, as amended and restated.</span></div><div style="padding-left:36pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">(2)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%;padding-left:17.24pt">Includes shares remaining available for future issuance under the Company&#8217;s 2007 Stock Option and Incentive Plan and 2001 General Stock Option Plan, as amended and restated.</span></div><div style="padding-left:36pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">(3)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%;padding-left:17.24pt">Includes shares to be issued upon the exercise of outstanding options granted prior to shareholder approval under the 2001 General Stock Option Plan, as amended and restated.</span></div><div style="padding-left:36pt;text-indent:-27pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%">(4)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:120%;padding-left:17.24pt">All references made to share or per share amounts have been adjusted to reflect the two-for-one stock split which occurred in the fourth quarter of 2017.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The 2001 General Stock Option Plan was originally adopted by the Board of Directors in December 2001 without shareholder approval. In December 2011, this plan received shareholder approval for an amendment and restatement of the plan. This plan provides for the granting of nonqualified stock options and incentive stock options to any employee who is actively employed by the Company and is not an officer or director of the Company. The maximum number of shares of common stock available for grant under this plan is 38,440,000 shares. All option grants must have an exercise price per share that is no less than the fair market value per share of the Company&#8217;s </span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">71</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">common stock on the grant date and must have a term that is no longer than ten years from the grant date. 30,869,869 stock options have been granted under the 2001 General Stock Option Plan.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_226"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;13:&#160;CERTAIN RELATIONSHIPS AND RELATED TRANSACTIONS, AND DIRECTOR INDEPENDENCE</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information with respect to certain relationships and related transactions and the other matters required by Item&#160;13 shall be included in the Company&#8217;s definitive Proxy Statement for the Annual Meeting of Shareholders to be held on May&#160;4, 2022 and is incorporated herein by reference.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_229"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;14:&#160;PRINCIPAL ACCOUNTING FEES AND SERVICES</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information with respect to principal accounting fees and services and the other matters required by Item&#160;14 shall be included in the Company&#8217;s definitive Proxy Statement for the Annual Meeting of Shareholders to be held on May&#160;4, 2022 and is incorporated herein by reference.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_232"></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">PART IV</span></div><div id="i929e97f6a142453c8a8057dbb6451118_235"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;15:&#160;EXHIBITS AND FINANCIAL STATEMENT SCHEDULES</span></div><div style="margin-top:5pt;padding-left:54pt;text-indent:-54pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:41.78pt">Financial Statements</span></div><div style="margin-top:5pt;padding-left:90pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The financial statements are included in Part II &#8211; Item&#160;8 of this Annual Report on Form 10-K.</span></div><div style="margin-top:5pt;padding-left:54pt;text-indent:-54pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(2)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:41.78pt">Financial Statement Schedule</span></div><div style="margin-top:5pt;padding-left:90pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Financial Statement Schedule II is included in Part II &#8211; Item&#160;8 of this Annual Report on Form 10-K.</span></div><div style="margin-top:5pt;padding-left:90pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other schedules are omitted because of the absence of conditions under which they are required or because the required information is provided in the consolidated financial statements or notes thereto.</span></div><div style="margin-top:5pt;padding-left:54pt;text-indent:-54pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(3)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:41.78pt">Exhibits</span></div><div style="margin-top:5pt;padding-left:90pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Exhibits filed as part of this Annual Report on Form 10-K are listed in the Exhibit Index, immediately preceding the signature page hereto.</span></div><div id="i929e97f6a142453c8a8057dbb6451118_238"></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">ITEM&#160;16:&#160;FORM 10-K SUMMARY</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Not applicable</span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">72</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_241"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="-sec-extract:summary"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div style="-sec-extract:summary;margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">EXHIBIT INDEX</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:14.149%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:82.918%"></td><td style="width:0.1%"></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:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">EXHIBIT&#160;NUMBER</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:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3A</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120516000035/exhibit31.htm">Restated Articles of Organization of Cognex Corporation effective June&#160;27, 1989, as amended through May 5, 2016 (incorporated by reference to Exhibit 3.1 of Cognex's Quarterly Report on Form 10-Q for the quarter ended July 3, 2016 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3B</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120516000035/exhibit32.htm">Articles of Amendment to the Articles of Organization of Cognex Corporation establishing Series E Junior Participating Preferred Stock (incorporated by reference to Exhibit 3.2 to Cognex's Quarterly Report on Form 10-Q for the quarter ended July 3, 2016 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3C</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000119312518154489/d581899dex42.htm">Articles of Amendment to Restated Articles of Organization of Cognex Corporation, effective May 2, 2018 (incorporated by reference to Exhibit 4.2 of Cognex's Registration Statement on Form S-8 [Registration No. 333-224716])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3D</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120519000006/cgnxarticlesofamendment.htm">Articles of Amendment to Restated Articles of Organization of Cognex Corporation, effective April 26, 2019 (incorporated by reference to Exhibit 3.4 of Cognex's Quarterly Report on Form 10-Q for the quarter ended March 31, 2019 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3E</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120516000035/exhibit33.htm">By-laws of Cognex Corporation, as amended and restated through December 5, 2013 (incorporated by reference to Exhibit 3.3 of Cognex&#8217;s Quarterly Report on Form 10-Q for the quarter ended July 3, 2016 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3F</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120516000035/exhibit34.htm">Amendment to Amended and Restated By-laws of Cognex Corporation, effective May 5, 2016 (incorporated by reference to Exhibit 3.4 of Cognex's Quarterly Report on Form 10-Q for the quarter ended July 3, 2016 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4A</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Specimen Certificate for Shares of Common Stock (incorporated by reference to Exhibit 4 to Cognex's Registration Statement on Form S-1 [Registration No. 33-29020])</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4B</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="https://www.sec.gov/Archives/edgar/data/851205/000085120520000002/cgnxexhibit4bdescription.htm">Description of Capital Stock (incorporated by reference to Exhibit 4B of Cognex's Annual Report on Form 10-K for the year ended December 31, 2019 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10A *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000119312518154489/d581899dex991.htm">Cognex Corporation 2001 General Stock Option Plan, as amended and restated (incorporated by reference to Exhibit 99.1 to Cognex's Registration Statement on Form S-8 [Registration No. 333-224716])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10B *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120518000004/cgnx-20171231xexhibit10h.htm">Cognex Corporation 2007 Stock Option and Incentive Plan, as amended and restated (incorporated by reference to Exhibit 10H of Cognex's Annual Report on Form 10-K for the year ended December 31, 2017 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10C *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000119312513048665/d434050dex10k.htm">Form of Letter Agreement between Cognex Corporation and each of </a><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000119312513048665/d434050dex10k.htm">Patrick A. Alias and Anthony Sun (incorporated by reference to Exhibit 10K of Cognex's Annual Report on Form 10-K for the year ended December 31, 2012 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10D *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000119312514051054/d632893dex10r.htm">Form of Indemnification Agreement with each of the Directors of Cognex Corporation (incorporated by reference to Exhibit 10R of Cognex's Annual Report on Form 10-K for the year ended December 31, 2013 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10E *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000119312514051054/d632893dex10s.htm">Employment Agreement, dated June 17, 2008, by and between Cognex Corporation and Robert Willett (incorporated by reference to Exhibit 10S of Cognex's Annual Report on Form 10-K for the year ended December 31, 2013 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10F *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000119312514051054/d632893dex10t.htm">Amendment to Employment Agreement with Robert Willett, dated November 14, 2008 (incorporated by reference to Exhibit 10T of Cognex's Annual Report on Form 10-K for the year ended December 31, 2013 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10G *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000119312514051054/d632893dex10u.htm">Form of Stock Option Agreement (Non-Qualified) under 2007 Stock Option and Incentive Plan (incorporated by reference to Exhibit 10U of Cognex's Annual Report on Form 10-K for the year ended December 31, 2013 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10H *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120518000004/cgnx-20171231xexhibit10o.htm">Form of Stock Option Agreement under 2001 General Stock Option Plan (incorporated by reference to Exhibit 10O of Cognex's Annual Report on Form 10-K for the year ended December 31, 2017 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10I *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120515000003/cgnx-20141231xexhibit10s.htm">Stock Option Agreements with Robert Willett dated November 3, 2014 (incorporated by reference to Exhibit 10S of Cognex's Annual Report on Form 10-K for the year ended December 31, 2014 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10J *<br/></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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="http://www.sec.gov/Archives/edgar/data/851205/000085120518000004/cgnx-20171231xexhibit10q.htm">Summary of Cognex Annual Bonus Program (incorporated by reference to Exhibit 10Q of Cognex's Annual Report on Form 10-K for the year ended December 31, 2017 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10K *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="https://www.sec.gov/Archives/edgar/data/851205/000085120520000002/cgnxformofrsuagreement.htm">Form of Restricted Stock Unit Agreement under the 2007 Stock Option and Incentive Plan (incorporated by reference to Exhibit 10U of Cognex's Annual Report on Form 10-K for the year ended December 31, 2019 [File No. 1-34218])</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10L *</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="cgnx-20211231xexhibit10l.htm">Form of Performance Restricted Stock Unit Agreement under the 2007 Stock Option and Incentive Plan (filed herewith)</a></span></div></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="-sec-extract:summary;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">73</span></div></div></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div style="-sec-extract:summary"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:14.149%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:82.918%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="cgnx-20211231xexhibit21.htm">Subsidiaries of the registrant (filed herewith)</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">23.1</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="cgnx-20211231xexhibit231.htm">Consent of Grant Thornton LLP (filed herewith)</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">31.1</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="cgnx-20211231xexhibit311.htm">Certification pursuant to Section 302 of the Sarbanes-Oxley Act of 2002 (CEO) (filed herewith)</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">31.2</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="cgnx-20211231xexhibit312.htm">Certification pursuant to Section 302 of the Sarbanes-Oxley Act of 2002 (CFO) (filed herewith)</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">32.1</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="cgnx-20211231xexhibit321.htm">Certification pursuant to Section 906 of the Sarbanes-Oxley Act of 2002 (CEO) (furnished herewith)</a></span></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">32.2</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:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"><a style="-sec-extract:exhibit;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="cgnx-20211231xexhibit322.htm">Certification pursuant to Section 906 of the Sarbanes-Oxley Act of 2002 (CFO) (furnished herewith)</a></span></div></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">101.SCH</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Inline XBRL Taxonomy Extension Schema Document (filed herewith)</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">101.CAL</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Inline XBRL Taxonomy Extension Calculation Linkbase Document (filed herewith)</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">101.LAB</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Inline XBRL Taxonomy Extension Label Linkbase Document (filed herewith)</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">101.PRE</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Inline XBRL Taxonomy Extension Presentation Linkbase Document (filed herewith)</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">101.DEF</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Inline XBRL Taxonomy Extension Schema Document (filed herewith)<br/></span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">104</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:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cover Page Interactive Data File (formatted as Inline XBRL with applicable taxonomy extension information contained in Exhibits 101*.) (filed herewith)</span></td></tr><tr><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:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">* Indicated management contract or compensatory plan or arrangement</span></td></tr></table></div><div><span><br/></span></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="-sec-extract:summary;text-align:center"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%">74</span></div></div></div><div id="i929e97f6a142453c8a8057dbb6451118_244"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline"><a style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:120%;text-decoration:underline" href="#i929e97f6a142453c8a8057dbb6451118_7">Table of Contents</a></span></div></div><div style="margin-top:9pt;text-align:center"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">SIGNATURES</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Pursuant to the requirements of Section&#160;13 or 15(d) 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 on the 17th day of February 2022.</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:511.50pt"><tr><td style="width:1.0pt"></td><td style="width:40.00pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:1.75pt"></td><td style="width:1.0pt"></td><td style="width:1.0pt"></td><td style="width:463.75pt"></td><td style="width:1.0pt"></td></tr><tr style="height:14pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">COGNEX CORPORATION</span></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:14pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">By:</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">/s/&#160;&#160;&#160;&#160;Robert J. Willett</span></td></tr><tr style="height:14pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Robert J. Willett</span></td></tr><tr style="height:14pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">President and Chief Executive Officer</span></td></tr></table></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Pursuant to the requirements of the Securities Exchange Act of 1934, this report has been signed below by the following persons on behalf of the registrant and in the capacities and on 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:99.707%"><tr><td style="width:1.0%"></td><td style="width:28.078%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:49.926%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.533%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:17.230%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Signature</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Title</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Date</span></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Robert J. Willett</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">President, Chief Executive Officer, and Director (principal executive officer)</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</span></td></tr><tr style="height:15pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Robert J. Willett</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Paul D. Todgham</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Senior Vice President of Finance and Chief Financial Officer (principal financial&#160;and&#160;accounting&#160;officer)</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</span></td></tr><tr style="height:15pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Paul D. Todgham</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Patrick Alias</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</span></td></tr><tr style="height:15pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Patrick Alias</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Theodor Krantz</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</span></td></tr><tr style="height:15pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Theodor Krantz</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Sachin Lawande</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</span></td></tr><tr style="height:15pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sachin Lawande</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Dianne Parrotte</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</span></td></tr><tr style="height:15pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Dianne Parrotte</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Marjorie Sennett</span></div></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</span></td></tr><tr style="height:15pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Marjorie Sennett</span></div></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:15pt"><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Anthony Sun</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" rowspan="2" style="padding:2px 1pt;text-align:left;vertical-align:middle"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Director</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</span></td></tr><tr style="height:15pt"><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Anthony Sun</span></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td></tr><tr style="height:3pt"><td colspan="3" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td><td colspan="6" style="padding:0 1pt"></td></tr></table></div><div style="height:42.75pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><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%">75</span></div></div></div></body></html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-10.L
<SEQUENCE>2
<FILENAME>cgnx-20211231xexhibit10l.htm
<DESCRIPTION>EX-10.L
<TEXT>
<HTML>
<HEAD><!-- Document generated by Workiva Inc -->
<TITLE>cgnx-20211231xexhibit10l</TITLE>
</HEAD>
<BODY bgcolor="white">
<DIV align="center">
<DIV style="margin-left:1em;width:1055;"><!-- cgnx-20211231xexhibit10l001.jpg -->
<DIV style="padding-top:2em;">
<IMG src="cgnx-20211231xexhibit10l001.jpg" title="slide1" width="1055" height="1365">
<DIV><FONT size="1" style="font-size:1pt;color:white">Exhibit 10L    1    PERFORMANCE RESTRICTED STOCK UNIT AWARD AGREEMENT      Pursuant to the Cognex Corporation 2007 Stock Option and Incentive Plan as amended through  the date hereof (the &#8220;Plan&#8221;) and this Performance Restricted Stock Unit Award Agreement (the  &#8220;Agreement&#8221;), Cognex Corporation (the &#8220;Company&#8221;) hereby grants an award of the target number  of Restricted Stock Units listed below assuming target performance (&#8220;Award&#8221;) to the individual  named below (&#8220;Grantee&#8221;), and Grantee hereby accepts such Award subject to all of the terms and  conditions herein.      Each Restricted Stock Unit shall relate to one share of Common Stock, par value $0.002 per share  (the &#8220;Stock&#8221;) of the Company.    Name of Grantee:    Grant Date:    Target Number of Restricted Stock Units:   (&#8220;Target Award&#8221;)    Performance Measurement Period:  to               1. Restrictions on Transfer of Award and on Transfer of Stock/Vesting.  The Restricted Stock Units  granted pursuant to this Award may not be sold, transferred, pledged, assigned or otherwise  encumbered or disposed of by the Grantee, and any shares of Stock issuable with respect to the  Award may not be sold, transferred, pledged, assigned or otherwise encumbered or disposed of  until all of the following conditions have been met:     1.1 The Restricted Stock Units shall have been earned and vested as provided and determined  in accordance with Exhibit A.  1.2 The Grantee has been a full-time employee of the Company or a subsidiary of the Company  each day of the Performance Measurement Period through the Vesting Date. Or, Grantee  has been a consultant to the company during each day of the Performance Measurement  Period through the Vesting Date.  Or, the Grantee has been a director of the Company during  each day of the Performance Measurement Period through the Vesting Date.    1.3 The Grantee and the Company have duly executed all of the agreements required at the time  of the granting of the Award by the Company, 1) including, but not limited to, the Company's  Employee, Invention, Non-Disclosure and Non-Competition Agreement, if Grantee is an  employee of the Company, or 2) including, but not limited to, the Company's Consultant  Agreement, if Grantee is a consultant to the Company, or 3) including, but not limited to, the  Company's Confidentiality and Non-Competition Agreement, if the Grantee is a director of the  Company.    1.4 Shares of Stock have been issued to the Grantee in accordance with the terms of the Plan  and this Agreement.    2. Termination of Employment, Consultancy or Directorship.  If the Grantee&#8217;s employment,  consultancy or directorship with the Company or its Subsidiaries terminates for any reason  (including death or disability) prior to the Vesting Date, any Restricted Stock Units that have not  </FONT></DIV>
<P><HR noshade><P>
<DIV style="page-break-before:always;">&nbsp;</DIV>
</DIV>
<!-- cgnx-20211231xexhibit10l002.jpg -->
<DIV style="padding-top:2em;">
<IMG src="cgnx-20211231xexhibit10l002.jpg" title="slide2" width="1055" height="1365">
<DIV><FONT size="1" style="font-size:1pt;color:white">  2    vested as of such date shall automatically and without notice terminate and be forfeited, and  neither the Grantee nor any of his or her successors, heirs, assigns, or personal representatives  will thereafter have any further rights or interests in such unvested Restricted Stock Units.  3. Issuance of Shares of Stock.  As soon as practicable following the Vesting Date (but in no event  later than two and one-half months after the end of the year in which the Vesting Date occurs),  the Company shall issue to the Grantee the number of shares of Stock equal to the aggregate  number of Restricted Stock Units that have been earned and vested in accordance with Exhibit A  (subject to Paragraph 2) of this Agreement on such date and the Grantee shall thereafter have all  the rights of a stockholder of the Company with respect to such shares.   4. Incorporation of Plan.  Notwithstanding anything to the contrary herein, this Agreement shall be  subject to and governed by all the terms and conditions of the Plan, including the powers of the  Administrator set forth in Section 2(b) of the Plan.  Capitalized terms in this Agreement shall have  the meaning specified in the Plan, unless a different meaning is specified herein.   5. Tax Withholding.   The Grantee shall, not later than the date as of which the receipt of this Award  or the vesting of any portion of this Award becomes a taxable event for Federal income tax  purposes, pay to the Company or make arrangements satisfactory to the Administrator for  payment of any Federal, state, and local taxes required by law to be withheld on account of such  taxable event.  Such withholding shall be satisfied by the Company withholding from shares of  Stock to be issued to the Grantee a number of shares with an aggregate Fair Market Value that  would satisfy the withholding amount due.  Alternatively, or in addition, the Company may decide  in its sole and absolute discretion to satisfy Grantee&#8217;s obligation for tax-related items by one or a  combination of the following: (i) withholding from proceeds of the sale of shares of Stock acquired  upon vesting/settlement of the Restricted Stock Units either through a voluntary sale or through a  mandatory sale arranged by the Company (on Grantee&#8217;s behalf pursuant to this authorization); or  (ii) in any other manner permitted by the Plan.  6. Section 409A of the Code.  This Agreement shall be interpreted in such a manner that all  provisions relating to the settlement of the Award are exempt from the requirements of Section  409A of the Code as &#8220;short-term deferrals&#8221; as described in Section 409A of the Code.   7. No Obligation to Continue Employment, Consultancy or Directorship.  Neither the Company nor  any subsidiary of the Company is obligated by or as a result of the Plan or this Agreement to  continue the employment, consultancy or directorship of the Grantee, and neither the Plan nor  this Agreement shall interfere in any way with the right of the Company or any subsidiary of the  Company to terminate the employment, consultancy or directorship of the Grantee at any time.  8. Integration/Severability.  This Agreement constitutes the entire agreement between the parties  with respect to this Award and supersedes all prior agreements and discussions between the  parties concerning such subject matter.  Each provision of this Agreement shall be treated as a  separate and independent clause, and the unenforceability of any one clause shall in no way  impair the enforceability of any of the other clauses herein. In the event that any provision hereof  is found invalid or unenforceable, the provision shall be deemed and construed to extend only to  the maximum permitted by law, and the remainder of this Agreement shall remain valid and  enforceable according to its terms.  9. Data Privacy Consent.  In order to administer the Plan and this Agreement and to implement or  structure future equity grants, the Company, its subsidiaries and affiliates and certain agents  thereof (together, the &#8220;Relevant Companies&#8221;) may process any and all personal or professional  data, including but not limited to Social Security or other identification number, home address and  telephone number, date of birth and other information that is necessary or desirable for the  administration of the Plan and/or this Agreement (the &#8220;Relevant Information&#8221;).  By entering into  this Agreement, the Grantee (i) authorizes the Company to collect, process, register and transfer  </FONT></DIV>
<P><HR noshade><P>
<DIV style="page-break-before:always;">&nbsp;</DIV>
</DIV>
<!-- cgnx-20211231xexhibit10l003.jpg -->
<DIV style="padding-top:2em;">
<IMG src="cgnx-20211231xexhibit10l003.jpg" title="slide3" width="1055" height="1365">
<DIV><FONT size="1" style="font-size:1pt;color:white">  3    to the Relevant Companies all Relevant Information; (ii) waives any privacy rights the Grantee  may have with respect to the Relevant Information; (iii) authorizes the Relevant Companies to  store and transmit such information in electronic form; and (iv) authorizes the transfer of the  Relevant Information to any jurisdiction in which the Relevant Companies consider appropriate.   The Grantee shall have access to, and the right to change, the Relevant Information.  Relevant  Information will only be used in accordance with applicable law.  10. Notices.  Notices hereunder shall be mailed or delivered to the Company at its principal place of  business and shall be mailed or delivered to the Grantee at the address on file with the Company  or, in either case, at such other address as one party may subsequently furnish to the other party  in writing.  11. Restrictive Covenants.  The Grantee reaffirms his/her promise to be bound by the restrictive  covenants set forth in the Employee Invention, Non-Disclosure and Non-Competition Agreement,  if Grantee is an employee of the company, or in the Consultant Agreement, if Grantee is a  consultant to the Company, or in the Confidentiality and Non-Competition Agreement, if the  Grantee is a director of the Company, entered into between the Grantee and the Company.  The  Grantee agrees that any pre-tax gains realized by the Grantee pursuant to the vesting of this  Award (along with other good and valuable consideration including, but not limited to employment  by the Company, salary and other Company-provided benefits, if Grantee is an employee of the  Company, or consulting fees or director&#8217;s fees if Grantee is a consultant or director of the  Company) are additional and sufficient consideration for the Grantee&#8217;s performance of Grantee&#8217;s   obligations as stated in the applicable agreement(s) executed between Grantee and the  Company. To the extent permitted by applicable law, Grantee agrees that if Grantee breaches  any such agreement then Grantee shall pay damages to the Company, including, but not limited  to an amount equal to the sum of: (a) the total of all pre-tax gains realized by Grantee as a result  of vesting of any portion of this Award, and (b) the total of all pre-tax gains realized by Grantee as  a result of the sale of any shares acquired by Grantee through the vesting of any portion of this  Award.  The determination of the existence of breach of any such applicable agreement shall be  made by the Company in good faith, which determination shall be conclusive for purposes of this  Agreement.  </FONT></DIV>
<P><HR noshade><P>
<DIV style="page-break-before:always;">&nbsp;</DIV>
</DIV>
<!-- cgnx-20211231xexhibit10l004.jpg -->
<DIV style="padding-top:2em;">
<IMG src="cgnx-20211231xexhibit10l004.jpg" title="slide4" width="1055" height="1365">
<DIV><FONT size="1" style="font-size:1pt;color:white">  4        COGNEX CORPORATION      By:     Title:        I, the Grantee, have carefully read, and I understand all of the terms and conditions of this Agreement,  and I hereby agree to abide by them.      Electronic acceptance of this Agreement pursuant to the Company&#8217;s instructions to the Grantee (including  through an online acceptance process) is acceptable.      Dated:      Grantee&#8217;s Signature    Grantee&#8217;s name and address:                 </FONT></DIV>
<P><HR noshade><P>
<DIV style="page-break-before:always;">&nbsp;</DIV>
</DIV>
<!-- cgnx-20211231xexhibit10l005.jpg -->
<DIV style="padding-top:2em;">
<IMG src="cgnx-20211231xexhibit10l005.jpg" title="slide5" width="1055" height="1365">
<DIV><FONT size="1" style="font-size:1pt;color:white">  5    EXHIBIT A      [Performance Criteria and Vesting]  </FONT></DIV>
<P><HR noshade><P>
<DIV style="page-break-before:always;">&nbsp;</DIV>
</DIV>
</DIV>
</DIV>
</BODY>
</HTML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-21
<SEQUENCE>3
<FILENAME>cgnx-20211231xexhibit21.htm
<DESCRIPTION>EX-21
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2022 Workiva -->
<title>Document</title></head><body><div id="i74905754e55c425c9ba0cc00691b13ff_1"></div><div style="min-height:72pt;width:100%"><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">EXHIBIT 21</font></div><div><font><br></font></div></div><div style="text-align:right"><font><br></font></div><div style="margin-bottom:4pt;padding-left:4.5pt;padding-right:4.5pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION</font></div><div style="margin-bottom:4pt;padding-left:4.5pt;padding-right:4.5pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:120%">SUBSIDIARIES OF THE REGISTRANT</font></div><div style="margin-bottom:4pt;text-align:justify"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:120%">As of December 31, 2021, the registrant had the following direct and indirect subsidiaries, the financial statements of which are all included in the consolidated financial statements of the registrant&#58;</font></div><div style="margin-top:5pt;padding-left:4.5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.198%"><tr><td style="width:1.0%"></td><td style="width:54.473%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:26.525%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:15.702%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="margin-bottom:4pt;padding-left:36pt;padding-right:36pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">NAME OF SUBSIDIARY</font></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="margin-bottom:4pt;padding-left:16.87pt;padding-right:16.87pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">STATE&#47;COUNTRY OF INCORPORATION</font></div></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><div style="margin-bottom:4pt;padding-left:4.5pt;padding-right:4.5pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">PERCENT OWNERSHIP</font></div></td></tr><tr><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Asia, Inc. </font></div></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Canada, Inc.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Canada Technology, Inc.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">California</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex EnShape GmbH</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Germany</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Europe, B.V.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Netherlands</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Europe, Inc.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Foreign Sales Corporation</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Barbados</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Germany, Inc.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Massachusetts</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Germany Aachen GmbH</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Germany</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Goruntu Sistemleri Satis ve Ticaret Limited Sirketi</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Turkey</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Hungary Kft.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Hungary</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex International, Inc.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Ireland Ltd.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Ireland</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex K.K.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Japan</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Korea Co. Ltd.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Korea</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Korea, Inc.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex, Ltd.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Ireland</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Malaysia Sdn. Bhd.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Malaysia</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Mexico S.R.L.C.V. </font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Mexico</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Poland z.o.o</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Poland</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Representacao Comercial E Participacoes Ltda.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Brazil</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Sensors India Private Limited</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">India</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Service, Inc</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Service Ltd.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Ireland</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Singapore, Inc.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Switzerland GmbH</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Switzerland</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Taiwan, Inc.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt;text-indent:-9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Technology and Investment LLC</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">California</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex UK Ltd.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">United Kingdom</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Vietnam Company Ltd.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Vietnam</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Vision Inspection System (Shanghai) Co., Ltd.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">China</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Vision Spain, S.L.U.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Spain</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cognex Vision Thailand Limited</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Thailand</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">SuaLab (Suzhou) Co., Ltd.</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">China</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Vision Drive, Inc.</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Delaware</font></div></td><td colspan="3" style="background-color:#cceeff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">One Vision Drive LLC </font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><div style="margin-bottom:4pt;padding-left:18pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Massachusetts</font></div></td><td colspan="3" style="background-color:#ffffff;padding:2px 5.5pt;text-align:center;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">100%</font></td></tr></table></div><div style="padding-left:9pt"><font><br></font></div><div style="height:72pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-23.1
<SEQUENCE>4
<FILENAME>cgnx-20211231xexhibit231.htm
<DESCRIPTION>EX-23.1
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2022 Workiva -->
<title>Document</title></head><body><div id="i893e49565ed9493f995c8c9d99a509bc_1"></div><div style="min-height:72pt;width:100%"><div style="margin-bottom:10pt;text-align:right"><font><br></font></div><div style="margin-bottom:10pt;text-align:right"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:138%">EXHIBIT 23.1</font></div><div><font><br></font></div></div><div style="margin-bottom:2pt;padding-left:9pt;text-align:justify"><font><br></font></div><div style="margin-bottom:10pt;text-align:right"><font><br></font></div><div style="margin-bottom:4pt;padding-left:4.5pt;padding-right:4.5pt;text-align:center"><font><br></font></div><div style="margin-bottom:4pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">CONSENT OF INDEPENDENT REGISTERED PUBLIC ACCOUNTING FIRM</font></div><div style="margin-bottom:4pt;padding-left:9pt;text-align:justify"><font><br></font></div><div style="text-align:justify"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:127%">We</font><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:127%"> have issued our reports dated February 17, 2022, with respect to the consolidated financial statements, schedule, and internal control over financial reporting included in the Annual Report of Cognex Corporation on Form 10-K for the year ended December 31, 2021. We consent to the incorporation by reference of said reports in the Registration Statements of Cognex Corporation on Forms S-8 (333-150315&#59; 333-206081&#59; 333-100709&#59; and 333-224716).</font></div><div><font><br></font></div><div style="text-align:justify"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:127%">&#47;s&#47; GRANT THORNTON LLP</font></div><div><font><br></font></div><div style="text-align:justify"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:127%">Boston</font><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:127%">, Massachusetts</font></div><div style="margin-bottom:4pt;text-align:justify"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">February&#160;17, 2022 </font></div><div style="padding-left:9pt"><font><br></font></div><div style="height:72pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.1
<SEQUENCE>5
<FILENAME>cgnx-20211231xexhibit311.htm
<DESCRIPTION>EX-31.1
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2022 Workiva -->
<title>Document</title></head><body><div id="id00bf528b519410787f7d0620c0df038_1"></div><div style="min-height:72pt;width:100%"><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">EXHIBIT 31.1</font></div><div><font><br></font></div></div><div style="text-align:right"><font><br></font></div><div style="margin-top:9pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">CERTIFICATION</font></div><div style="margin-top:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">I, Robert J. Willett, certify that&#58;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:2.858%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.152%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.152%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:86.438%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">I have reviewed this Annual Report on Form 10-K of Cognex Corporation&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">The registrant&#8217;s other certifying officer(s) 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&#58;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(a)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(b)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(c)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Evaluated the effectiveness of the registrant&#8217;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&#59; and</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(d)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting&#59; and</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">The registrant&#8217;s other certifying officer(s) and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions)&#58;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(a)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#8217;s ability to record, process, summarize and report financial information&#59; and</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(b)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</font></td></tr></table></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:97.807%"><tr><td style="width:1.0%"></td><td style="width:4.879%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:29.841%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.042%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.085%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.708%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.533%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.547%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:38.365%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Date&#58;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">By&#58;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#47;s&#47; Robert J. Willett</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Robert J. Willett</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">President and Chief Executive Officer<br>(Principal Executive Officer)</font></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-31.2
<SEQUENCE>6
<FILENAME>cgnx-20211231xexhibit312.htm
<DESCRIPTION>EX-31.2
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2022 Workiva -->
<title>Document</title></head><body><div id="i4823ea1a0b4a440cb550d3124d4824e2_1"></div><div style="min-height:72pt;width:100%"><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">EXHIBIT 31.2</font></div><div style="text-align:right"><font><br></font></div><div><font><br></font></div></div><div style="text-align:right"><font><br></font></div><div style="margin-top:9pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">CERTIFICATION</font></div><div style="margin-top:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">I, Paul D. Todgham, certify that&#58;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:2.858%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.152%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.152%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:86.438%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">I have reviewed this Annual Report on Form 10-K of Cognex Corporation&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">The registrant&#8217;s other certifying officer(s) 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&#58;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(a)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(b)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#59;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(c)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Evaluated the effectiveness of the registrant&#8217;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&#59; and</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(d)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Disclosed in this report any change in the registrant&#8217;s internal control over financial reporting that occurred during the registrant&#8217;s most recent fiscal quarter (the registrant&#8217;s fourth fiscal quarter in the case of an annual report) that has materially affected, or is reasonably likely to materially affect, the registrant&#8217;s internal control over financial reporting&#59; and</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5</font></td><td colspan="6" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">The registrant&#8217;s other certifying officer(s) and I have disclosed, based on our most recent evaluation of internal control over financial reporting, to the registrant&#8217;s auditors and the audit committee of the registrant&#8217;s board of directors (or persons performing the equivalent functions)&#58;</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(a)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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&#8217;s ability to record, process, summarize and report financial information&#59; and</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(b)</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Any fraud, whether or not material, that involves management or other employees who have a significant role in the registrant&#8217;s internal control over financial reporting.</font></td></tr></table></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.269%"><tr><td style="width:1.0%"></td><td style="width:4.791%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:29.386%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.009%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.023%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.534%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.170%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.536%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:39.551%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Date&#58;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">By&#58;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#47;s&#47; Paul D. Todgham</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Paul D. Todgham</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Senior Vice President of Finance and Chief Financial Officer<br>(Principal Financial Officer)</font></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32.1
<SEQUENCE>7
<FILENAME>cgnx-20211231xexhibit321.htm
<DESCRIPTION>EX-32.1
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2022 Workiva -->
<title>Document</title></head><body><div id="iebb86bea5e614e4bbc8fbf6027287862_1"></div><div style="min-height:72pt;width:100%"><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">EXHIBIT 32.1*</font></div><div><font><br></font></div></div><div style="text-align:right"><font><br></font></div><div style="margin-top:9pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">CERTIFICATION PURSUANT TO</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">18 U.S.C. 1350,</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">AS ADOPTED PURSUANT TO</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002</font></div><div style="margin-top:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The undersigned officer of Cognex Corporation (the &#8220;Company&#8221;) hereby certifies to his knowledge that the Company&#8217;s Annual Report on Form 10-K for the year ended December&#160;31, 2021 (the &#8220;Report&#8221;), as filed with the Securities and Exchange Commission on the date hereof, fully complies with the requirements of Section&#160;13(a) or 15(d), as applicable, of the Securities Exchange Act of 1934, as amended, and that the information contained in the Report fairly presents, in all material respects, the financial condition and results of operations of the Company.</font></div><div><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:96.929%"><tr><td style="width:1.0%"></td><td style="width:4.933%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:30.121%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:2.062%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.123%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.815%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:4.329%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.554%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:37.063%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Date&#58;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">By&#58;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#47;s&#47; Robert J. Willett</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Robert J. Willett</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">President and Chief Executive Officer         (Principal Executive Officer)</font></td></tr></table></div><div><font style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:120%">&#160;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:0.1%"></td><td style="width:2.142%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:96.558%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">*</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">This certification shall not be deemed &#8220;filed&#8221; for purposes of Section&#160;18 of the Securities Exchange Act of 1934, or otherwise subject to the liability of that section, nor shall it be deemed to be incorporated by reference into any filing under the Securities Act of 1933 or the Securities Exchange Act of 1934.</font></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-32.2
<SEQUENCE>8
<FILENAME>cgnx-20211231xexhibit322.htm
<DESCRIPTION>EX-32.2
<TEXT>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head>
<!-- Document created using Wdesk -->
<!-- Copyright 2022 Workiva -->
<title>Document</title></head><body><div id="i9943055ce6394a918169d21dc594285b_1"></div><div style="min-height:72pt;width:100%"><div><font><br></font></div><div style="text-align:right"><font><br></font></div><div style="text-align:right"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">EXHIBIT 32.2*</font></div><div><font><br></font></div></div><div style="text-align:right"><font><br></font></div><div style="margin-top:9pt;text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">CERTIFICATION PURSUANT TO</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">18 U.S.C. 1350,</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">AS ADOPTED PURSUANT TO</font></div><div style="text-align:center"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">SECTION 906 OF THE SARBANES-OXLEY ACT OF 2002</font></div><div style="margin-top:9pt"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The undersigned officer of Cognex Corporation (the &#8220;Company&#8221;) hereby certifies to his knowledge that the Company&#8217;s Annual Report on Form 10-K for the year ended December&#160;31, 2021 (the &#8220;Report&#8221;), as filed with the Securities and Exchange Commission on the date hereof, fully complies with the requirements of Section&#160;13(a) or 15(d), as applicable, of the Securities Exchange Act of 1934, as amended, and that the information contained in the Report fairly presents, in all material respects, the financial condition and results of operations of the Company.</font></div><div><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#160;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:5.195%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:29.207%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:1.996%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:2.999%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.466%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:3.145%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.532%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:39.460%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:right;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Date&#58;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">February 17, 2022</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">By&#58;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#47;s&#47; Paul D. Todgham</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Paul D. Todgham</font></td></tr><tr><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:0 1pt"></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Senior Vice President of Finance and Chief Financial Officer (Principal Financial Officer)</font></td></tr></table></div><div><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#160;</font></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:0.1%"></td><td style="width:2.142%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:96.558%"></td><td style="width:0.1%"></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">*</font></td><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">This certification shall not be deemed &#8220;filed&#8221; for purposes of Section&#160;18 of the Securities Exchange Act of 1934, or otherwise subject to the liability of that section, nor shall it be deemed to be incorporated by reference into any filing under the Securities Act of 1933 or the Securities Exchange Act of 1934.</font></td></tr></table></div><div style="height:45pt;position:relative;width:100%"><div style="bottom:0;position:absolute;width:100%"><div style="text-align:center"><font><br></font></div></div></div></body></html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.SCH
<SEQUENCE>9
<FILENAME>cgnx-20211231.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2022 Workiva-->
<!--r:4878a129-9b80-4a38-a303-2b34e8ac6131,g:f27b0d4b-0a26-4a3f-9754-6435629f6abe-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:cgnx="http://cognex.com/20211231" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:dtr-types="http://www.xbrl.org/dtr/type/2020-01-21" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://cognex.com/20211231">
  <xs:import namespace="http://fasb.org/srt/2021-01-31" schemaLocation="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd"/>
  <xs:import namespace="http://fasb.org/us-gaap/2021-01-31" schemaLocation="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd"/>
  <xs:import namespace="http://www.w3.org/1999/xlink" schemaLocation="http://www.xbrl.org/2003/xlink-2003-12-31.xsd"/>
  <xs:import namespace="http://www.xbrl.org/2003/instance" schemaLocation="http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd"/>
  <xs:import namespace="http://www.xbrl.org/2003/linkbase" schemaLocation="http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd"/>
  <xs:import namespace="http://www.xbrl.org/dtr/type/2020-01-21" schemaLocation="https://www.xbrl.org/dtr/type/2020-01-21/types.xsd"/>
  <xs:import namespace="http://xbrl.org/2005/xbrldt" schemaLocation="http://www.xbrl.org/2005/xbrldt-2005.xsd"/>
  <xs:import namespace="http://xbrl.sec.gov/country/2021" schemaLocation="https://xbrl.sec.gov/country/2021/country-2021.xsd"/>
  <xs:import namespace="http://xbrl.sec.gov/currency/2021" schemaLocation="https://xbrl.sec.gov/currency/2021/currency-2021.xsd"/>
  <xs:import namespace="http://xbrl.sec.gov/dei/2021q4" schemaLocation="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd"/>
  <xs:annotation>
    <xs:appinfo>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="cgnx-20211231_lab.xml" xlink:role="http://www.xbrl.org/2003/role/labelLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="cgnx-20211231_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="cgnx-20211231_cal.xml" xlink:role="http://www.xbrl.org/2003/role/calculationLinkbaseRef" xlink:type="simple"/>
      <link:linkbaseRef xmlns:xlink="http://www.w3.org/1999/xlink" xlink:arcrole="http://www.w3.org/1999/xlink/properties/linkbase" xlink:href="cgnx-20211231_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" xlink:type="simple"/>
      <link:roleType id="CoverPage" roleURI="http://cognex.com/role/CoverPage">
        <link:definition>000010001 - Document - Cover Page</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AuditInformation" roleURI="http://cognex.com/role/AuditInformation">
        <link:definition>000020002 - Document - Audit Information</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CONSOLIDATEDSTATEMENTSOFOPERATIONS" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS">
        <link:definition>100010003 - Statement - CONSOLIDATED STATEMENTS OF OPERATIONS</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME">
        <link:definition>100020004 - Statement - CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical">
        <link:definition>100030005 - Statement - CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Parenthetical)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CONSOLIDATEDBALANCESHEETS" roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS">
        <link:definition>100040006 - Statement - CONSOLIDATED BALANCE SHEETS</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CONSOLIDATEDBALANCESHEETSParenthetical" roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical">
        <link:definition>100050007 - Statement - CONSOLIDATED BALANCE SHEETS (Parenthetical)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CONSOLIDATEDSTATEMENTSOFCASHFLOWS" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS">
        <link:definition>100060008 - Statement - CONSOLIDATED STATEMENTS OF CASH FLOWS</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY">
        <link:definition>100070009 - Statement - CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical">
        <link:definition>100080010 - Statement - CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY (Parenthetical)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SummaryofSignificantAccountingPolicies" roleURI="http://cognex.com/role/SummaryofSignificantAccountingPolicies">
        <link:definition>210011001 - Disclosure - Summary of Significant Accounting Policies</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SummaryofSignificantAccountingPoliciesPolicies" roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies">
        <link:definition>220022001 - Disclosure - Summary of Significant Accounting Policies (Policies)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail">
        <link:definition>240034001 - Disclosure - Summary of Significant Accounting Policies - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails">
        <link:definition>240044002 - Disclosure - Summary of Significant Accounting Policies - Intangible Assets (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SummaryofSignificantAccountingPoliciesWarrantyDetails" roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails">
        <link:definition>240054003 - Disclosure - Summary of Significant Accounting Policies - Warranty (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails">
        <link:definition>240064004 - Disclosure - Summary of Significant Accounting Policies Summary of Significant Accounting Policies - Revenue Recognition (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails" roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails">
        <link:definition>240074005 - Disclosure - Summary of Significant Accounting Policies - Advertising Costs (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails">
        <link:definition>240084006 - Disclosure - Summary of Significant Accounting Policies - Comprehensive Income (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="NewPronouncements" roleURI="http://cognex.com/role/NewPronouncements">
        <link:definition>210091002 - Disclosure - New Pronouncements</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="NewPronouncementsPolicies" roleURI="http://cognex.com/role/NewPronouncementsPolicies">
        <link:definition>220102002 - Disclosure - New Pronouncements (Policies)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="FairValueMeasurements" roleURI="http://cognex.com/role/FairValueMeasurements">
        <link:definition>210111003 - Disclosure - Fair Value Measurements</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="FairValueMeasurementsTables" roleURI="http://cognex.com/role/FairValueMeasurementsTables">
        <link:definition>230123001 - Disclosure - Fair Value Measurements (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" roleURI="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail">
        <link:definition>240134007 - Disclosure - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on a Recurring Basis (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" roleURI="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails">
        <link:definition>240144008 - Disclosure - Fair Value Measurements - Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="FairValueMeasurementsAdditionalInformationDetails" roleURI="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails">
        <link:definition>240154009 - Disclosure - Fair Value Measurements - Additional Information (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandInvestments" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestments">
        <link:definition>210161004 - Disclosure - Cash, Cash Equivalents, and Investments</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandInvestmentsTables" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsTables">
        <link:definition>230173002 - Disclosure - Cash, Cash Equivalents, and Investments (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail">
        <link:definition>240184010 - Disclosure - Cash, Cash Equivalents and Investments - Components of Cash, Cash Equivalents and Investments (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandInvestmentsAdditionalInformationDetail" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail">
        <link:definition>240194011 - Disclosure - Cash, Cash Equivalents and Investments - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail">
        <link:definition>240204012 - Disclosure - Cash, Cash Equivalents and Investments - Amortized Cost to Fair Value (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail">
        <link:definition>240214013 - Disclosure - Cash, Cash Equivalents and Investments - Gross Unrealized Losses and Fair Value for Available-for-Sale Investments (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails">
        <link:definition>240224014 - Disclosure - Cash, Cash Equivalents, and Investments - Allowance for Credit Loss (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail">
        <link:definition>240234015 - Disclosure - Cash, Cash Equivalents and Investments - Effective Maturity Dates of Available-for-Sale Investments (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="Inventories" roleURI="http://cognex.com/role/Inventories">
        <link:definition>210241005 - Disclosure - Inventories</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="InventoriesTables" roleURI="http://cognex.com/role/InventoriesTables">
        <link:definition>230253003 - Disclosure - Inventories (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="InventoriesInventoriesDetail" roleURI="http://cognex.com/role/InventoriesInventoriesDetail">
        <link:definition>240264016 - Disclosure - Inventories - Inventories (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="PropertyPlantandEquipment" roleURI="http://cognex.com/role/PropertyPlantandEquipment">
        <link:definition>210271006 - Disclosure - Property, Plant, and Equipment</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="PropertyPlantandEquipmentTables" roleURI="http://cognex.com/role/PropertyPlantandEquipmentTables">
        <link:definition>230283004 - Disclosure - Property, Plant, and Equipment (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" roleURI="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail">
        <link:definition>240294017 - Disclosure - Property, Plant, and Equipment - Property, Plant, and Equipment (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="PropertyPlantandEquipmentAdditionalInformationDetails" roleURI="http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails">
        <link:definition>240304018 - Disclosure - Property, Plant and Equipment - Additional Information (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="LeasesLeases" roleURI="http://cognex.com/role/LeasesLeases">
        <link:definition>210311007 - Disclosure - Leases Leases</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="LeasesTables" roleURI="http://cognex.com/role/LeasesTables">
        <link:definition>230323005 - Disclosure - Leases (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="LeasesDetails" roleURI="http://cognex.com/role/LeasesDetails">
        <link:definition>240334019 - Disclosure - Leases (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="LeasesScheduleofPaymentsDetails" roleURI="http://cognex.com/role/LeasesScheduleofPaymentsDetails">
        <link:definition>240344020 - Disclosure - Leases - Schedule of Payments (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="Goodwill" roleURI="http://cognex.com/role/Goodwill">
        <link:definition>210351008 - Disclosure - Goodwill</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="GoodwillTables" roleURI="http://cognex.com/role/GoodwillTables">
        <link:definition>230363006 - Disclosure - Goodwill (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="GoodwillChangesintheCarryingValueofGoodwillDetail" roleURI="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail">
        <link:definition>240374021 - Disclosure - Goodwill - Changes in the Carrying Value of Goodwill (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="GoodwillAdditionalInformationDetail" roleURI="http://cognex.com/role/GoodwillAdditionalInformationDetail">
        <link:definition>240384022 - Disclosure - Goodwill - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IntangibleAssets" roleURI="http://cognex.com/role/IntangibleAssets">
        <link:definition>210391009 - Disclosure - Intangible Assets</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IntangibleAssetsTables" roleURI="http://cognex.com/role/IntangibleAssetsTables">
        <link:definition>230403007 - Disclosure - Intangible Assets (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IntangibleAssetsAmortizedIntangibleAssetsDetail" roleURI="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail">
        <link:definition>240414023 - Disclosure - Intangible Assets - Amortized Intangible Assets (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" roleURI="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail">
        <link:definition>240424024 - Disclosure - Intangible Assets - Estimated Amortization Expense Succeeding Fiscal Years (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IntangibleAssetsNarrativeDetails" roleURI="http://cognex.com/role/IntangibleAssetsNarrativeDetails">
        <link:definition>240434025 - Disclosure - Intangible Assets - Narrative (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AccruedExpenses" roleURI="http://cognex.com/role/AccruedExpenses">
        <link:definition>210441010 - Disclosure - Accrued Expenses</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AccruedExpensesTables" roleURI="http://cognex.com/role/AccruedExpensesTables">
        <link:definition>230453008 - Disclosure - Accrued Expenses (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AccruedExpensesConstituentsofAccruedExpensesDetail" roleURI="http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail">
        <link:definition>240464026 - Disclosure - Accrued Expenses - Constituents of Accrued Expenses (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="AccruedExpensesChangesinWarrantyObligationsDetail" roleURI="http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail">
        <link:definition>240474027 - Disclosure - Accrued Expenses - Changes in Warranty Obligations (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingencies" roleURI="http://cognex.com/role/CommitmentsandContingencies">
        <link:definition>210481011 - Disclosure - Commitments and Contingencies</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="CommitmentsandContingenciesAdditionalInformationDetail" roleURI="http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail">
        <link:definition>240494028 - Disclosure - Commitments and Contingencies - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IndemnificationProvisions" roleURI="http://cognex.com/role/IndemnificationProvisions">
        <link:definition>210501012 - Disclosure - Indemnification Provisions</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DerivativeInstruments" roleURI="http://cognex.com/role/DerivativeInstruments">
        <link:definition>210511013 - Disclosure - Derivative Instruments</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DerivativeInstrumentsTables" roleURI="http://cognex.com/role/DerivativeInstrumentsTables">
        <link:definition>230523009 - Disclosure - Derivative Instruments (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DerivativeInstrumentsAdditionalDetailsDetails" roleURI="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails">
        <link:definition>240534029 - Disclosure - Derivative Instruments - Additional Details (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DerivativeInstrumentsOutstandingForwardContractsDetails" roleURI="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails">
        <link:definition>240544030 - Disclosure - Derivative Instruments - Outstanding Forward Contracts (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DerivativeInstrumentsBalanceSheetLocationDetails" roleURI="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails">
        <link:definition>240554031 - Disclosure - Derivative Instruments - Balance Sheet Location (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" roleURI="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails">
        <link:definition>240564032 - Disclosure - Derivative Instruments - Assets and liabilities presented on a net basis due to the right of offset (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" roleURI="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails">
        <link:definition>240574033 - Disclosure - Derivative Instruments - Gain (Loss) Recognized in Other Comprehensive Income (Loss) (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenueRecognition" roleURI="http://cognex.com/role/RevenueRecognition">
        <link:definition>210581014 - Disclosure - Revenue Recognition</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenueRecognitionTables" roleURI="http://cognex.com/role/RevenueRecognitionTables">
        <link:definition>230593010 - Disclosure - Revenue Recognition (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenueRecognitionNarrativesDetails" roleURI="http://cognex.com/role/RevenueRecognitionNarrativesDetails">
        <link:definition>240604034 - Disclosure - Revenue Recognition - Narratives (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenueRecognitionDisaggregationbyGeographyandTypeDetails" roleURI="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails">
        <link:definition>240614035 - Disclosure - Revenue Recognition - Disaggregation by Geography and Type (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenueRecognitionAllowanceforCreditLossDetails" roleURI="http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails">
        <link:definition>240624036 - Disclosure - Revenue Recognition - Allowance for Credit Loss (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails" roleURI="http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails">
        <link:definition>240634037 - Disclosure - Revenue Recognition - Deferred Revenue and Customer Deposits Rollforward (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ShareholdersEquity" roleURI="http://cognex.com/role/ShareholdersEquity">
        <link:definition>210641015 - Disclosure - Shareholders' Equity</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ShareholdersEquityAdditionalInformationDetail" roleURI="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail">
        <link:definition>240654038 - Disclosure - Shareholders' Equity - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockBasedCompensation" roleURI="http://cognex.com/role/StockBasedCompensation">
        <link:definition>210661016 - Disclosure - Stock-Based Compensation</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockBasedCompensationTables" roleURI="http://cognex.com/role/StockBasedCompensationTables">
        <link:definition>230673011 - Disclosure - Stock-Based Compensation (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockBasedCompensationExpenseAdditionalInformationDetail" roleURI="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail">
        <link:definition>240684039 - Disclosure - Stock-Based Compensation Expense - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockBasedCompensationExpenseSummaryofStockOptionActivityDetail" roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail">
        <link:definition>240694040 - Disclosure - Stock-Based Compensation Expense - Summary of Stock Option Activity (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" roleURI="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail">
        <link:definition>240704041 - Disclosure - Stock-Based Compensation Expense - Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail">
        <link:definition>240714042 - Disclosure - Stock-Based Compensation Expense - Summary of Restricted Stock Option Activity (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" roleURI="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail">
        <link:definition>240724043 - Disclosure - Stock-Based Compensation Expense - Stock-Based Compensation Expense (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="EmployeeSavingsPlan" roleURI="http://cognex.com/role/EmployeeSavingsPlan">
        <link:definition>210731017 - Disclosure - Employee Savings Plan</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="EmployeeSavingsPlanAdditionalInformationDetail" roleURI="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail">
        <link:definition>240744044 - Disclosure - Employee Savings Plan - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxes" roleURI="http://cognex.com/role/IncomeTaxes">
        <link:definition>210751018 - Disclosure - Income Taxes</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesTables" roleURI="http://cognex.com/role/IncomeTaxesTables">
        <link:definition>230763012 - Disclosure - Income Taxes (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesAdditionalInformationDetails" roleURI="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails">
        <link:definition>240774045 - Disclosure - Income Taxes - Additional Information (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" roleURI="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails">
        <link:definition>240784046 - Disclosure - Income Taxes - Constituents of Provision for Income Taxes (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails" roleURI="http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails">
        <link:definition>240794047 - Disclosure - Income Taxes - Reconciliation of the United States Federal Statutory Corporate Tax Rate to Company's Effective Tax Rate or Income Tax Provision (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesScheduleofChangeinAccountingPolicyDetails" roleURI="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails">
        <link:definition>240804048 - Disclosure - Income Taxes - Schedule of Change in Accounting Policy (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails" roleURI="http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails">
        <link:definition>240814049 - Disclosure - Income Taxes - Changes in the Reserve for Income Taxes, Excluding Interest and Penalties (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="IncomeTaxesConstituentsofDeferredTaxAssetsDetails" roleURI="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails">
        <link:definition>240824050 - Disclosure - Income Taxes - Constituents of Deferred Tax Assets (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="WeightedAverageShares" roleURI="http://cognex.com/role/WeightedAverageShares">
        <link:definition>210831019 - Disclosure - Weighted Average Shares</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="WeightedAverageSharesTables" roleURI="http://cognex.com/role/WeightedAverageSharesTables">
        <link:definition>230843013 - Disclosure - Weighted Average Shares (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="WeightedAverageSharesCalculationofWeightedAverageSharesDetail" roleURI="http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail">
        <link:definition>240854051 - Disclosure - Weighted Average Shares - Calculation of Weighted Average Shares (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="WeightedAverageSharesAdditionalInformationDetail" roleURI="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail">
        <link:definition>240864052 - Disclosure - Weighted Average Shares - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SegmentandGeographicInformation" roleURI="http://cognex.com/role/SegmentandGeographicInformation">
        <link:definition>210871020 - Disclosure - Segment and Geographic Information</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SegmentandGeographicInformationTables" roleURI="http://cognex.com/role/SegmentandGeographicInformationTables">
        <link:definition>230883014 - Disclosure - Segment and Geographic Information (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SegmentandGeographicInformationAdditionalInformationDetail" roleURI="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail">
        <link:definition>240894053 - Disclosure - Segment and Geographic Information - Additional Information (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" roleURI="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail">
        <link:definition>240904054 - Disclosure - Segment and Geographic Information - Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BusinessAcquisitions" roleURI="http://cognex.com/role/BusinessAcquisitions">
        <link:definition>210911021 - Disclosure - Business Acquisitions</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="BusinessAcquisitionsSualabCoLtdNarrativeDetails" roleURI="http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails">
        <link:definition>240924055 - Disclosure - Business Acquisitions - Sualab Co., Ltd. Narrative (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RestructuringCharges" roleURI="http://cognex.com/role/RestructuringCharges">
        <link:definition>210931022 - Disclosure - Restructuring Charges</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RestructuringChargesTables" roleURI="http://cognex.com/role/RestructuringChargesTables">
        <link:definition>230943015 - Disclosure - Restructuring Charges (Tables)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RestructuringChargesAdditionalInformationDetails" roleURI="http://cognex.com/role/RestructuringChargesAdditionalInformationDetails">
        <link:definition>240954056 - Disclosure - Restructuring Charges - Additional Information (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails">
        <link:definition>240964057 - Disclosure - Restructuring Charges - Schedule of Restructuring and Related Costs (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails">
        <link:definition>240974058 - Disclosure - Restructuring Charges - Schedule of Restructuring Reserve by Type of Cost (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SubsequentEvents" roleURI="http://cognex.com/role/SubsequentEvents">
        <link:definition>210981023 - Disclosure - Subsequent Events</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="SubsequentEventsDetails" roleURI="http://cognex.com/role/SubsequentEventsDetails">
        <link:definition>240994059 - Disclosure - Subsequent Events - (Details)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ScheduleIIValuationandQualifyingAccounts" roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts">
        <link:definition>211001024 - Disclosure - Schedule II - Valuation and Qualifying Accounts</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
      <link:roleType id="ScheduleIIValuationandQualifyingAccountsDetail" roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail">
        <link:definition>241014060 - Disclosure - Schedule II -Valuation and Qualifying Accounts (Detail)</link:definition>
        <link:usedOn>link:presentationLink</link:usedOn>
        <link:usedOn>link:calculationLink</link:usedOn>
        <link:usedOn>link:definitionLink</link:usedOn>
      </link:roleType>
    </xs:appinfo>
  </xs:annotation>
  <xs:element id="cgnx_NoncurrentDeferredTaxAssetsDeprecation" abstract="false" name="NoncurrentDeferredTaxAssetsDeprecation" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" abstract="false" name="MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" nillable="true" xbrli:periodType="duration" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_CompanyContributionsVestAtEndOfFourYears" abstract="false" name="CompanyContributionsVestAtEndOfFourYears" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" abstract="false" name="EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" abstract="false" name="IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" abstract="false" name="AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="cgnx_ProductCostOfRevenueMember" abstract="true" name="ProductCostOfRevenueMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan" abstract="false" name="MinimumAgeToBeEligibleToDefinedContributionPlan" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized" abstract="false" name="OperatingLeaseExpenseNoLiabilityOrAssetRecognized" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" abstract="false" name="OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_UnrecognizedTaxBenefitsGross" abstract="false" name="UnrecognizedTaxBenefitsGross" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" abstract="false" name="DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease" abstract="false" name="ContractWithCustomerLiabilityPeriodIncreaseDecrease" nillable="true" xbrli:periodType="duration" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" abstract="false" name="AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_GViVenturesInc.Member" abstract="true" name="GViVenturesInc.Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" abstract="false" name="AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_ExpirationPeriodOfStockOptionPlan" abstract="false" name="ExpirationPeriodOfStockOptionPlan" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="cgnx_CorporateBondsFairValueDisclosure" abstract="false" name="CorporateBondsFairValueDisclosure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_CurrencytranslationadjustmentAbstract" abstract="true" name="CurrencytranslationadjustmentAbstract" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_ApplicationofCustomerSpecificSolutionsMember" abstract="true" name="ApplicationofCustomerSpecificSolutionsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_AssetBackedSecuritiesFairValueDisclosure" abstract="false" name="AssetBackedSecuritiesFairValueDisclosure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_ExcessAndObsoleteInventoryCharges" abstract="false" name="ExcessAndObsoleteInventoryCharges" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_SovereignBondsFairValueDisclosure" abstract="false" name="SovereignBondsFairValueDisclosure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_ComputerHardwareAndSoftwareMember" abstract="true" name="ComputerHardwareAndSoftwareMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" abstract="false" name="AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_DiscreteTaxItemsAxis" abstract="true" name="DiscreteTaxItemsAxis" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrldt:dimensionItem" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_DeferredTaxAssetsOtherNoncurrent" abstract="false" name="DeferredTaxAssetsOtherNoncurrent" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_IndemnificationProvisionsTextBlock" abstract="false" name="IndemnificationProvisionsTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock" abstract="false" name="ConcentrationsOfRiskPolicyPolicyTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="cgnx_ProductWarrantyPeriod" abstract="false" name="ProductWarrantyPeriod" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="cgnx_CustomerContractsAndRelationshipsMember" abstract="true" name="CustomerContractsAndRelationshipsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_SellingGeneralAndAdministrativeMember" abstract="true" name="SellingGeneralAndAdministrativeMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_CashCashEquivalentsShortTermAndLongTermInvestments" abstract="false" name="CashCashEquivalentsShortTermAndLongTermInvestments" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_VoteEntitledForEachCommonShareOutstanding" abstract="false" name="VoteEntitledForEachCommonShareOutstanding" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="xbrli:integerItemType"/>
  <xs:element id="cgnx_SouthboroughMassachusettsMember" abstract="true" name="SouthboroughMassachusettsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_NatureOfOperationsPolicyTextBlock" abstract="false" name="NatureOfOperationsPolicyTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="cgnx_CompanyContributionsVestAtEndOfTwoYear" abstract="false" name="CompanyContributionsVestAtEndOfTwoYear" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" abstract="false" name="ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_MoneyMarketInstrumentsFairValueDisclosure" abstract="false" name="MoneyMarketInstrumentsFairValueDisclosure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_CompanyContributionsVestAtEndOfOneYear" abstract="false" name="CompanyContributionsVestAtEndOfOneYear" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="cgnx_OtherAsiaMember" abstract="true" name="OtherAsiaMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" abstract="false" name="SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_DeferredTaxAssetsForeignTaxStructureChange" abstract="false" name="DeferredTaxAssetsForeignTaxStructureChange" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_AgencyBondsFairValueDisclosure" abstract="false" name="AgencyBondsFairValueDisclosure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" abstract="false" name="AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember" abstract="true" name="CompletedTechnologiesAndOtherIntangibleAssetsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_GreaterChinaMember" abstract="true" name="GreaterChinaMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" abstract="false" name="ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" nillable="true" xbrli:periodType="duration" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" abstract="false" name="EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="cgnx_Customer2Member" abstract="true" name="Customer2Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember" abstract="true" name="ChangeinGlobalIntangibleLowTaxedIncomeMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_OtherGeographicAreaMember" abstract="true" name="OtherGeographicAreaMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_CompanyContributionsVestAtEndOfThreeYears" abstract="false" name="CompanyContributionsVestAtEndOfThreeYears" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="cgnx_RepurchaseProgramMarch2020Member" abstract="true" name="RepurchaseProgramMarch2020Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember" abstract="true" name="ForeignTaxBenefitGainsTaxedOutsideUSMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_CustomerContractsLiabilityCurrentRollForward" abstract="true" name="CustomerContractsLiabilityCurrentRollForward" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_HardwareAndSoftwareMember" abstract="true" name="HardwareAndSoftwareMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled" abstract="false" name="StockRepurchasedDuringPeriodSharesNotYetSettled" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:sharesItemType"/>
  <xs:element id="cgnx_SualabCo.Ltd.Member" abstract="true" name="SualabCo.Ltd.Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_ContractLiabilityForeignExchangeRateChanges" abstract="false" name="ContractLiabilityForeignExchangeRateChanges" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_RevenuePaymentTerms" abstract="false" name="RevenuePaymentTerms" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="cgnx_DeferredIncomeTaxAssetsLiabilitiesNet" abstract="false" name="DeferredIncomeTaxAssetsLiabilitiesNet" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_Customer1Member" abstract="true" name="Customer1Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_NumberOfGroupsWithinEmployeePopulation" abstract="false" name="NumberOfGroupsWithinEmployeePopulation" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="xbrli:integerItemType"/>
  <xs:element id="cgnx_AgencyBondsMember" abstract="true" name="AgencyBondsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember" abstract="true" name="ForeignTaxExpenseTransferPriceAdjustmentMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_LongTermInvestmentsMember" abstract="true" name="LongTermInvestmentsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross" abstract="false" name="DeferredTaxAssetsWithJurisdictionalNettingGross" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_DiscreteTaxItemsDomain" abstract="true" name="DiscreteTaxItemsDomain" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_MunicipalBondsFairValueDisclosure" abstract="false" name="MunicipalBondsFairValueDisclosure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_StandardProductandServicesMember" abstract="true" name="StandardProductandServicesMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_DueFromForeignBanks" abstract="false" name="DueFromForeignBanks" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_EnShapeGmbHAbstract" abstract="true" name="EnShapeGmbHAbstract" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" abstract="true" name="DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" abstract="false" name="Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_TreasuryBillsFairValueDisclosure" abstract="false" name="TreasuryBillsFairValueDisclosure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_RetirementAllowance" abstract="false" name="RetirementAllowance" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_MaximumInvestmentOfCompanyInPartnership" abstract="false" name="MaximumInvestmentOfCompanyInPartnership" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" abstract="false" name="EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" abstract="false" name="ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:textBlockItemType"/>
  <xs:element id="cgnx_AccruedExpensesMember" abstract="true" name="AccruedExpensesMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_StateResearchAndExperimentationMember" abstract="true" name="StateResearchAndExperimentationMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" abstract="false" name="DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" abstract="false" name="MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" nillable="true" xbrli:periodType="duration" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" abstract="false" name="EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" abstract="false" name="AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" abstract="false" name="OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_ChiaroTechnologiesLLCMember" abstract="true" name="ChiaroTechnologiesLLCMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" abstract="false" name="EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
  <xs:element id="cgnx_RepurchaseProgramOctober2018Member" abstract="true" name="RepurchaseProgramOctober2018Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="dtr-types:domainItemType"/>
  <xs:element id="cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" abstract="false" name="EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="dtr-types:percentItemType"/>
</xs:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.CAL
<SEQUENCE>10
<FILENAME>cgnx-20211231_cal.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION CALCULATION LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2022 Workiva-->
<!--r:4878a129-9b80-4a38-a303-2b34e8ac6131,g:f27b0d4b-0a26-4a3f-9754-6435629f6abe-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFOPERATIONS"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_55d40a88-fb0d-4b1f-8650-8f52d489541b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GrossProfit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_1514b511-d69e-4b10-8f23-5d74693b8a32" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_GrossProfit_55d40a88-fb0d-4b1f-8650-8f52d489541b" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_1514b511-d69e-4b10-8f23-5d74693b8a32" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfGoodsAndServicesSold_ea7868d5-335b-47a0-81f8-b2b81d7d895d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_GrossProfit_55d40a88-fb0d-4b1f-8650-8f52d489541b" xlink:to="loc_us-gaap_CostOfGoodsAndServicesSold_ea7868d5-335b-47a0-81f8-b2b81d7d895d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_bd04339d-546a-4a68-b048-8f9664592084" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_c1e60b8a-234b-485e-a468-333972408ef8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GrossProfit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingIncomeLoss_bd04339d-546a-4a68-b048-8f9664592084" xlink:to="loc_us-gaap_GrossProfit_c1e60b8a-234b-485e-a468-333972408ef8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpense_54fb4b86-24c7-402b-bd0c-45c8f6728b4c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingIncomeLoss_bd04339d-546a-4a68-b048-8f9664592084" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpense_54fb4b86-24c7-402b-bd0c-45c8f6728b4c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingGeneralAndAdministrativeExpense_087a2e1a-1d0e-4217-af2c-79110231850b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SellingGeneralAndAdministrativeExpense"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingIncomeLoss_bd04339d-546a-4a68-b048-8f9664592084" xlink:to="loc_us-gaap_SellingGeneralAndAdministrativeExpense_087a2e1a-1d0e-4217-af2c-79110231850b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_0d07b032-77fc-4e33-a224-2ffa819ee714" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingIncomeLoss_bd04339d-546a-4a68-b048-8f9664592084" xlink:to="loc_us-gaap_RestructuringCharges_0d07b032-77fc-4e33-a224-2ffa819ee714" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_b20dcaad-39a4-4085-94fb-7e653fda41d0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:calculationArc order="5" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OperatingIncomeLoss_bd04339d-546a-4a68-b048-8f9664592084" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_b20dcaad-39a4-4085-94fb-7e653fda41d0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_57eb1e31-43f8-4a84-8764-13396c9fef42" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_1d916c9b-08c6-4b39-9d23-9282a7863a91" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetIncomeLoss_57eb1e31-43f8-4a84-8764-13396c9fef42" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_1d916c9b-08c6-4b39-9d23-9282a7863a91" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_3acd7a0f-271a-45af-a2e1-4c4fffe8e1f5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetIncomeLoss_57eb1e31-43f8-4a84-8764-13396c9fef42" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_3acd7a0f-271a-45af-a2e1-4c4fffe8e1f5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_f695afe0-546e-433e-ae37-1be1d63e2513" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_f5e96878-5342-453a-8419-9514308612f9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_f695afe0-546e-433e-ae37-1be1d63e2513" xlink:to="loc_us-gaap_OperatingIncomeLoss_f5e96878-5342-453a-8419-9514308612f9" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_f1a9cdb3-feb1-4360-b88c-ec06d23957ef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyTransactionGainLossBeforeTax"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_f695afe0-546e-433e-ae37-1be1d63e2513" xlink:to="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_f1a9cdb3-feb1-4360-b88c-ec06d23957ef" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNonoperating_df65f41c-4e57-4997-a86a-e870dcc64102" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentIncomeNonoperating"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_f695afe0-546e-433e-ae37-1be1d63e2513" xlink:to="loc_us-gaap_InvestmentIncomeNonoperating_df65f41c-4e57-4997-a86a-e870dcc64102" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense_b1764913-9bd3-4430-97b3-eda0a82d9494" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_f695afe0-546e-433e-ae37-1be1d63e2513" xlink:to="loc_us-gaap_OtherNonoperatingIncomeExpense_b1764913-9bd3-4430-97b3-eda0a82d9494" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_6388c913-9ce7-409e-9e2f-76678e09e670" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_251da69e-28af-4174-a024-5ab0efa409b0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_6388c913-9ce7-409e-9e2f-76678e09e670" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_251da69e-28af-4174-a024-5ab0efa409b0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_a4f07237-7789-4fde-afe4-4665c1cbb8a2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_ecf166b5-7927-4c53-b99b-3f0f119de954" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_a4f07237-7789-4fde-afe4-4665c1cbb8a2" xlink:to="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_ecf166b5-7927-4c53-b99b-3f0f119de954" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_f71f82a3-45f1-46ad-9711-8edda0995bd8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_a4f07237-7789-4fde-afe4-4665c1cbb8a2" xlink:to="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_f71f82a3-45f1-46ad-9711-8edda0995bd8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_68110f26-2410-4a8e-8278-d3816bb858b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_45d11508-cc41-4560-9858-d8cb301f5dca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_68110f26-2410-4a8e-8278-d3816bb858b2" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_45d11508-cc41-4560-9858-d8cb301f5dca" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_9d236821-7c1f-4b61-a6d9-f694c8e18400" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_68110f26-2410-4a8e-8278-d3816bb858b2" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_9d236821-7c1f-4b61-a6d9-f694c8e18400" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNetOfTax_8a6a9eb6-8522-46c5-bef2-f632bce7a5cd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_93ee9b65-ff1e-41c5-a048-1125bc00ac4e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_ComprehensiveIncomeNetOfTax_8a6a9eb6-8522-46c5-bef2-f632bce7a5cd" xlink:to="loc_us-gaap_NetIncomeLoss_93ee9b65-ff1e-41c5-a048-1125bc00ac4e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_90625ff7-1120-410d-a0e6-83de527451a1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_ComprehensiveIncomeNetOfTax_8a6a9eb6-8522-46c5-bef2-f632bce7a5cd" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_90625ff7-1120-410d-a0e6-83de527451a1" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDBALANCESHEETS"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquity_f81f138a-b72d-4d9b-bc13-cd9dc7d77b82" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_b18c5c4b-2378-439f-9ac6-df391007eeba" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Liabilities"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquity_f81f138a-b72d-4d9b-bc13-cd9dc7d77b82" xlink:to="loc_us-gaap_Liabilities_b18c5c4b-2378-439f-9ac6-df391007eeba" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingencies_502309b5-4a16-484b-b450-8c27bc0e16b1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingencies"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquity_f81f138a-b72d-4d9b-bc13-cd9dc7d77b82" xlink:to="loc_us-gaap_CommitmentsAndContingencies_502309b5-4a16-484b-b450-8c27bc0e16b1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_331b85fc-0c77-47b7-b8f1-6c493c8b8e8d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquity_f81f138a-b72d-4d9b-bc13-cd9dc7d77b82" xlink:to="loc_us-gaap_StockholdersEquity_331b85fc-0c77-47b7-b8f1-6c493c8b8e8d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_517eab38-f1a1-4763-abff-1f4a329e5826" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Liabilities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_28b15e15-1707-43e0-9f73-f6c3b5f1498f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_517eab38-f1a1-4763-abff-1f4a329e5826" xlink:to="loc_us-gaap_LiabilitiesCurrent_28b15e15-1707-43e0-9f73-f6c3b5f1498f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet_d0442754-d70e-44b2-bea0-bac24750cf26" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_517eab38-f1a1-4763-abff-1f4a329e5826" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet_d0442754-d70e-44b2-bea0-bac24750cf26" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_9c5556cb-a25e-4be6-8603-a54d25b7332b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilityForUncertainTaxPositionsNoncurrent"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_517eab38-f1a1-4763-abff-1f4a329e5826" xlink:to="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_9c5556cb-a25e-4be6-8603-a54d25b7332b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesNoncurrent_094b8c55-9e42-43de-942e-d1af0dd466bb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesNoncurrent"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_517eab38-f1a1-4763-abff-1f4a329e5826" xlink:to="loc_us-gaap_AccruedIncomeTaxesNoncurrent_094b8c55-9e42-43de-942e-d1af0dd466bb" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent_6cf46ab5-260a-4a95-94e3-9c89b64bf146" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_517eab38-f1a1-4763-abff-1f4a329e5826" xlink:to="loc_us-gaap_OtherLiabilitiesNoncurrent_6cf46ab5-260a-4a95-94e3-9c89b64bf146" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_4dbb1cc3-113f-413d-aa4b-59adaf160891" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Liabilities_517eab38-f1a1-4763-abff-1f4a329e5826" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_4dbb1cc3-113f-413d-aa4b-59adaf160891" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_293978bf-2228-4b2c-9b1a-0d104aa2d13d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockValueOutstanding_6488d5e9-06ae-497a-8b83-cf9c768962c8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockValueOutstanding"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_293978bf-2228-4b2c-9b1a-0d104aa2d13d" xlink:to="loc_us-gaap_CommonStockValueOutstanding_6488d5e9-06ae-497a-8b83-cf9c768962c8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalCommonStock_1cad0013-5220-43e5-bc14-4a2aee4e901c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_293978bf-2228-4b2c-9b1a-0d104aa2d13d" xlink:to="loc_us-gaap_AdditionalPaidInCapitalCommonStock_1cad0013-5220-43e5-bc14-4a2aee4e901c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_f4d60e0d-3465-49d2-917b-83dfa3d375a3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_293978bf-2228-4b2c-9b1a-0d104aa2d13d" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_f4d60e0d-3465-49d2-917b-83dfa3d375a3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_07343397-9451-4b2c-8f95-967878567632" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_293978bf-2228-4b2c-9b1a-0d104aa2d13d" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_07343397-9451-4b2c-8f95-967878567632" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockValueOutstanding_70694285-8700-4a52-a5b2-099be6cb288c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockValueOutstanding"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_StockholdersEquity_293978bf-2228-4b2c-9b1a-0d104aa2d13d" xlink:to="loc_us-gaap_PreferredStockValueOutstanding_70694285-8700-4a52-a5b2-099be6cb288c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_e05dc721-d181-458d-9b11-74129e722012" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_5b5b086a-a1ad-4de6-a2e2-6d1df7d6ddd0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_e05dc721-d181-458d-9b11-74129e722012" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_5b5b086a-a1ad-4de6-a2e2-6d1df7d6ddd0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_db639ded-8e79-4d2f-95c9-01d946c0d5be" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_e05dc721-d181-458d-9b11-74129e722012" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_db639ded-8e79-4d2f-95c9-01d946c0d5be" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent_8af1ec8f-f7ba-446d-bdb8-5c3a28600177" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableNetCurrent"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_e05dc721-d181-458d-9b11-74129e722012" xlink:to="loc_us-gaap_AccountsReceivableNetCurrent_8af1ec8f-f7ba-446d-bdb8-5c3a28600177" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_d5d7dcee-3b5b-4a37-903b-f42b96df138f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_e05dc721-d181-458d-9b11-74129e722012" xlink:to="loc_us-gaap_InventoryNet_d5d7dcee-3b5b-4a37-903b-f42b96df138f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_e8b4a888-e156-4af7-bc5a-e2281f49af38" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_e05dc721-d181-458d-9b11-74129e722012" xlink:to="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_e8b4a888-e156-4af7-bc5a-e2281f49af38" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnbilledReceivablesCurrent_d5a9318d-5c01-49fd-9829-32b4ca3d8180" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnbilledReceivablesCurrent"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AssetsCurrent_e05dc721-d181-458d-9b11-74129e722012" xlink:to="loc_us-gaap_UnbilledReceivablesCurrent_d5a9318d-5c01-49fd-9829-32b4ca3d8180" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_a1554b01-baf6-4f35-836e-9e55988fae33" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableCurrent_8f6939c8-4a84-4221-8333-af5b161d9092" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesCurrent_a1554b01-baf6-4f35-836e-9e55988fae33" xlink:to="loc_us-gaap_AccountsPayableCurrent_8f6939c8-4a84-4221-8333-af5b161d9092" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_1e40b138-c0ca-431e-ad23-a8cabd5dc745" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesCurrent_a1554b01-baf6-4f35-836e-9e55988fae33" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_1e40b138-c0ca-431e-ad23-a8cabd5dc745" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesCurrent_291a5045-6bc9-4778-8fc6-1cba9a038ca4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesCurrent_a1554b01-baf6-4f35-836e-9e55988fae33" xlink:to="loc_us-gaap_AccruedIncomeTaxesCurrent_291a5045-6bc9-4778-8fc6-1cba9a038ca4" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_c0324511-67ef-4831-8e81-eb331d592237" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractWithCustomerLiabilityCurrent"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesCurrent_a1554b01-baf6-4f35-836e-9e55988fae33" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_c0324511-67ef-4831-8e81-eb331d592237" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_cfd70ea9-aa27-4a74-acc2-fca311602a54" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LiabilitiesCurrent_a1554b01-baf6-4f35-836e-9e55988fae33" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_cfd70ea9-aa27-4a74-acc2-fca311602a54" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Assets"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_e45c5b47-9820-4ea4-92e8-591a25ea74b8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:to="loc_us-gaap_AssetsCurrent_e45c5b47-9820-4ea4-92e8-591a25ea74b8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_5931f10d-afda-4edf-b42e-5927490d1b8a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:to="loc_us-gaap_LongTermInvestments_5931f10d-afda-4edf-b42e-5927490d1b8a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_29d49021-e2fa-4b0c-b7ce-e12dac1e4c82" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_29d49021-e2fa-4b0c-b7ce-e12dac1e4c82" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxAssetsNet_b4f2dc26-d2ae-4672-82bf-c738fa833ae5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxAssetsNet"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:to="loc_us-gaap_DeferredIncomeTaxAssetsNet_b4f2dc26-d2ae-4672-82bf-c738fa833ae5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_77f8867f-15be-4f4b-8058-6871d6ac0449" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsNetExcludingGoodwill"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:to="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_77f8867f-15be-4f4b-8058-6871d6ac0449" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_b67385b2-41d4-4abd-92a1-3422fe1fd4ee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:to="loc_us-gaap_Goodwill_b67385b2-41d4-4abd-92a1-3422fe1fd4ee" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_9adaed22-71df-48bb-ad18-59083ae63c76" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:to="loc_us-gaap_OtherAssetsNoncurrent_9adaed22-71df-48bb-ad18-59083ae63c76" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset_37053f67-dbdb-4261-b2ea-36ede9d1e081" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_Assets_c2e2d38c-7a87-42e3-91d7-388e0a4e1c0d" xlink:to="loc_us-gaap_OperatingLeaseRightOfUseAsset_37053f67-dbdb-4261-b2ea-36ede9d1e081" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFCASHFLOWS"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_384db8db-20c8-4590-9926-d5a77229fc16" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_7ebb9882-e432-4ae4-b4e3-dfe2875aeeb1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_384db8db-20c8-4590-9926-d5a77229fc16" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_7ebb9882-e432-4ae4-b4e3-dfe2875aeeb1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_08a049fc-f078-4ce0-a318-19c892fa822b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_384db8db-20c8-4590-9926-d5a77229fc16" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_08a049fc-f078-4ce0-a318-19c892fa822b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_ef85fa22-aa4e-44ed-9760-cbfd0186c532" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_384db8db-20c8-4590-9926-d5a77229fc16" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_ef85fa22-aa4e-44ed-9760-cbfd0186c532" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_35f9d8f4-3b39-4a0c-933e-7345920ff5ba" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_384db8db-20c8-4590-9926-d5a77229fc16" xlink:to="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_35f9d8f4-3b39-4a0c-933e-7345920ff5ba" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_97491b3c-e5ad-4ab6-b037-8de0463c5bfa" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_97491b3c-e5ad-4ab6-b037-8de0463c5bfa" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_2d2318e5-7e69-4cde-bf5e-5d3920fd711a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GainLossOnSaleOfPropertyPlantEquipment"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_2d2318e5-7e69-4cde-bf5e-5d3920fd711a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_8b5fc775-dd32-4f1f-a0b2-dda09c89e9ae" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_NetIncomeLoss_8b5fc775-dd32-4f1f-a0b2-dda09c89e9ae" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockOptionPlanExpense_3acb2e71-af2d-49a8-8b64-5f87f49cad78" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockOptionPlanExpense"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_StockOptionPlanExpense_3acb2e71-af2d-49a8-8b64-5f87f49cad78" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation_d28c3cd0-ec51-4706-9984-3af8e136ca9d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Depreciation"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_Depreciation_d28c3cd0-ec51-4706-9984-3af8e136ca9d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AmortizationOfIntangibleAssets_c7fd9d7d-d6b5-422d-bcdc-d601613d3f6f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_AmortizationOfIntangibleAssets_c7fd9d7d-d6b5-422d-bcdc-d601613d3f6f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_c3d401a1-21c1-41ae-b6ac-2707ba0064b5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_c3d401a1-21c1-41ae-b6ac-2707ba0064b5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_6a9bc051-c1ee-427c-b982-1a7d1cfc672d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_6a9bc051-c1ee-427c-b982-1a7d1cfc672d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExcessAndObsoleteInventoryCharges_fa14fe05-e4d1-4d70-bbac-cdd25f36bf75" xlink:href="cgnx-20211231.xsd#cgnx_ExcessAndObsoleteInventoryCharges"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_cgnx_ExcessAndObsoleteInventoryCharges_fa14fe05-e4d1-4d70-bbac-cdd25f36bf75" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_3ff064b8-e4e8-4c68-9c3b-6f5e2c6b1374" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments"/>
    <link:calculationArc order="10" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_3ff064b8-e4e8-4c68-9c3b-6f5e2c6b1374" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfInvestments_ed527913-385b-47c0-858e-190b694dc164" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GainLossOnSaleOfInvestments"/>
    <link:calculationArc order="11" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_GainLossOnSaleOfInvestments_ed527913-385b-47c0-858e-190b694dc164" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_0da76c3d-ea21-41e0-b851-f86ed4d1ff1d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1"/>
    <link:calculationArc order="12" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_0da76c3d-ea21-41e0-b851-f86ed4d1ff1d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_d931973d-2a29-46f3-8ffc-e4155ea03cc6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInDeferredIncomeTaxes"/>
    <link:calculationArc order="13" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_d931973d-2a29-46f3-8ffc-e4155ea03cc6" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_d743cc6c-cfac-49f4-8080-6f6e6cfa7628" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable"/>
    <link:calculationArc order="14" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_d743cc6c-cfac-49f4-8080-6f6e6cfa7628" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_64a91650-13d0-402d-bb8b-d2eb5bbabd53" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerAsset"/>
    <link:calculationArc order="15" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_64a91650-13d0-402d-bb8b-d2eb5bbabd53" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInInventories_5cbb3e93-c878-4bfc-8000-6c209dce707b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInInventories"/>
    <link:calculationArc order="16" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInInventories_5cbb3e93-c878-4bfc-8000-6c209dce707b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsPayable_5c725358-ea68-407e-a00f-808ae879f743" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable"/>
    <link:calculationArc order="17" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsPayable_5c725358-ea68-407e-a00f-808ae879f743" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_3b295de0-2895-48ee-a506-9c5f0b2039e6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilities"/>
    <link:calculationArc order="18" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_3b295de0-2895-48ee-a506-9c5f0b2039e6" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_7633306e-eabb-4fff-b9e6-81c2539cffc8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable"/>
    <link:calculationArc order="19" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_7633306e-eabb-4fff-b9e6-81c2539cffc8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_8a1f90a6-229b-4bd9-838d-f22a1c9aecea" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerLiability"/>
    <link:calculationArc order="20" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_8a1f90a6-229b-4bd9-838d-f22a1c9aecea" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_33f4bb78-b2e1-45fc-90e3-e866ad5c65eb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet"/>
    <link:calculationArc order="21" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_69bcac7a-8715-40d0-bca3-3286f735aa25" xlink:to="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_33f4bb78-b2e1-45fc-90e3-e866ad5c65eb" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_28bf318f-8cba-4a84-9598-a03008cb4d6b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireInvestments_84128a75-82cc-41ed-a271-f10dd5496d46" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireInvestments"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_28bf318f-8cba-4a84-9598-a03008cb4d6b" xlink:to="loc_us-gaap_PaymentsToAcquireInvestments_84128a75-82cc-41ed-a271-f10dd5496d46" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_507d9fd6-f916-4183-9c5f-62f5f9e13453" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_28bf318f-8cba-4a84-9598-a03008cb4d6b" xlink:to="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_507d9fd6-f916-4183-9c5f-62f5f9e13453" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_3c2c5bce-0322-4cbd-bebd-c150bb7be03a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_28bf318f-8cba-4a84-9598-a03008cb4d6b" xlink:to="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_3c2c5bce-0322-4cbd-bebd-c150bb7be03a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_5c6b9950-1114-49cd-9161-378453725ba7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_28bf318f-8cba-4a84-9598-a03008cb4d6b" xlink:to="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_5c6b9950-1114-49cd-9161-378453725ba7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_418a0a01-8254-4f49-a8f6-74cd84576b26" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_568f74e3-47d1-46d5-94e6-abb1164c32f6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_418a0a01-8254-4f49-a8f6-74cd84576b26" xlink:to="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_568f74e3-47d1-46d5-94e6-abb1164c32f6" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRepurchaseOfCommonStock_a557d2b8-abdb-42f5-81f0-7f9d2b9255fe" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_418a0a01-8254-4f49-a8f6-74cd84576b26" xlink:to="loc_us-gaap_PaymentsForRepurchaseOfCommonStock_a557d2b8-abdb-42f5-81f0-7f9d2b9255fe" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividendsCommonStock_aa0988e4-9549-4774-b0b4-bb79beed52d2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsOfDividendsCommonStock"/>
    <link:calculationArc order="3" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_418a0a01-8254-4f49-a8f6-74cd84576b26" xlink:to="loc_us-gaap_PaymentsOfDividendsCommonStock_aa0988e4-9549-4774-b0b4-bb79beed52d2" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_eeaf7418-0b52-46c1-a828-995dbb03b5a4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_418a0a01-8254-4f49-a8f6-74cd84576b26" xlink:to="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_eeaf7418-0b52-46c1-a828-995dbb03b5a4" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_b8c2a53e-0382-45bd-a273-0590d3342376" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_4284b9e1-7ed7-4a57-9e5e-6729e4110b4a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Cash"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_b8c2a53e-0382-45bd-a273-0590d3342376" xlink:to="loc_us-gaap_Cash_4284b9e1-7ed7-4a57-9e5e-6729e4110b4a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsAtCarryingValue_6b59a141-43e9-4973-b995-f77bbe5bdefe" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_b8c2a53e-0382-45bd-a273-0590d3342376" xlink:to="loc_us-gaap_MoneyMarketFundsAtCarryingValue_6b59a141-43e9-4973-b995-f77bbe5bdefe" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_7c7ccdc9-5f00-4b33-9522-eb86445b4eb2" xlink:href="cgnx-20211231.xsd#cgnx_CashCashEquivalentsShortTermAndLongTermInvestments"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_b4ba9c17-1a06-4591-8193-923f5e510b5c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_7c7ccdc9-5f00-4b33-9522-eb86445b4eb2" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_b4ba9c17-1a06-4591-8193-923f5e510b5c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_5e94ea41-e5fc-4a79-9243-289d7de155a7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_7c7ccdc9-5f00-4b33-9522-eb86445b4eb2" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_5e94ea41-e5fc-4a79-9243-289d7de155a7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_e15c23fc-a571-4ac0-b4f0-413e664869d2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_7c7ccdc9-5f00-4b33-9522-eb86445b4eb2" xlink:to="loc_us-gaap_LongTermInvestments_e15c23fc-a571-4ac0-b4f0-413e664869d2" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_66ce4269-96cf-493b-b9df-dae6b295b8a3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_bc67725d-b1e4-497d-86d0-4e78bf76442f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LongTermInvestments_66ce4269-96cf-493b-b9df-dae6b295b8a3" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_bc67725d-b1e4-497d-86d0-4e78bf76442f" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_464995c8-c1be-4c92-8681-7ada9402fc7b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_e22ebdc2-7bcc-4081-9a2f-ea671149b713" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_464995c8-c1be-4c92-8681-7ada9402fc7b" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_e22ebdc2-7bcc-4081-9a2f-ea671149b713" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_0858e604-25dc-4620-b4bd-14d9c63a1381" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_464995c8-c1be-4c92-8681-7ada9402fc7b" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_0858e604-25dc-4620-b4bd-14d9c63a1381" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_705e8a0f-d69c-469e-a575-102928bc6837" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_464995c8-c1be-4c92-8681-7ada9402fc7b" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_705e8a0f-d69c-469e-a575-102928bc6837" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_f9b792a9-fad0-441f-9b2e-76d829b75ea4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss_50be013f-e1ed-464b-ad78-67d37bc5e49e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_f9b792a9-fad0-441f-9b2e-76d829b75ea4" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss_50be013f-e1ed-464b-ad78-67d37bc5e49e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss_152f7f19-da99-44ee-9af0-72e124e0cc2e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_f9b792a9-fad0-441f-9b2e-76d829b75ea4" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss_152f7f19-da99-44ee-9af0-72e124e0cc2e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_1df31821-c5ab-4253-a388-c79e02324147" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger_327e7254-17d0-4c4d-ac6d-8b0336fa75eb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_1df31821-c5ab-4253-a388-c79e02324147" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger_327e7254-17d0-4c4d-ac6d-8b0336fa75eb" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months_8aa984e8-5e72-47c4-85a4-4daef9bca86f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_1df31821-c5ab-4253-a388-c79e02324147" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months_8aa984e8-5e72-47c4-85a4-4daef9bca86f" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_f43fd93a-7ddf-411a-a6fd-22ec59643cdb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_4ab556f6-df2b-47dc-a364-188cfa6b4686" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_f43fd93a-7ddf-411a-a6fd-22ec59643cdb" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_4ab556f6-df2b-47dc-a364-188cfa6b4686" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_5395eea0-b21b-4949-80cf-bdf6487a924d" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_f43fd93a-7ddf-411a-a6fd-22ec59643cdb" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_5395eea0-b21b-4949-80cf-bdf6487a924d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_5c78e303-efbb-486c-9e91-5a87b589587b" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_f43fd93a-7ddf-411a-a6fd-22ec59643cdb" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_5c78e303-efbb-486c-9e91-5a87b589587b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_5fc88ad7-7011-43ce-9407-124024bc2c06" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_f43fd93a-7ddf-411a-a6fd-22ec59643cdb" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_5fc88ad7-7011-43ce-9407-124024bc2c06" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_5ca2ade8-9c26-4bf8-86b2-f3fb97317933" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_f43fd93a-7ddf-411a-a6fd-22ec59643cdb" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_5ca2ade8-9c26-4bf8-86b2-f3fb97317933" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/InventoriesInventoriesDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#InventoriesInventoriesDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/InventoriesInventoriesDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_ad903542-ee9a-4665-9ff0-44846bfe2a83" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryRawMaterialsNetOfReserves_7874e7c6-2e3f-482a-962e-1561f651b2f4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryRawMaterialsNetOfReserves"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_InventoryNet_ad903542-ee9a-4665-9ff0-44846bfe2a83" xlink:to="loc_us-gaap_InventoryRawMaterialsNetOfReserves_7874e7c6-2e3f-482a-962e-1561f651b2f4" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryWorkInProcessNetOfReserves_a0217bb9-f17b-4da7-b4a7-3a44c67eb5d4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryWorkInProcessNetOfReserves"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_InventoryNet_ad903542-ee9a-4665-9ff0-44846bfe2a83" xlink:to="loc_us-gaap_InventoryWorkInProcessNetOfReserves_a0217bb9-f17b-4da7-b4a7-3a44c67eb5d4" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_0f518cdb-77ed-4072-aff7-742d590d4097" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_InventoryNet_ad903542-ee9a-4665-9ff0-44846bfe2a83" xlink:to="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_0f518cdb-77ed-4072-aff7-742d590d4097" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_6d2546bc-b1ea-4f36-b9ce-49444e97aed5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_e137a658-9b7b-44b7-9e36-70852d8620f8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentNet_6d2546bc-b1ea-4f36-b9ce-49444e97aed5" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_e137a658-9b7b-44b7-9e36-70852d8620f8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_aa50633a-f3bf-4677-afb8-744af8fc0482" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentNet_6d2546bc-b1ea-4f36-b9ce-49444e97aed5" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_aa50633a-f3bf-4677-afb8-744af8fc0482" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/LeasesScheduleofPaymentsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#LeasesScheduleofPaymentsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/LeasesScheduleofPaymentsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_9eb39d62-9a99-43e4-9601-c51704eb7761" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_66f15b99-f383-4328-98f4-d77cdce449ed" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_9eb39d62-9a99-43e4-9601-c51704eb7761" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_66f15b99-f383-4328-98f4-d77cdce449ed" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_9b7e4667-97d7-48c7-ae1b-6b1164ec6c49" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_9eb39d62-9a99-43e4-9601-c51704eb7761" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_9b7e4667-97d7-48c7-ae1b-6b1164ec6c49" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_a71ac393-0604-4407-bd16-d8f4c43e6bcf" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_9eb39d62-9a99-43e4-9601-c51704eb7761" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_a71ac393-0604-4407-bd16-d8f4c43e6bcf" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_24215e09-465d-4833-a82b-46cbfb39bc7a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_9eb39d62-9a99-43e4-9601-c51704eb7761" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_24215e09-465d-4833-a82b-46cbfb39bc7a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_017f4b0c-287a-4139-9294-352f1da477e1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_9eb39d62-9a99-43e4-9601-c51704eb7761" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_017f4b0c-287a-4139-9294-352f1da477e1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_178f202d-e385-4e83-aa66-e63c71dc8c9f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_9eb39d62-9a99-43e4-9601-c51704eb7761" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_178f202d-e385-4e83-aa66-e63c71dc8c9f" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssetsAmortizedIntangibleAssetsDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet_a004e1d8-1ada-4de4-b025-9539ef0e61f3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsGross_68c3b591-bda2-4e94-b9dc-79da36a25066" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet_a004e1d8-1ada-4de4-b025-9539ef0e61f3" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsGross_68c3b591-bda2-4e94-b9dc-79da36a25066" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_91f107fc-b566-4fec-9e90-d3956c72cb82" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet_a004e1d8-1ada-4de4-b025-9539ef0e61f3" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_91f107fc-b566-4fec-9e90-d3956c72cb82" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2da5bd58-cfe1-49e7-a3bf-3e9464424eff" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_ef523ee8-bed1-4988-8b98-8322fbc23d73" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2da5bd58-cfe1-49e7-a3bf-3e9464424eff" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_ef523ee8-bed1-4988-8b98-8322fbc23d73" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_6c0e33bb-13fd-4167-a039-3d060b4ced0d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2da5bd58-cfe1-49e7-a3bf-3e9464424eff" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_6c0e33bb-13fd-4167-a039-3d060b4ced0d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_022996b3-bd19-4c42-90bb-35d0010b7a7b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2da5bd58-cfe1-49e7-a3bf-3e9464424eff" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_022996b3-bd19-4c42-90bb-35d0010b7a7b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_86d43253-10c9-43ad-b764-a96bb504bfb5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2da5bd58-cfe1-49e7-a3bf-3e9464424eff" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_86d43253-10c9-43ad-b764-a96bb504bfb5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_e3c0f426-525f-4ede-a207-8a5c3d7d885c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2da5bd58-cfe1-49e7-a3bf-3e9464424eff" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_e3c0f426-525f-4ede-a207-8a5c3d7d885c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_002db9a0-02ea-4f72-880c-c756a026c504" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2da5bd58-cfe1-49e7-a3bf-3e9464424eff" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_002db9a0-02ea-4f72-880c-c756a026c504" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#AccruedExpensesConstituentsofAccruedExpensesDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_f1a933fb-9333-4004-b712-6a1e459b8997" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedSalariesCurrent_5d431793-b7cb-480a-9d1a-54f61b6806d4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedSalariesCurrent"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_f1a933fb-9333-4004-b712-6a1e459b8997" xlink:to="loc_us-gaap_AccruedSalariesCurrent_5d431793-b7cb-480a-9d1a-54f61b6806d4" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RetirementAllowance_385ed54f-adf5-44f5-ae8e-428551b051c1" xlink:href="cgnx-20211231.xsd#cgnx_RetirementAllowance"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_f1a933fb-9333-4004-b712-6a1e459b8997" xlink:to="loc_cgnx_RetirementAllowance_385ed54f-adf5-44f5-ae8e-428551b051c1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_b0e74ab8-a08b-45a6-8a99-d764b66b5ab5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrualClassifiedCurrent"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_f1a933fb-9333-4004-b712-6a1e459b8997" xlink:to="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_b0e74ab8-a08b-45a6-8a99-d764b66b5ab5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedVacationCurrent_0aa28045-a47a-418c-b7bc-3349df1f3524" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedVacationCurrent"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_f1a933fb-9333-4004-b712-6a1e459b8997" xlink:to="loc_us-gaap_AccruedVacationCurrent_0aa28045-a47a-418c-b7bc-3349df1f3524" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedBonusesCurrent_deb27eb4-5703-4fbb-b5ca-cd325633d341" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedBonusesCurrent"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_f1a933fb-9333-4004-b712-6a1e459b8997" xlink:to="loc_us-gaap_AccruedBonusesCurrent_deb27eb4-5703-4fbb-b5ca-cd325633d341" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAccruedLiabilitiesCurrent_711d2bd9-eb28-49a0-98d8-17e394ef3040" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAccruedLiabilitiesCurrent"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent_f1a933fb-9333-4004-b712-6a1e459b8997" xlink:to="loc_us-gaap_OtherAccruedLiabilitiesCurrent_711d2bd9-eb28-49a0-98d8-17e394ef3040" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities_a0fd9b5a-c926-465d-ad75-70f663390b43" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLiabilities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeLiability_704f6abd-53ee-4c03-8f6c-aa24a004501e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeFairValueOfDerivativeLiability"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DerivativeLiabilities_a0fd9b5a-c926-465d-ad75-70f663390b43" xlink:to="loc_us-gaap_DerivativeFairValueOfDerivativeLiability_704f6abd-53ee-4c03-8f6c-aa24a004501e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_4161f8f2-b47d-4b2b-829b-caeda5e4e84f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DerivativeLiabilities_a0fd9b5a-c926-465d-ad75-70f663390b43" xlink:to="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_4161f8f2-b47d-4b2b-829b-caeda5e4e84f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets_99b76d7b-1c1c-4853-99a5-d42c22f4cad3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssets"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeAsset_7651457c-2f0e-4ee7-b501-7ff4f8ebe6cd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeFairValueOfDerivativeAsset"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DerivativeAssets_99b76d7b-1c1c-4853-99a5-d42c22f4cad3" xlink:to="loc_us-gaap_DerivativeFairValueOfDerivativeAsset_7651457c-2f0e-4ee7-b501-7ff4f8ebe6cd" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_45a4418b-b3d3-4381-99fb-a1bc88d41c5f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DerivativeAssets_99b76d7b-1c1c-4853-99a5-d42c22f4cad3" xlink:to="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_45a4418b-b3d3-4381-99fb-a1bc88d41c5f" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#EmployeeSavingsPlanAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_fc807a6c-d884-4acf-a485-7b79c830ade3" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfFourYears"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfOneYear_dde8ea03-eba1-4567-9f67-948282198496" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfOneYear"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_fc807a6c-d884-4acf-a485-7b79c830ade3" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfOneYear_dde8ea03-eba1-4567-9f67-948282198496" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear_7c731bec-eb9f-4364-9e9c-0c661c2e0c7f" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfTwoYear"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_fc807a6c-d884-4acf-a485-7b79c830ade3" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear_7c731bec-eb9f-4364-9e9c-0c661c2e0c7f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears_bfc0f0ee-a755-44e5-8126-c517d3cab43f" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfThreeYears"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_fc807a6c-d884-4acf-a485-7b79c830ade3" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears_bfc0f0ee-a755-44e5-8126-c517d3cab43f" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_d084d76e-24c9-46e8-b2da-e9baccb8b91b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentFederalTaxExpenseBenefit_6f59653c-c8df-44cf-bc1e-d8cae444bdb0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_d084d76e-24c9-46e8-b2da-e9baccb8b91b" xlink:to="loc_us-gaap_CurrentFederalTaxExpenseBenefit_6f59653c-c8df-44cf-bc1e-d8cae444bdb0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_7b05401f-1738-402c-9a1e-9c4240e4c73b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_d084d76e-24c9-46e8-b2da-e9baccb8b91b" xlink:to="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_7b05401f-1738-402c-9a1e-9c4240e4c73b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentForeignTaxExpenseBenefit_0195692c-5569-4fc9-9754-0dc1929d4010" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_d084d76e-24c9-46e8-b2da-e9baccb8b91b" xlink:to="loc_us-gaap_CurrentForeignTaxExpenseBenefit_0195692c-5569-4fc9-9754-0dc1929d4010" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_7d3f6b7b-b44e-499b-9bd1-c60f2d31101a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_81137d39-880c-4775-8789-cccaa84d409e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_7d3f6b7b-b44e-499b-9bd1-c60f2d31101a" xlink:to="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_81137d39-880c-4775-8789-cccaa84d409e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_9fcb47b4-0aca-4075-843a-f73469ee5ebb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_7d3f6b7b-b44e-499b-9bd1-c60f2d31101a" xlink:to="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_9fcb47b4-0aca-4075-843a-f73469ee5ebb" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_b97cc7d4-1f9b-4698-a7e6-c3fa872626b3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_7d3f6b7b-b44e-499b-9bd1-c60f2d31101a" xlink:to="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_b97cc7d4-1f9b-4698-a7e6-c3fa872626b3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_4e11ea41-8f3e-4d2f-8c38-a007799d873d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_43fc80c7-ed93-4ecf-8100-1fe041d90ff3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeTaxExpenseBenefit_4e11ea41-8f3e-4d2f-8c38-a007799d873d" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_43fc80c7-ed93-4ecf-8100-1fe041d90ff3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_bd3d1b5d-dcd9-4a9f-8673-88d5bb1b2f7b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_IncomeTaxExpenseBenefit_4e11ea41-8f3e-4d2f-8c38-a007799d873d" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_bd3d1b5d-dcd9-4a9f-8673-88d5bb1b2f7b" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_68eea53a-f9f5-4daf-9530-0b1fda65259e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_68eea53a-f9f5-4daf-9530-0b1fda65259e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_62982980-cfd9-45b4-932d-4510dbbc4e8c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_62982980-cfd9-45b4-932d-4510dbbc4e8c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_5e107471-73b8-424b-b28e-c50371c7fa7f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_5e107471-73b8-424b-b28e-c50371c7fa7f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_3ccd583d-2fd6-4b2b-b0ba-d6cf4c3336f9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits"/>
    <link:calculationArc order="4" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_3ccd583d-2fd6-4b2b-b0ba-d6cf4c3336f9" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_01add7df-aa05-4ffa-a27f-c4adf18b3694" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent"/>
    <link:calculationArc order="5" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_01add7df-aa05-4ffa-a27f-c4adf18b3694" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_b35a2cd3-48f6-432a-a407-55c1fc67c12e" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_b35a2cd3-48f6-432a-a407-55c1fc67c12e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_ef1cc1e5-89ae-492b-b69b-06d37304b530" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_ef1cc1e5-89ae-492b-b69b-06d37304b530" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_9c334e27-73ce-46cc-b6ae-3bf627b0f36f" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_9c334e27-73ce-46cc-b6ae-3bf627b0f36f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_db7c5684-87cf-4039-a84c-3e5b0198587b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_db7c5684-87cf-4039-a84c-3e5b0198587b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_b0458e3c-15c4-420f-b0bd-347e60618242" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_b0458e3c-15c4-420f-b0bd-347e60618242" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_ff522dfc-eebd-44a6-9312-88150e3d008e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements"/>
    <link:calculationArc order="11" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_ff522dfc-eebd-44a6-9312-88150e3d008e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_6a612bc2-df08-48e5-85d2-2aea591c2abe" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign"/>
    <link:calculationArc order="12" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_b0ac5754-f600-4fde-b628-8ec7fb6b330c" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_6a612bc2-df08-48e5-85d2-2aea591c2abe" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesConstituentsofDeferredTaxAssetsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_0ee2201a-edf9-493c-b666-af9dc5f15909" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsLiabilitiesNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_af07f9c8-454d-47c9-bcb5-6addadc9f95f" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_0ee2201a-edf9-493c-b666-af9dc5f15909" xlink:to="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_af07f9c8-454d-47c9-bcb5-6addadc9f95f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_2a5332ea-08d0-49a5-a85e-d8b98016c152" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:calculationArc order="2" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_0ee2201a-edf9-493c-b666-af9dc5f15909" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_2a5332ea-08d0-49a5-a85e-d8b98016c152" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_14f8340d-385f-4781-80bd-edf9f786461f" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:to="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_14f8340d-385f-4781-80bd-edf9f786461f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_635d97d8-2bc1-4ddb-9af6-011dcdea103a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_635d97d8-2bc1-4ddb-9af6-011dcdea103a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_52a3545c-634f-43c6-8c90-d99962ef0d48" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_52a3545c-634f-43c6-8c90-d99962ef0d48" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_5ed3bd75-5dfd-42b6-9ad7-01a788b6b145" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_5ed3bd75-5dfd-42b6-9ad7-01a788b6b145" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation_7a4a948d-ba43-4666-b373-eda36d38c8ab" xlink:href="cgnx-20211231.xsd#cgnx_NoncurrentDeferredTaxAssetsDeprecation"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:to="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation_7a4a948d-ba43-4666-b373-eda36d38c8ab" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsInventory_0dbdc907-dc55-4c1b-8710-7457b5626ae0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsInventory"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:to="loc_us-gaap_DeferredTaxAssetsInventory_0dbdc907-dc55-4c1b-8710-7457b5626ae0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_7013b878-01e7-4dc6-ae12-d01b5ecef778" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_7013b878-01e7-4dc6-ae12-d01b5ecef778" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsOtherNoncurrent_f11ac176-ddbd-4016-93fe-845321555f8f" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsOtherNoncurrent"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a8ab8a99-9d20-4e84-90e9-d760a1601515" xlink:to="loc_cgnx_DeferredTaxAssetsOtherNoncurrent_f11ac176-ddbd-4016-93fe-845321555f8f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet_ad30bd8d-6147-496e-a0ec-1bfb3ef3afab" xlink:href="cgnx-20211231.xsd#cgnx_DeferredIncomeTaxAssetsLiabilitiesNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_2fb1f877-9646-430c-bd82-0bbd5d31ae4a" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet_ad30bd8d-6147-496e-a0ec-1bfb3ef3afab" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_2fb1f877-9646-430c-bd82-0bbd5d31ae4a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_6716a018-db33-45f2-8c87-19c54e535064" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsLiabilitiesNet"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet_ad30bd8d-6147-496e-a0ec-1bfb3ef3afab" xlink:to="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_6716a018-db33-45f2-8c87-19c54e535064" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#WeightedAverageSharesCalculationofWeightedAverageSharesDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_c39eebe7-d030-45be-846e-a7ec637dc378" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_850ec61f-1649-4a49-9617-fb542cb7ecac" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_c39eebe7-d030-45be-846e-a7ec637dc378" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_850ec61f-1649-4a49-9617-fb542cb7ecac" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_6bca5040-fc97-43b7-bbcf-3e71da469489" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_c39eebe7-d030-45be-846e-a7ec637dc378" xlink:to="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_6bca5040-fc97-43b7-bbcf-3e71da469489" xlink:type="arc"/>
  </link:calculationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>11
<FILENAME>cgnx-20211231_def.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION DEFINITION LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2022 Workiva-->
<!--r:4878a129-9b80-4a38-a303-2b34e8ac6131,g:f27b0d4b-0a26-4a3f-9754-6435629f6abe-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/all" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#all"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#hypercube-dimension"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-default"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#dimension-domain"/>
  <link:arcroleRef arcroleURI="http://xbrl.org/int/dim/arcrole/domain-member" xlink:type="simple" xlink:href="http://www.xbrl.org/2005/xbrldt-2005.xsd#domain-member"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" xlink:type="extended" id="icad3990c75824ef1a2fd000496d5ffbf_CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementLineItems_e1d5965c-b3ff-4949-9386-756d7b797cd5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_StatementLineItems_e1d5965c-b3ff-4949-9386-756d7b797cd5" xlink:to="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_647f290c-8112-4583-b0f7-833b09847e53" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockholdersEquity_647f290c-8112-4583-b0f7-833b09847e53" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_ce828d64-c2bf-4811-83e3-dfc651afd49f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_CommonStockSharesIssued_ce828d64-c2bf-4811-83e3-dfc651afd49f" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_2d58bc51-5f3b-4e1e-b6f7-d3c5e9267b44" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_2d58bc51-5f3b-4e1e-b6f7-d3c5e9267b44" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_2c4296cb-96fd-41df-9d30-845d94a2ef0a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_2c4296cb-96fd-41df-9d30-845d94a2ef0a" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue_087be51f-777b-43aa-a638-90de5135e5bd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodValue_087be51f-777b-43aa-a638-90de5135e5bd" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares_fd88e8af-b40e-4a28-ab46-8b96b0020db8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodShares"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodShares_fd88e8af-b40e-4a28-ab46-8b96b0020db8" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_830cf2a0-c6b0-40c2-b6fc-4ef2f8ac429f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_830cf2a0-c6b0-40c2-b6fc-4ef2f8ac429f" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsCommonStockCash_190db675-3800-417c-888c-c81bf47f0b7c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsCommonStockCash"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_DividendsCommonStockCash_190db675-3800-417c-888c-c81bf47f0b7c" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_7330dce2-e2e2-4238-9d93-8df605e676ad" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_NetIncomeLoss_7330dce2-e2e2-4238-9d93-8df605e676ad" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_1871b640-ae18-4169-81b1-22ce87d70308" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_1871b640-ae18-4169-81b1-22ce87d70308" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_46620ea6-d3ec-4314-83dd-e6fab24abd78" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_46620ea6-d3ec-4314-83dd-e6fab24abd78" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_4db987d6-8d82-4103-ab21-5a200144dee8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_4db987d6-8d82-4103-ab21-5a200144dee8" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_b8a3fd55-2e58-49e2-a8f5-74c14e412305" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_b8a3fd55-2e58-49e2-a8f5-74c14e412305" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_6c99ee62-cb2e-482e-8db7-ee568d284f80" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_1d7a4dc4-1e3f-46b9-aedb-f4010af7b755" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementTable_ee20f001-dd9a-4fb5-976b-eaff0d658a84" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_StatementLineItems_e1d5965c-b3ff-4949-9386-756d7b797cd5" xlink:to="loc_us-gaap_StatementTable_ee20f001-dd9a-4fb5-976b-eaff0d658a84" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_c4ea665b-3de3-4d1e-8335-e5346294685f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_StatementTable_ee20f001-dd9a-4fb5-976b-eaff0d658a84" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_c4ea665b-3de3-4d1e-8335-e5346294685f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_c4ea665b-3de3-4d1e-8335-e5346294685f_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_c4ea665b-3de3-4d1e-8335-e5346294685f" xlink:to="loc_us-gaap_EquityComponentDomain_c4ea665b-3de3-4d1e-8335-e5346294685f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_c4ea665b-3de3-4d1e-8335-e5346294685f" xlink:to="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_803d1183-1ace-4423-8578-92eb4a656c1f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:to="loc_us-gaap_CommonStockMember_803d1183-1ace-4423-8578-92eb4a656c1f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalMember_5282d070-b0d9-4e19-aaeb-7189e62482df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:to="loc_us-gaap_AdditionalPaidInCapitalMember_5282d070-b0d9-4e19-aaeb-7189e62482df" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsMember_f9df86fa-40ab-4578-b0a5-9fdbbc57abf5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:to="loc_us-gaap_RetainedEarningsMember_f9df86fa-40ab-4578-b0a5-9fdbbc57abf5" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_5442d186-4ff7-4870-8229-40ba7ca5923e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_5442d186-4ff7-4870-8229-40ba7ca5923e" xlink:type="arc" order="3"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="extended" id="i89c5dd8a97c94a03882f3460807f0863_SummaryofSignificantAccountingPoliciesAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_060c5dd0-81e4-4166-9d8d-d1e8cb90ccb6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_d99ef81d-9048-48ea-a5e0-d5c74b6adc01" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_060c5dd0-81e4-4166-9d8d-d1e8cb90ccb6" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_d99ef81d-9048-48ea-a5e0-d5c74b6adc01" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_060c5dd0-81e4-4166-9d8d-d1e8cb90ccb6" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_1bfb63f5-ec6b-4313-9912-eae669e133bb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_1bfb63f5-ec6b-4313-9912-eae669e133bb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_1bfb63f5-ec6b-4313-9912-eae669e133bb_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_1bfb63f5-ec6b-4313-9912-eae669e133bb" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_1bfb63f5-ec6b-4313-9912-eae669e133bb_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_1bfb63f5-ec6b-4313-9912-eae669e133bb" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember_95d61f03-f800-4540-b4ec-0bce5b948fc0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_us-gaap_BuildingMember_95d61f03-f800-4540-b4ec-0bce5b948fc0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember_ff689e48-94a4-4e15-a44e-f3eb5c29e517" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingImprovementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_us-gaap_BuildingImprovementsMember_ff689e48-94a4-4e15-a44e-f3eb5c29e517" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ComputerHardwareAndSoftwareMember_674ed89a-29a3-463c-b129-9824fb664a8a" xlink:href="cgnx-20211231.xsd#cgnx_ComputerHardwareAndSoftwareMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_cgnx_ComputerHardwareAndSoftwareMember_674ed89a-29a3-463c-b129-9824fb664a8a" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_6f9ecc33-aba7-468a-a922-4299cf09120e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquipmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_us-gaap_EquipmentMember_6f9ecc33-aba7-468a-a922-4299cf09120e" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_dca96994-d862-4529-826b-2089f4a10cbb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_dca96994-d862-4529-826b-2089f4a10cbb" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_cd88d810-c26d-4f5a-9814-b67a347c6b71" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:to="loc_srt_RangeAxis_cd88d810-c26d-4f5a-9814-b67a347c6b71" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_cd88d810-c26d-4f5a-9814-b67a347c6b71_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_cd88d810-c26d-4f5a-9814-b67a347c6b71" xlink:to="loc_srt_RangeMember_cd88d810-c26d-4f5a-9814-b67a347c6b71_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_ac8ef4d9-40b7-43d6-a001-c6fdeb1a1d54" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_cd88d810-c26d-4f5a-9814-b67a347c6b71" xlink:to="loc_srt_RangeMember_ac8ef4d9-40b7-43d6-a001-c6fdeb1a1d54" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_41b97e04-c3d3-4c1a-9980-7338c30bdc96" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_ac8ef4d9-40b7-43d6-a001-c6fdeb1a1d54" xlink:to="loc_srt_MinimumMember_41b97e04-c3d3-4c1a-9980-7338c30bdc96" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_5db18d5b-6bef-4783-89fc-067f5492fb24" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_ac8ef4d9-40b7-43d6-a001-c6fdeb1a1d54" xlink:to="loc_srt_MaximumMember_5db18d5b-6bef-4783-89fc-067f5492fb24" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" xlink:type="extended" id="i3ad8d97e97934618aa032ae158a88a7b_SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_317dc0ea-930b-4c15-bb28-b34436b312a8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife_29039ac2-020a-45b1-96e9-799275f4b969" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_317dc0ea-930b-4c15-bb28-b34436b312a8" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife_29039ac2-020a-45b1-96e9-799275f4b969" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_317dc0ea-930b-4c15-bb28-b34436b312a8" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_6ef6fa74-90e6-4695-a704-db302514a6af" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_6ef6fa74-90e6-4695-a704-db302514a6af" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6ef6fa74-90e6-4695-a704-db302514a6af_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_6ef6fa74-90e6-4695-a704-db302514a6af" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6ef6fa74-90e6-4695-a704-db302514a6af_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_6ef6fa74-90e6-4695-a704-db302514a6af" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember_a9227897-2179-4e46-af9c-a88d2fc1fb8e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DistributionRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_us-gaap_DistributionRightsMember_a9227897-2179-4e46-af9c-a88d2fc1fb8e" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_d942e122-9a88-4e61-9e14-347486607fe2" xlink:href="cgnx-20211231.xsd#cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_d942e122-9a88-4e61-9e14-347486607fe2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_3fa82a14-e4ac-4c92-8b97-12a03d30741e" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_3fa82a14-e4ac-4c92-8b97-12a03d30741e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_c1875583-39f1-429a-85ad-8647962df940" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_c1875583-39f1-429a-85ad-8647962df940" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_72b3cd88-71b0-4d9f-bb93-cb52bc0e63e7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_us-gaap_TrademarksMember_72b3cd88-71b0-4d9f-bb93-cb52bc0e63e7" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_6a6eef4a-a662-430e-beb7-6c234799f1a3" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:to="loc_srt_RangeAxis_6a6eef4a-a662-430e-beb7-6c234799f1a3" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_6a6eef4a-a662-430e-beb7-6c234799f1a3_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_6a6eef4a-a662-430e-beb7-6c234799f1a3" xlink:to="loc_srt_RangeMember_6a6eef4a-a662-430e-beb7-6c234799f1a3_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_9adb0f9c-49fa-4dc9-8752-f0a1ce16b4f5" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_6a6eef4a-a662-430e-beb7-6c234799f1a3" xlink:to="loc_srt_RangeMember_9adb0f9c-49fa-4dc9-8752-f0a1ce16b4f5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_10e58332-b93a-4c23-93f2-edbb88a255aa" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_9adb0f9c-49fa-4dc9-8752-f0a1ce16b4f5" xlink:to="loc_srt_MinimumMember_10e58332-b93a-4c23-93f2-edbb88a255aa" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_13804078-3b30-4ed8-9990-8e54f204f8c6" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_9adb0f9c-49fa-4dc9-8752-f0a1ce16b4f5" xlink:to="loc_srt_MaximumMember_13804078-3b30-4ed8-9990-8e54f204f8c6" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesWarrantyDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails" xlink:type="extended" id="i44753bb76712435f9f686c11aa19c2b4_SummaryofSignificantAccountingPoliciesWarrantyDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyLineItems_131eada3-ebcd-4ce4-a322-11ad383deec3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductLiabilityContingencyLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductWarrantyPeriod_231b27e9-ca8a-4c19-938f-53d9bcfa7933" xlink:href="cgnx-20211231.xsd#cgnx_ProductWarrantyPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ProductLiabilityContingencyLineItems_131eada3-ebcd-4ce4-a322-11ad383deec3" xlink:to="loc_cgnx_ProductWarrantyPeriod_231b27e9-ca8a-4c19-938f-53d9bcfa7933" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyTable_83ad5a63-644c-47f7-a9dc-a3a7912ddf7c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductLiabilityContingencyTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ProductLiabilityContingencyLineItems_131eada3-ebcd-4ce4-a322-11ad383deec3" xlink:to="loc_us-gaap_ProductLiabilityContingencyTable_83ad5a63-644c-47f7-a9dc-a3a7912ddf7c" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ProductLiabilityContingencyTable_83ad5a63-644c-47f7-a9dc-a3a7912ddf7c" xlink:to="loc_srt_RangeAxis_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec" xlink:to="loc_srt_RangeMember_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_08450f00-09e2-4b43-92ce-ebde2fd292c1" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec" xlink:to="loc_srt_RangeMember_08450f00-09e2-4b43-92ce-ebde2fd292c1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_44e8b73c-8711-4a44-a83d-ba2e5922327e" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_08450f00-09e2-4b43-92ce-ebde2fd292c1" xlink:to="loc_srt_MinimumMember_44e8b73c-8711-4a44-a83d-ba2e5922327e" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_a0cd1580-785a-48f3-872d-cb0565d23370" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_08450f00-09e2-4b43-92ce-ebde2fd292c1" xlink:to="loc_srt_MaximumMember_a0cd1580-785a-48f3-872d-cb0565d23370" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" xlink:type="extended" id="i188d64a9cce849b7acd360e2793b24ee_SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems_a7d23943-381b-4c4d-b2e9-4889f4c6973c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RevenuePaymentTerms_004867d3-4ca7-4c4f-bad0-27b784ebbeb1" xlink:href="cgnx-20211231.xsd#cgnx_RevenuePaymentTerms"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_a7d23943-381b-4c4d-b2e9-4889f4c6973c" xlink:to="loc_cgnx_RevenuePaymentTerms_004867d3-4ca7-4c4f-bad0-27b784ebbeb1" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable_377232c0-2044-4e3c-a630-7c626ed0fe29" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_a7d23943-381b-4c4d-b2e9-4889f4c6973c" xlink:to="loc_us-gaap_DisaggregationOfRevenueTable_377232c0-2044-4e3c-a630-7c626ed0fe29" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_fa016074-8ce6-44c3-a9a8-445272c28a44" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_377232c0-2044-4e3c-a630-7c626ed0fe29" xlink:to="loc_srt_RangeAxis_fa016074-8ce6-44c3-a9a8-445272c28a44" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_fa016074-8ce6-44c3-a9a8-445272c28a44_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_fa016074-8ce6-44c3-a9a8-445272c28a44" xlink:to="loc_srt_RangeMember_fa016074-8ce6-44c3-a9a8-445272c28a44_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_a25f11ed-a079-414c-bacf-59197c8e883d" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_fa016074-8ce6-44c3-a9a8-445272c28a44" xlink:to="loc_srt_RangeMember_a25f11ed-a079-414c-bacf-59197c8e883d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_c5c8ff89-dc3c-40e9-8f8f-f16486a6e507" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_a25f11ed-a079-414c-bacf-59197c8e883d" xlink:to="loc_srt_MinimumMember_c5c8ff89-dc3c-40e9-8f8f-f16486a6e507" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_3c1fe999-3337-4abe-af5d-fbe0aa6e8fc6" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_a25f11ed-a079-414c-bacf-59197c8e883d" xlink:to="loc_srt_MaximumMember_3c1fe999-3337-4abe-af5d-fbe0aa6e8fc6" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" xlink:type="extended" id="i20e7732a48744c77bd0da1f8086aa881_SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_ff312e7b-0883-43d2-b2b1-19e27c6b16a3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_ff312e7b-0883-43d2-b2b1-19e27c6b16a3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_01ec895f-982e-43ad-8635-f4a2553d7648" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_01ec895f-982e-43ad-8635-f4a2553d7648" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_b12c08dd-608e-4459-9a56-faa76ae9fb48" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_b12c08dd-608e-4459-9a56-faa76ae9fb48" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_721d65b6-61e3-4b5f-8e6d-8c187bf02790" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_721d65b6-61e3-4b5f-8e6d-8c187bf02790" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_df41d44b-4b03-435d-9f86-470f6ff4da7b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_df41d44b-4b03-435d-9f86-470f6ff4da7b" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_09fbf023-372a-4586-970d-6ad77aaaf2c5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_df41d44b-4b03-435d-9f86-470f6ff4da7b" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_09fbf023-372a-4586-970d-6ad77aaaf2c5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_09fbf023-372a-4586-970d-6ad77aaaf2c5_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_09fbf023-372a-4586-970d-6ad77aaaf2c5" xlink:to="loc_us-gaap_EquityComponentDomain_09fbf023-372a-4586-970d-6ad77aaaf2c5_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_e012498b-a926-4ba6-897a-dc0eb6b3de4f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_09fbf023-372a-4586-970d-6ad77aaaf2c5" xlink:to="loc_us-gaap_EquityComponentDomain_e012498b-a926-4ba6-897a-dc0eb6b3de4f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_89b234b7-6ee3-4aeb-8fc8-2c24ee7b14e6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_e012498b-a926-4ba6-897a-dc0eb6b3de4f" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_89b234b7-6ee3-4aeb-8fc8-2c24ee7b14e6" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" xlink:type="extended" id="i9b8d6bef70c04a8ea6f9c7570ee64e70_FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_916aa2f1-12b2-48ee-bbfe-80eaa90da797" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsFairValueDisclosureAbstract"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_916aa2f1-12b2-48ee-bbfe-80eaa90da797" xlink:to="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure_c19cfa5e-5860-4de4-9f70-24b602c3ae7a" xlink:href="cgnx-20211231.xsd#cgnx_MoneyMarketInstrumentsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure_c19cfa5e-5860-4de4-9f70-24b602c3ae7a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CorporateBondsFairValueDisclosure_1e66f092-1a54-41cf-8eaa-174a1db48609" xlink:href="cgnx-20211231.xsd#cgnx_CorporateBondsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_CorporateBondsFairValueDisclosure_1e66f092-1a54-41cf-8eaa-174a1db48609" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TreasuryBillsFairValueDisclosure_95a74950-e721-4385-ab83-8b7c7bac8044" xlink:href="cgnx-20211231.xsd#cgnx_TreasuryBillsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_TreasuryBillsFairValueDisclosure_95a74950-e721-4385-ab83-8b7c7bac8044" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure_1a570eb0-d15d-49f0-9085-9b80a1289d0b" xlink:href="cgnx-20211231.xsd#cgnx_AssetBackedSecuritiesFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure_1a570eb0-d15d-49f0-9085-9b80a1289d0b" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsFairValueDisclosure_fbe633f4-ebd0-4cbd-b0b5-86e12b1317de" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_AgencyBondsFairValueDisclosure_fbe633f4-ebd0-4cbd-b0b5-86e12b1317de" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SovereignBondsFairValueDisclosure_7a7d6d22-9ccd-424a-9913-bda6815a5aad" xlink:href="cgnx-20211231.xsd#cgnx_SovereignBondsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_SovereignBondsFairValueDisclosure_7a7d6d22-9ccd-424a-9913-bda6815a5aad" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MunicipalBondsFairValueDisclosure_90a1bd0d-ca18-4f70-950c-227931994cf7" xlink:href="cgnx-20211231.xsd#cgnx_MunicipalBondsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_MunicipalBondsFairValueDisclosure_90a1bd0d-ca18-4f70-950c-227931994cf7" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_60a05b53-c894-4419-b8f6-d9feb27d7026" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyContractAssetFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_60a05b53-c894-4419-b8f6-d9feb27d7026" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_78b9eef8-c596-4d19-bc9f-0b01a6efa680" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueDisclosureAbstract"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_916aa2f1-12b2-48ee-bbfe-80eaa90da797" xlink:to="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_78b9eef8-c596-4d19-bc9f-0b01a6efa680" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_2b41cda1-7a23-4921-9196-8e690a5becf4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_78b9eef8-c596-4d19-bc9f-0b01a6efa680" xlink:to="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_2b41cda1-7a23-4921-9196-8e690a5becf4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_916aa2f1-12b2-48ee-bbfe-80eaa90da797" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f63f228a-da03-42eb-89db-cf71a8de3175" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:to="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f63f228a-da03-42eb-89db-cf71a8de3175" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_f63f228a-da03-42eb-89db-cf71a8de3175_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f63f228a-da03-42eb-89db-cf71a8de3175" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_f63f228a-da03-42eb-89db-cf71a8de3175_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f63f228a-da03-42eb-89db-cf71a8de3175" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel1Member_7e3818f3-63c1-48a0-b879-aa57647979f2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel1Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:to="loc_us-gaap_FairValueInputsLevel1Member_7e3818f3-63c1-48a0-b879-aa57647979f2" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel2Member_770a1c3d-2eba-4a30-8140-a3713c476cac" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel2Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:to="loc_us-gaap_FairValueInputsLevel2Member_770a1c3d-2eba-4a30-8140-a3713c476cac" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel3Member_e3adfd1d-a816-4d0d-9263-c910f6c65774" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel3Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:to="loc_us-gaap_FairValueInputsLevel3Member_e3adfd1d-a816-4d0d-9263-c910f6c65774" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b123fbe5-136a-4a53-a7f2-05e1ae964dbb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b123fbe5-136a-4a53-a7f2-05e1ae964dbb" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_b123fbe5-136a-4a53-a7f2-05e1ae964dbb_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b123fbe5-136a-4a53-a7f2-05e1ae964dbb" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_b123fbe5-136a-4a53-a7f2-05e1ae964dbb_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_0a1fee7a-9681-4b16-9178-8e1b4cc4426f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b123fbe5-136a-4a53-a7f2-05e1ae964dbb" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_0a1fee7a-9681-4b16-9178-8e1b4cc4426f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_ff68817e-63c9-4ebd-ab52-f5972225a13a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain_0a1fee7a-9681-4b16-9178-8e1b4cc4426f" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_ff68817e-63c9-4ebd-ab52-f5972225a13a" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" xlink:type="extended" id="if170b0a6ab48424a8d4e47eda2561c14_FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_ae552368-31b4-4b72-a18f-f8c1c8604e66" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_ae552368-31b4-4b72-a18f-f8c1c8604e66" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_c80d100f-bcaf-4f7d-aa4b-74531adeee9e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_c80d100f-bcaf-4f7d-aa4b-74531adeee9e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueAdjustment_25d9e8df-191f-4a38-8c7c-d7869fb58da7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueAdjustment"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:to="loc_us-gaap_LiabilitiesFairValueAdjustment_25d9e8df-191f-4a38-8c7c-d7869fb58da7" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_6d88992a-ebed-46cf-8c01-158f3e6886f6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:to="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_6d88992a-ebed-46cf-8c01-158f3e6886f6" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_fa21debb-33e0-4ed8-9059-72485bf24a6c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_619d943b-1c15-4369-839d-2dc6bae5bf37" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_ae552368-31b4-4b72-a18f-f8c1c8604e66" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_619d943b-1c15-4369-839d-2dc6bae5bf37" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_a357c6c9-45d2-400b-a457-6a67665547df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_619d943b-1c15-4369-839d-2dc6bae5bf37" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_a357c6c9-45d2-400b-a457-6a67665547df" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_a357c6c9-45d2-400b-a457-6a67665547df_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_a357c6c9-45d2-400b-a457-6a67665547df" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_a357c6c9-45d2-400b-a457-6a67665547df_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d0d12294-22a6-4bed-bbc0-863a1e732a65" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_a357c6c9-45d2-400b-a457-6a67665547df" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d0d12294-22a6-4bed-bbc0-863a1e732a65" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member_6e7d5abb-6b2b-4b31-8939-8e23a6ef9f89" xlink:href="cgnx-20211231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d0d12294-22a6-4bed-bbc0-863a1e732a65" xlink:to="loc_cgnx_GViVenturesInc.Member_6e7d5abb-6b2b-4b31-8939-8e23a6ef9f89" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChiaroTechnologiesLLCMember_4f3dc4b4-cf15-4610-a401-342199bfcce9" xlink:href="cgnx-20211231.xsd#cgnx_ChiaroTechnologiesLLCMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d0d12294-22a6-4bed-bbc0-863a1e732a65" xlink:to="loc_cgnx_ChiaroTechnologiesLLCMember_4f3dc4b4-cf15-4610-a401-342199bfcce9" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#FairValueMeasurementsAdditionalInformationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails" xlink:type="extended" id="ib5875980bd4d411e9a741e7d44d5ba63_FairValueMeasurementsAdditionalInformationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_c7998cf8-8d80-4de0-bc0d-a53182db3ad1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_c7998cf8-8d80-4de0-bc0d-a53182db3ad1" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_80e50613-94f8-455c-901f-063d807fa924" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_80e50613-94f8-455c-901f-063d807fa924" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_871884d4-c2f2-4e1c-bf0e-8a32e530b0e3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_871884d4-c2f2-4e1c-bf0e-8a32e530b0e3" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_b253c792-75c2-487d-9395-088ca59ffa40" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_b253c792-75c2-487d-9395-088ca59ffa40" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_027acd17-b57e-42ee-85f4-3de44933d5c3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_027acd17-b57e-42ee-85f4-3de44933d5c3" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings_aecacf24-f54f-4f3b-83ba-5d5805311c68" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings_aecacf24-f54f-4f3b-83ba-5d5805311c68" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_2f118674-2bff-475f-a420-7835a3e55bcc" xlink:href="cgnx-20211231.xsd#cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_2f118674-2bff-475f-a420-7835a3e55bcc" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_5714616a-84e9-449c-b046-5b1b23d42bce" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_5714616a-84e9-449c-b046-5b1b23d42bce" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_5714616a-84e9-449c-b046-5b1b23d42bce_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_5714616a-84e9-449c-b046-5b1b23d42bce" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_5714616a-84e9-449c-b046-5b1b23d42bce_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_c7805354-221a-44f4-bb04-b46fe90fac01" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_5714616a-84e9-449c-b046-5b1b23d42bce" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_c7805354-221a-44f4-bb04-b46fe90fac01" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member_a7c68ac5-75c9-4d52-a273-ff16afae44fc" xlink:href="cgnx-20211231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_c7805354-221a-44f4-bb04-b46fe90fac01" xlink:to="loc_cgnx_GViVenturesInc.Member_a7c68ac5-75c9-4d52-a273-ff16afae44fc" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:to="loc_srt_RangeAxis_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4" xlink:to="loc_srt_RangeMember_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_0a8c4a43-81b9-4fa4-a022-4c4d3599a066" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4" xlink:to="loc_srt_RangeMember_0a8c4a43-81b9-4fa4-a022-4c4d3599a066" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_f07bbd2c-64ae-4361-aa17-a334587d00c4" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_0a8c4a43-81b9-4fa4-a022-4c4d3599a066" xlink:to="loc_srt_MinimumMember_f07bbd2c-64ae-4361-aa17-a334587d00c4" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_cff81d0b-808c-4034-86d7-a5f5d7cc5627" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_0a8c4a43-81b9-4fa4-a022-4c4d3599a066" xlink:to="loc_srt_MaximumMember_cff81d0b-808c-4034-86d7-a5f5d7cc5627" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_c5fc6f26-0433-487b-9cfb-d924420b5632" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_c5fc6f26-0433-487b-9cfb-d924420b5632" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_c5fc6f26-0433-487b-9cfb-d924420b5632_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_c5fc6f26-0433-487b-9cfb-d924420b5632" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_c5fc6f26-0433-487b-9cfb-d924420b5632_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_8d567d74-58d9-4b74-9eba-50fdae1eea7e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_c5fc6f26-0433-487b-9cfb-d924420b5632" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_8d567d74-58d9-4b74-9eba-50fdae1eea7e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_2f14cac4-3774-4e5b-9118-d37723a25010" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain_8d567d74-58d9-4b74-9eba-50fdae1eea7e" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_2f14cac4-3774-4e5b-9118-d37723a25010" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="extended" id="iafa932ee4ee64204b13575e1709589a0_CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_f968f807-af0f-4478-840d-0dd70bb6ab1c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Cash"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_Cash_f968f807-af0f-4478-840d-0dd70bb6ab1c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsAtCarryingValue_da527df9-6dc8-474b-9e65-93d18ef0e63d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_MoneyMarketFundsAtCarryingValue_da527df9-6dc8-474b-9e65-93d18ef0e63d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_7e27d5b4-67fa-4e96-a4f1-a193c4a0f9b3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_7e27d5b4-67fa-4e96-a4f1-a193c4a0f9b3" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_86f9542e-60df-4a9f-8b80-fdc4e311c80b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_86f9542e-60df-4a9f-8b80-fdc4e311c80b" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_5a6f0860-662d-4e63-ae2c-161a806a709f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_5a6f0860-662d-4e63-ae2c-161a806a709f" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_c84894f4-fb87-426e-82c4-ae4519f8b5e5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_LongTermInvestments_c84894f4-fb87-426e-82c4-ae4519f8b5e5" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_481e81fc-8c82-47ee-b472-564d7fd8227c" xlink:href="cgnx-20211231.xsd#cgnx_CashCashEquivalentsShortTermAndLongTermInvestments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_481e81fc-8c82-47ee-b472-564d7fd8227c" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_761e914a-3ed0-4fa3-9944-75fbf0676258" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_761e914a-3ed0-4fa3-9944-75fbf0676258" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_761e914a-3ed0-4fa3-9944-75fbf0676258" xlink:to="loc_us-gaap_FinancialInstrumentAxis_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasuryBillSecuritiesMember_ebed0b53-779f-4477-acd4-67a50e8e5815" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasuryBillSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_USTreasuryBillSecuritiesMember_ebed0b53-779f-4477-acd4-67a50e8e5815" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_3d3a36ff-78f8-46e6-bfb9-e955ab8982b0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_3d3a36ff-78f8-46e6-bfb9-e955ab8982b0" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_cba4f5bf-0809-44af-af2e-4a00eccbb279" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_cba4f5bf-0809-44af-af2e-4a00eccbb279" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_90764448-9036-45dc-a849-d7f6473f0c62" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_90764448-9036-45dc-a849-d7f6473f0c62" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_aeb39ddd-9104-4730-8bce-71f77f51defd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_MunicipalBondsMember_aeb39ddd-9104-4730-8bce-71f77f51defd" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_c89a24ff-7c61-422f-8e88-4496f8d9a7e8" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_cgnx_AgencyBondsMember_c89a24ff-7c61-422f-8e88-4496f8d9a7e8" xlink:type="arc" order="5"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="extended" id="ia55a7ff1a1d944eea9de674896b01e3a_CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_f3c3bd55-b7bf-48e1-8e38-00fb251ab4aa" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_f3c3bd55-b7bf-48e1-8e38-00fb251ab4aa" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_99eb7f86-a0bd-4538-9e08-40270af7ae67" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_99eb7f86-a0bd-4538-9e08-40270af7ae67" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_59c6b443-b74a-45b9-a3fb-6503e6c6ab27" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_59c6b443-b74a-45b9-a3fb-6503e6c6ab27" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_8e220501-96de-4a51-a097-1b02f133424b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_8e220501-96de-4a51-a097-1b02f133424b" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_b169ffaf-55e5-4340-9c72-bf97c1f1142f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:to="loc_us-gaap_FinancialInstrumentAxis_b169ffaf-55e5-4340-9c72-bf97c1f1142f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_b169ffaf-55e5-4340-9c72-bf97c1f1142f_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_b169ffaf-55e5-4340-9c72-bf97c1f1142f" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_b169ffaf-55e5-4340-9c72-bf97c1f1142f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_b169ffaf-55e5-4340-9c72-bf97c1f1142f" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_363d1da1-9a4f-4e4d-aa69-69f036864568" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_363d1da1-9a4f-4e4d-aa69-69f036864568" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_5c8bae96-de3f-4545-b0c7-466a1c820711" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_5c8bae96-de3f-4545-b0c7-466a1c820711" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_2d81ae23-e631-4416-9f54-20c347bcbaa7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_2d81ae23-e631-4416-9f54-20c347bcbaa7" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_30f4bb49-0cae-4fe4-9d21-1ddfcbd68fd9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_30f4bb49-0cae-4fe4-9d21-1ddfcbd68fd9" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_9d38ab8c-fa88-463c-95a9-4e2fa8846edc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_MunicipalBondsMember_9d38ab8c-fa88-463c-95a9-4e2fa8846edc" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_0f44a9b4-c9d2-4401-b8a4-648b13f127b7" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_cgnx_AgencyBondsMember_0f44a9b4-c9d2-4401-b8a4-648b13f127b7" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeAxis_92765176-5107-441a-9f3e-65887c24d8f9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:to="loc_us-gaap_InvestmentTypeAxis_92765176-5107-441a-9f3e-65887c24d8f9" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeCategorizationMember_92765176-5107-441a-9f3e-65887c24d8f9_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTypeCategorizationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_InvestmentTypeAxis_92765176-5107-441a-9f3e-65887c24d8f9" xlink:to="loc_us-gaap_InvestmentTypeCategorizationMember_92765176-5107-441a-9f3e-65887c24d8f9_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeCategorizationMember_e113da2d-6088-4a4d-846d-e677c8ae3805" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTypeCategorizationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_InvestmentTypeAxis_92765176-5107-441a-9f3e-65887c24d8f9" xlink:to="loc_us-gaap_InvestmentTypeCategorizationMember_e113da2d-6088-4a4d-846d-e677c8ae3805" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShortTermInvestmentsMember_8e575e02-39a7-480d-9b73-4be31f4cddf3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShortTermInvestmentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_InvestmentTypeCategorizationMember_e113da2d-6088-4a4d-846d-e677c8ae3805" xlink:to="loc_us-gaap_ShortTermInvestmentsMember_8e575e02-39a7-480d-9b73-4be31f4cddf3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_LongTermInvestmentsMember_d4ef649f-911f-4e8c-8e74-34a8ac5167fc" xlink:href="cgnx-20211231.xsd#cgnx_LongTermInvestmentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_InvestmentTypeCategorizationMember_e113da2d-6088-4a4d-846d-e677c8ae3805" xlink:to="loc_cgnx_LongTermInvestmentsMember_d4ef649f-911f-4e8c-8e74-34a8ac5167fc" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail" xlink:type="extended" id="i3abd0c75f7414e6a9b3d8a57e921b30a_CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months_790264c2-e965-4473-bc33-72040518be69" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months_790264c2-e965-4473-bc33-72040518be69" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss_989aee37-10f9-4ed8-8995-7bd4db58fe96" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss_989aee37-10f9-4ed8-8995-7bd4db58fe96" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger_d3609bc5-03fc-43b0-9b46-e34d6cff186c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger_d3609bc5-03fc-43b0-9b46-e34d6cff186c" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss_d2b8ce26-4dd0-49d4-a739-8096b484bc33" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss_d2b8ce26-4dd0-49d4-a739-8096b484bc33" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_839eb4af-242f-4022-97fa-92fc793b3d55" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_839eb4af-242f-4022-97fa-92fc793b3d55" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_b787cca6-3aed-47b1-afb0-dcac3f07ea04" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_b787cca6-3aed-47b1-afb0-dcac3f07ea04" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_a669d1b1-07fb-4707-82b1-545fc40728e7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_a669d1b1-07fb-4707-82b1-545fc40728e7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_b6a15bf5-b66b-4bfe-98a2-a69583847355" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_a669d1b1-07fb-4707-82b1-545fc40728e7" xlink:to="loc_us-gaap_FinancialInstrumentAxis_b6a15bf5-b66b-4bfe-98a2-a69583847355" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_b6a15bf5-b66b-4bfe-98a2-a69583847355_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_b6a15bf5-b66b-4bfe-98a2-a69583847355" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_b6a15bf5-b66b-4bfe-98a2-a69583847355_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_b6a15bf5-b66b-4bfe-98a2-a69583847355" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_0cfb7d7b-720d-4730-90bc-e745022ac159" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_0cfb7d7b-720d-4730-90bc-e745022ac159" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_a799a0d8-02b2-4e7c-b33d-a036435e97e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_a799a0d8-02b2-4e7c-b33d-a036435e97e4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_0f12e3ba-0ddf-483d-8ddf-ba1d4c2c413d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_0f12e3ba-0ddf-483d-8ddf-ba1d4c2c413d" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_8d03684f-96f4-4e50-8a74-4caf611ee55e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_8d03684f-96f4-4e50-8a74-4caf611ee55e" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_fcde2b05-40d3-49fc-9bab-0a2f158133a5" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_cgnx_AgencyBondsMember_fcde2b05-40d3-49fc-9bab-0a2f158133a5" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_94985bcb-b9a7-4784-a47c-65ec8c5c1ed8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_MunicipalBondsMember_94985bcb-b9a7-4784-a47c-65ec8c5c1ed8" xlink:type="arc" order="5"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="extended" id="if294a322fa85456caeca24e7a853767f_CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_18122f4c-d497-4ec7-a509-8194fe2f4cfe" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_18122f4c-d497-4ec7-a509-8194fe2f4cfe" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_63c7b3cd-fbb5-45de-9b2b-5329f07f5d0e" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_63c7b3cd-fbb5-45de-9b2b-5329f07f5d0e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_5b09b3e5-8498-42d5-a01c-bdaf6dc4a6c9" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_5b09b3e5-8498-42d5-a01c-bdaf6dc4a6c9" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_47196d31-7196-4fe0-a744-807ab5cbfd38" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_47196d31-7196-4fe0-a744-807ab5cbfd38" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_1a3d781e-fc83-4003-b3bd-afda7a562d47" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_1a3d781e-fc83-4003-b3bd-afda7a562d47" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_0ced0ac1-0ac7-4412-a3cf-2eeb522b001b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_0ced0ac1-0ac7-4412-a3cf-2eeb522b001b" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_dabca335-5a53-4f05-9150-1dca455e1dfc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_dabca335-5a53-4f05-9150-1dca455e1dfc" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_5bf8d56a-847d-4b2c-882c-0511aa0b3405" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_dabca335-5a53-4f05-9150-1dca455e1dfc" xlink:to="loc_us-gaap_FinancialInstrumentAxis_5bf8d56a-847d-4b2c-882c-0511aa0b3405" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5bf8d56a-847d-4b2c-882c-0511aa0b3405_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_5bf8d56a-847d-4b2c-882c-0511aa0b3405" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5bf8d56a-847d-4b2c-882c-0511aa0b3405_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_5bf8d56a-847d-4b2c-882c-0511aa0b3405" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_21e81141-1bff-4787-be67-ceeae2d90491" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_21e81141-1bff-4787-be67-ceeae2d90491" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_2e4926d3-e8f6-460c-b5e0-583188ac0a52" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_2e4926d3-e8f6-460c-b5e0-583188ac0a52" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_ad8c917e-8161-461b-bfb7-f02096bdb6dc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_ad8c917e-8161-461b-bfb7-f02096bdb6dc" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_bab32771-965f-4bb0-b58b-207244028718" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_bab32771-965f-4bb0-b58b-207244028718" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_a5b3aba5-9b4a-4282-846a-04c00af77b73" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_MunicipalBondsMember_a5b3aba5-9b4a-4282-846a-04c00af77b73" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_be416ae8-943f-427d-a145-ff9f3278d7d9" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_cgnx_AgencyBondsMember_be416ae8-943f-427d-a145-ff9f3278d7d9" xlink:type="arc" order="5"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="extended" id="i8a8c1951addd4aae96b1295d59d7e70c_PropertyPlantandEquipmentPropertyPlantandEquipmentDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_8369553a-09e6-4b5e-9bb4-6993f50b5418" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_8369553a-09e6-4b5e-9bb4-6993f50b5418" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_886ca391-2e22-46bf-9a5b-1f6a4a242b12" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_886ca391-2e22-46bf-9a5b-1f6a4a242b12" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_5b3e1a09-c5a2-4eda-8b9c-4e4910cc8868" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_5b3e1a09-c5a2-4eda-8b9c-4e4910cc8868" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_d49f05e3-bace-435f-9219-db8716042d4e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_d49f05e3-bace-435f-9219-db8716042d4e" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_d49f05e3-bace-435f-9219-db8716042d4e" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LandMember_23aeac66-c410-42f8-a4e3-89e3e1560eec" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LandMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_LandMember_23aeac66-c410-42f8-a4e3-89e3e1560eec" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember_1d79cc45-26d4-447d-8e69-79e36abc0647" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_BuildingMember_1d79cc45-26d4-447d-8e69-79e36abc0647" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember_71d38559-83ac-4c62-845c-7719e0adc0fc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingImprovementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_BuildingImprovementsMember_71d38559-83ac-4c62-845c-7719e0adc0fc" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseholdImprovementsMember_64a1c289-b1f5-4bb4-9ead-ac34984d0377" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LeaseholdImprovementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_LeaseholdImprovementsMember_64a1c289-b1f5-4bb4-9ead-ac34984d0377" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_HardwareAndSoftwareMember_aa195068-8991-48d7-9e4a-ca7e061ca441" xlink:href="cgnx-20211231.xsd#cgnx_HardwareAndSoftwareMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_cgnx_HardwareAndSoftwareMember_aa195068-8991-48d7-9e4a-ca7e061ca441" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_ce82ce85-60c5-4566-ae89-9c7af891a6b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquipmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_EquipmentMember_ce82ce85-60c5-4566-ae89-9c7af891a6b2" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_98602f83-4424-4e35-af0d-2763013be77a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_98602f83-4424-4e35-af0d-2763013be77a" xlink:type="arc" order="6"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/LeasesDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#LeasesDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/LeasesDetails" xlink:type="extended" id="i1bdc195d6ee641b693ccb73661e029e1_LeasesDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeLeaseDescriptionLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_1eb9e536-761e-4ce3-81b3-0f93df85a2a6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_1eb9e536-761e-4ce3-81b3-0f93df85a2a6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseExpense_e67a79db-f201-451c-b62d-bc1b0135b069" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseExpense_e67a79db-f201-451c-b62d-bc1b0135b069" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasePayments_03317e5b-4d28-4781-ab41-7338da475e24" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeasePayments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeasePayments_03317e5b-4d28-4781-ab41-7338da475e24" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_36af7114-9dc5-4da1-9c58-7b4dde58308f" xlink:href="cgnx-20211231.xsd#cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_36af7114-9dc5-4da1-9c58-7b4dde58308f" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability_1e16e7df-02c0-4056-bb00-beadd7d9fd1b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseLiability_1e16e7df-02c0-4056-bb00-beadd7d9fd1b" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_0f04259b-bb95-4b28-99ac-d06db3ed720d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_0f04259b-bb95-4b28-99ac-d06db3ed720d" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_0c3d1a2f-699a-4e6b-9bd3-eb991bc452b1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_0c3d1a2f-699a-4e6b-9bd3-eb991bc452b1" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_253c09eb-873a-460a-b574-f452a5a373b5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_253c09eb-873a-460a-b574-f452a5a373b5" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_5463a54f-faca-45b9-81f4-6207b56a73e0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_5463a54f-faca-45b9-81f4-6207b56a73e0" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_b078f1a4-a53e-4112-b1a3-bb52d2cab30e" xlink:href="cgnx-20211231.xsd#cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_b078f1a4-a53e-4112-b1a3-bb52d2cab30e" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_4b80064b-dea5-499f-a626-bcb0728d1a68" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_4b80064b-dea5-499f-a626-bcb0728d1a68" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLeaseIncome_14ba0d97-3100-4634-abd3-cf2691df076c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLeaseIncome"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseLeaseIncome_14ba0d97-3100-4634-abd3-cf2691df076c" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeLeaseDescriptionTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_f5be97e6-3b79-4bab-a1cd-558f804313d0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:to="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_f5be97e6-3b79-4bab-a1cd-558f804313d0" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_f5be97e6-3b79-4bab-a1cd-558f804313d0_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_f5be97e6-3b79-4bab-a1cd-558f804313d0" xlink:to="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_f5be97e6-3b79-4bab-a1cd-558f804313d0_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_e95dc85b-da23-4eab-b849-b5de3cf1d903" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_f5be97e6-3b79-4bab-a1cd-558f804313d0" xlink:to="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_e95dc85b-da23-4eab-b849-b5de3cf1d903" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SouthboroughMassachusettsMember_8e95af27-d4c1-4f95-9e7c-2a4a8d191a9f" xlink:href="cgnx-20211231.xsd#cgnx_SouthboroughMassachusettsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_e95dc85b-da23-4eab-b849-b5de3cf1d903" xlink:to="loc_cgnx_SouthboroughMassachusettsMember_8e95af27-d4c1-4f95-9e7c-2a4a8d191a9f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_6ed62348-4dfe-4f73-8e22-76d509bedda3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_6ed62348-4dfe-4f73-8e22-76d509bedda3" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_6ed62348-4dfe-4f73-8e22-76d509bedda3_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_6ed62348-4dfe-4f73-8e22-76d509bedda3" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_6ed62348-4dfe-4f73-8e22-76d509bedda3_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_1a7e9843-a412-4e43-b4f3-45e645b9100f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_6ed62348-4dfe-4f73-8e22-76d509bedda3" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_1a7e9843-a412-4e43-b4f3-45e645b9100f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_c65d2d14-6887-4c45-8fc1-b487be09e417" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_1a7e9843-a412-4e43-b4f3-45e645b9100f" xlink:to="loc_us-gaap_ContractTerminationMember_c65d2d14-6887-4c45-8fc1-b487be09e417" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#GoodwillChangesintheCarryingValueofGoodwillDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail" xlink:type="extended" id="i439775e20aaa4ce78171e9ad313a0610_GoodwillChangesintheCarryingValueofGoodwillDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillLineItems_6bb0e223-4071-4220-8fe0-199ee65e348e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillLineItems_6bb0e223-4071-4220-8fe0-199ee65e348e" xlink:to="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_0f3ccb5c-371e-4f92-bc55-9d7a24363d0d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:to="loc_us-gaap_Goodwill_0f3ccb5c-371e-4f92-bc55-9d7a24363d0d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillOtherIncreaseDecrease_7374119f-9126-452b-9a35-c904e58d13d4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillOtherIncreaseDecrease"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:to="loc_us-gaap_GoodwillOtherIncreaseDecrease_7374119f-9126-452b-9a35-c904e58d13d4" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_f87f3c49-c1c9-4c5f-89b0-8f8a67c374f2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:to="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_f87f3c49-c1c9-4c5f-89b0-8f8a67c374f2" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_f3d33fbc-0085-4d0b-bdf6-0fcb55fbb436" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfGoodwillTable_011841d7-93c7-4e7f-8d3c-192fd40d772f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfGoodwillTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_GoodwillLineItems_6bb0e223-4071-4220-8fe0-199ee65e348e" xlink:to="loc_us-gaap_ScheduleOfGoodwillTable_011841d7-93c7-4e7f-8d3c-192fd40d772f" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_73852000-be4d-44fc-ba51-4f0ed33a4639" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfGoodwillTable_011841d7-93c7-4e7f-8d3c-192fd40d772f" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_73852000-be4d-44fc-ba51-4f0ed33a4639" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_73852000-be4d-44fc-ba51-4f0ed33a4639_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_73852000-be4d-44fc-ba51-4f0ed33a4639" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_73852000-be4d-44fc-ba51-4f0ed33a4639_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_dddf471f-1c5d-4a16-8c0c-bcb5d3eb2f4b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_73852000-be4d-44fc-ba51-4f0ed33a4639" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_dddf471f-1c5d-4a16-8c0c-bcb5d3eb2f4b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_fe6d38af-cc91-4919-b4c6-6b41ad6c4811" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_dddf471f-1c5d-4a16-8c0c-bcb5d3eb2f4b" xlink:to="loc_cgnx_SualabCo.Ltd.Member_fe6d38af-cc91-4919-b4c6-6b41ad6c4811" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssetsAmortizedIntangibleAssetsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="extended" id="i47893a34164b452bb652b33efa374859_IntangibleAssetsAmortizedIntangibleAssetsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsGross_8c2cda5a-54cb-4ec0-ab59-d09d98aa3c15" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsGross_8c2cda5a-54cb-4ec0-ab59-d09d98aa3c15" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_9f79169d-2669-451a-a142-47d36be4c766" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_9f79169d-2669-451a-a142-47d36be4c766" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill_1b40e7d8-5e0d-4334-b705-8614f7fe4d1f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsNetIncludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill_1b40e7d8-5e0d-4334-b705-8614f7fe4d1f" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet_91686a30-55a7-40fc-9b62-3672b4f5aa20" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsNet_91686a30-55a7-40fc-9b62-3672b4f5aa20" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_e6602398-1185-4efd-8c97-e399bfe73d5d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_e6602398-1185-4efd-8c97-e399bfe73d5d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_e6602398-1185-4efd-8c97-e399bfe73d5d_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_e6602398-1185-4efd-8c97-e399bfe73d5d" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_e6602398-1185-4efd-8c97-e399bfe73d5d_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_e6602398-1185-4efd-8c97-e399bfe73d5d" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember_d364d121-d990-412f-a534-76a597111407" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DistributionRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_DistributionRightsMember_d364d121-d990-412f-a534-76a597111407" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_e214fd4d-b9c9-408a-8853-cf1751cc67b3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_e214fd4d-b9c9-408a-8853-cf1751cc67b3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_1f20ffbc-4bc2-443e-a507-4bf203a34553" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_1f20ffbc-4bc2-443e-a507-4bf203a34553" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_439c5875-b3e5-46d6-8ee6-fa84fc47c74f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_439c5875-b3e5-46d6-8ee6-fa84fc47c74f" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_03f13fe5-d965-4c0b-a1d5-8be31016850c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_03f13fe5-d965-4c0b-a1d5-8be31016850c" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_2fa6d8d1-d144-4f9a-8637-64fb9f9d287e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_TrademarksMember_2fa6d8d1-d144-4f9a-8637-64fb9f9d287e" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherIntangibleAssetsMember_0b496d80-ace9-4ad7-aaa6-c3ed42dfc2ed" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherIntangibleAssetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_OtherIntangibleAssetsMember_0b496d80-ace9-4ad7-aaa6-c3ed42dfc2ed" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_202b5623-d609-4097-905c-bcdf413dbf5e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_202b5623-d609-4097-905c-bcdf413dbf5e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_202b5623-d609-4097-905c-bcdf413dbf5e_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_202b5623-d609-4097-905c-bcdf413dbf5e" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_202b5623-d609-4097-905c-bcdf413dbf5e_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_a6b142e5-f951-4ab5-916b-e2b2d6e0a0f3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_202b5623-d609-4097-905c-bcdf413dbf5e" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_a6b142e5-f951-4ab5-916b-e2b2d6e0a0f3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_fb2ebcfd-3e35-4cc8-9d33-018b64abbba1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_a6b142e5-f951-4ab5-916b-e2b2d6e0a0f3" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_fb2ebcfd-3e35-4cc8-9d33-018b64abbba1" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssetsNarrativeDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IntangibleAssetsNarrativeDetails" xlink:type="extended" id="i37f6a21a90a34fc59c56ac5af0d20755_IntangibleAssetsNarrativeDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_ef06903f-bcf3-4106-9844-b1e392027b11" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_ef06903f-bcf3-4106-9844-b1e392027b11" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_23b04cb1-b74f-4395-94b4-d80edf590405" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_23b04cb1-b74f-4395-94b4-d80edf590405" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_19d8304d-50a8-4945-a514-f76bb64550a1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_19d8304d-50a8-4945-a514-f76bb64550a1" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_939b224e-9bc2-46b5-858a-66b285af3a59" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_939b224e-9bc2-46b5-858a-66b285af3a59" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_4d559a8f-5b25-45c1-977f-38a115197590" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_4d559a8f-5b25-45c1-977f-38a115197590" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_4d559a8f-5b25-45c1-977f-38a115197590_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_4d559a8f-5b25-45c1-977f-38a115197590" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_4d559a8f-5b25-45c1-977f-38a115197590_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_922c9456-2d02-4c5b-af77-a92f28198ed9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_4d559a8f-5b25-45c1-977f-38a115197590" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_922c9456-2d02-4c5b-af77-a92f28198ed9" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_b0cac08c-e596-4cea-9413-f70088750c66" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_922c9456-2d02-4c5b-af77-a92f28198ed9" xlink:to="loc_cgnx_SualabCo.Ltd.Member_b0cac08c-e596-4cea-9413-f70088750c66" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EnShapeGmbHAbstract_57db3730-90a4-4292-a8af-406a7d697f7c" xlink:href="cgnx-20211231.xsd#cgnx_EnShapeGmbHAbstract"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_922c9456-2d02-4c5b-af77-a92f28198ed9" xlink:to="loc_cgnx_EnShapeGmbHAbstract_57db3730-90a4-4292-a8af-406a7d697f7c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_9526e004-6328-4e01-bdbe-933e075a36ef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_9526e004-6328-4e01-bdbe-933e075a36ef" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9526e004-6328-4e01-bdbe-933e075a36ef_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_9526e004-6328-4e01-bdbe-933e075a36ef" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9526e004-6328-4e01-bdbe-933e075a36ef_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2f6efe5d-292a-4826-9131-74ee05964401" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_9526e004-6328-4e01-bdbe-933e075a36ef" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2f6efe5d-292a-4826-9131-74ee05964401" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_d316e542-df83-4e1e-b1dc-fdb79b9d9a55" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2f6efe5d-292a-4826-9131-74ee05964401" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_d316e542-df83-4e1e-b1dc-fdb79b9d9a55" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_ac27c503-101e-4666-ae73-f803a3273181" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2f6efe5d-292a-4826-9131-74ee05964401" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_ac27c503-101e-4666-ae73-f803a3273181" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_7740113a-5bed-4492-a6b9-63f2c899dd63" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_7740113a-5bed-4492-a6b9-63f2c899dd63" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_7740113a-5bed-4492-a6b9-63f2c899dd63_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_7740113a-5bed-4492-a6b9-63f2c899dd63" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_7740113a-5bed-4492-a6b9-63f2c899dd63_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_e93f42a0-df5f-4daf-b29b-5e1b16e3151f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_7740113a-5bed-4492-a6b9-63f2c899dd63" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_e93f42a0-df5f-4daf-b29b-5e1b16e3151f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_b3e547cf-d742-41cb-8484-0a0d909621f6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_e93f42a0-df5f-4daf-b29b-5e1b16e3151f" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_b3e547cf-d742-41cb-8484-0a0d909621f6" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsAdditionalDetailsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails" xlink:type="extended" id="ic7a53e378df14b508f854d35530f7bb8_DerivativeInstrumentsAdditionalDetailsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems_6b800030-4da9-4910-ab4f-06af9e93e8d3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_d3047c77-6697-474e-b5ea-33f9255c101a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativeLineItems_6b800030-4da9-4910-ab4f-06af9e93e8d3" xlink:to="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_d3047c77-6697-474e-b5ea-33f9255c101a" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable_fb42331f-60b8-4ffc-a607-89284b5380c7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DerivativeLineItems_6b800030-4da9-4910-ab4f-06af9e93e8d3" xlink:to="loc_us-gaap_DerivativeTable_fb42331f-60b8-4ffc-a607-89284b5380c7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_cc2aefbc-d003-424f-9f0b-f2fd3f157566" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeTable_fb42331f-60b8-4ffc-a607-89284b5380c7" xlink:to="loc_us-gaap_HedgingDesignationAxis_cc2aefbc-d003-424f-9f0b-f2fd3f157566" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_cc2aefbc-d003-424f-9f0b-f2fd3f157566_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_HedgingDesignationAxis_cc2aefbc-d003-424f-9f0b-f2fd3f157566" xlink:to="loc_us-gaap_HedgingDesignationDomain_cc2aefbc-d003-424f-9f0b-f2fd3f157566_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_6c32e07f-303b-4900-8789-08b6373e89ae" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_HedgingDesignationAxis_cc2aefbc-d003-424f-9f0b-f2fd3f157566" xlink:to="loc_us-gaap_HedgingDesignationDomain_6c32e07f-303b-4900-8789-08b6373e89ae" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_4ba40e69-ebd1-4b36-a53e-7223cfaff05d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_HedgingDesignationDomain_6c32e07f-303b-4900-8789-08b6373e89ae" xlink:to="loc_us-gaap_NondesignatedMember_4ba40e69-ebd1-4b36-a53e-7223cfaff05d" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsOutstandingForwardContractsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails" xlink:type="extended" id="id8c070cd2007474796d2a740041eab07_DerivativeInstrumentsOutstandingForwardContractsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems_a4164524-65df-4fcd-9bc6-ee40e8c41302" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetNotionalAmount_462511cb-955c-4e0d-ad59-a8dc443fee57" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssetNotionalAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativeLineItems_a4164524-65df-4fcd-9bc6-ee40e8c41302" xlink:to="loc_us-gaap_DerivativeAssetNotionalAmount_462511cb-955c-4e0d-ad59-a8dc443fee57" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DerivativeLineItems_a4164524-65df-4fcd-9bc6-ee40e8c41302" xlink:to="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_b522918b-3bad-4ecb-a7de-b866b8521bed" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:to="loc_us-gaap_HedgingDesignationAxis_b522918b-3bad-4ecb-a7de-b866b8521bed" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_b522918b-3bad-4ecb-a7de-b866b8521bed_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_HedgingDesignationAxis_b522918b-3bad-4ecb-a7de-b866b8521bed" xlink:to="loc_us-gaap_HedgingDesignationDomain_b522918b-3bad-4ecb-a7de-b866b8521bed_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_65c13f29-a011-45bb-a6b6-12803702266e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_HedgingDesignationAxis_b522918b-3bad-4ecb-a7de-b866b8521bed" xlink:to="loc_us-gaap_HedgingDesignationDomain_65c13f29-a011-45bb-a6b6-12803702266e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_6d94c456-9460-4ec9-80fc-9b1a9f886653" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_HedgingDesignationDomain_65c13f29-a011-45bb-a6b6-12803702266e" xlink:to="loc_us-gaap_NondesignatedMember_6d94c456-9460-4ec9-80fc-9b1a9f886653" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CurrencyAxis_b4efdea2-9448-4ace-bc18-61685eb985ad" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_CurrencyAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:to="loc_srt_CurrencyAxis_b4efdea2-9448-4ace-bc18-61685eb985ad" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_AllCurrenciesDomain_b4efdea2-9448-4ace-bc18-61685eb985ad_default" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_AllCurrenciesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_CurrencyAxis_b4efdea2-9448-4ace-bc18-61685eb985ad" xlink:to="loc_currency_AllCurrenciesDomain_b4efdea2-9448-4ace-bc18-61685eb985ad_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_AllCurrenciesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_CurrencyAxis_b4efdea2-9448-4ace-bc18-61685eb985ad" xlink:to="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_KRW_b3fb882d-ba91-4537-a350-cd4d1acf31dd" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_KRW"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_KRW_b3fb882d-ba91-4537-a350-cd4d1acf31dd" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_EUR_7408dfae-25ad-43c7-9f34-e591c97ba024" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_EUR"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_EUR_7408dfae-25ad-43c7-9f34-e591c97ba024" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_JPY_d68cd07d-70ca-4bbd-8cfb-bac59c7967c8" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_JPY"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_JPY_d68cd07d-70ca-4bbd-8cfb-bac59c7967c8" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_MXN_808caaa1-2deb-4fae-998c-93ea0aecde19" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_MXN"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_MXN_808caaa1-2deb-4fae-998c-93ea0aecde19" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_GBP_0581b755-82ec-4166-a1ae-cbb97656b60f" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_GBP"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_GBP_0581b755-82ec-4166-a1ae-cbb97656b60f" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_HUF_a789408b-de3e-4183-af6d-5b17faf1244c" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_HUF"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_HUF_a789408b-de3e-4183-af6d-5b17faf1244c" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_TWD_024bfada-8d67-41ce-a592-deecf449b859" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_TWD"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_TWD_024bfada-8d67-41ce-a592-deecf449b859" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_CAD_5b0040d7-6666-423d-b193-2189afb1954c" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_CAD"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_CAD_5b0040d7-6666-423d-b193-2189afb1954c" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_SGD_7c7a0859-7384-43e2-89fc-d5f7352be9ee" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_SGD"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_SGD_7c7a0859-7384-43e2-89fc-d5f7352be9ee" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_CNY_4f4a16de-6dc6-4d94-932b-e2ad817a700c" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_CNY"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_CNY_4f4a16de-6dc6-4d94-932b-e2ad817a700c" xlink:type="arc" order="9"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsBalanceSheetLocationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails" xlink:type="extended" id="i76d92b25a07a4908b386c054abbb589f_DerivativeInstrumentsBalanceSheetLocationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativesFairValueLineItems_48c764f8-1cf1-4050-b4d0-71d1800e1ded" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativesFairValueLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets_eda08f74-f66a-4d0d-87fc-1d67258768df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativesFairValueLineItems_48c764f8-1cf1-4050-b4d0-71d1800e1ded" xlink:to="loc_us-gaap_DerivativeAssets_eda08f74-f66a-4d0d-87fc-1d67258768df" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities_d9bb2d61-c3ec-497a-837c-036329d7ca1c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLiabilities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativesFairValueLineItems_48c764f8-1cf1-4050-b4d0-71d1800e1ded" xlink:to="loc_us-gaap_DerivativeLiabilities_d9bb2d61-c3ec-497a-837c-036329d7ca1c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DerivativesFairValueLineItems_48c764f8-1cf1-4050-b4d0-71d1800e1ded" xlink:to="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_482c1ef4-59ff-4acd-8328-e04c90326b85" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:to="loc_us-gaap_HedgingDesignationAxis_482c1ef4-59ff-4acd-8328-e04c90326b85" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_482c1ef4-59ff-4acd-8328-e04c90326b85_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_HedgingDesignationAxis_482c1ef4-59ff-4acd-8328-e04c90326b85" xlink:to="loc_us-gaap_HedgingDesignationDomain_482c1ef4-59ff-4acd-8328-e04c90326b85_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_adbec664-cce8-4938-91cf-0bffb84f0f65" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_HedgingDesignationAxis_482c1ef4-59ff-4acd-8328-e04c90326b85" xlink:to="loc_us-gaap_HedgingDesignationDomain_adbec664-cce8-4938-91cf-0bffb84f0f65" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_017042fc-d9e4-48ee-b0eb-fe4fda5ffb5a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_HedgingDesignationDomain_adbec664-cce8-4938-91cf-0bffb84f0f65" xlink:to="loc_us-gaap_NondesignatedMember_017042fc-d9e4-48ee-b0eb-fe4fda5ffb5a" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_771a0159-78df-4450-986a-61138987e462" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_771a0159-78df-4450-986a-61138987e462" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_771a0159-78df-4450-986a-61138987e462_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_771a0159-78df-4450-986a-61138987e462" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_771a0159-78df-4450-986a-61138987e462_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_c7c3dec9-3313-4a98-8114-784fd4bc1dee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_771a0159-78df-4450-986a-61138987e462" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_c7c3dec9-3313-4a98-8114-784fd4bc1dee" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_9ecdd4ee-9296-4104-98ad-91de3084a210" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_c7c3dec9-3313-4a98-8114-784fd4bc1dee" xlink:to="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_9ecdd4ee-9296-4104-98ad-91de3084a210" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccruedExpensesMember_fcece28d-fd15-415d-81b9-8777ffc03977" xlink:href="cgnx-20211231.xsd#cgnx_AccruedExpensesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_c7c3dec9-3313-4a98-8114-784fd4bc1dee" xlink:to="loc_cgnx_AccruedExpensesMember_fcece28d-fd15-415d-81b9-8777ffc03977" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" xlink:type="extended" id="i3d9b58e83aae45fabed642802ad74387_DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_9cbc69e1-141b-497e-9199-04fe90090e08" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsGainLossLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeGainLossOnDerivativeNet_17f1c6f0-a42c-4b4f-a5e6-44ab2c43b921" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeGainLossOnDerivativeNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_9cbc69e1-141b-497e-9199-04fe90090e08" xlink:to="loc_us-gaap_DerivativeGainLossOnDerivativeNet_17f1c6f0-a42c-4b4f-a5e6-44ab2c43b921" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_9cbc69e1-141b-497e-9199-04fe90090e08" xlink:to="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_1835c612-2781-4c93-8051-00b59508524e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_1835c612-2781-4c93-8051-00b59508524e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_1835c612-2781-4c93-8051-00b59508524e_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_1835c612-2781-4c93-8051-00b59508524e" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_1835c612-2781-4c93-8051-00b59508524e_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_e10cd259-0166-41d6-a26a-ab157ab6e72c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_1835c612-2781-4c93-8051-00b59508524e" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_e10cd259-0166-41d6-a26a-ab157ab6e72c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyGainLossMember_5cd4a50d-0769-4562-a139-1974a07d349d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyGainLossMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_e10cd259-0166-41d6-a26a-ab157ab6e72c" xlink:to="loc_us-gaap_ForeignCurrencyGainLossMember_5cd4a50d-0769-4562-a139-1974a07d349d" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_84651925-0358-4ab5-9df7-277bba5030d0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:to="loc_us-gaap_HedgingDesignationAxis_84651925-0358-4ab5-9df7-277bba5030d0" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_84651925-0358-4ab5-9df7-277bba5030d0_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_HedgingDesignationAxis_84651925-0358-4ab5-9df7-277bba5030d0" xlink:to="loc_us-gaap_HedgingDesignationDomain_84651925-0358-4ab5-9df7-277bba5030d0_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_4d304c6a-8b1e-43e2-8a6a-e436b776c703" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_HedgingDesignationAxis_84651925-0358-4ab5-9df7-277bba5030d0" xlink:to="loc_us-gaap_HedgingDesignationDomain_4d304c6a-8b1e-43e2-8a6a-e436b776c703" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_a10f32d6-7434-4d94-a825-c1e589945dee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_HedgingDesignationDomain_4d304c6a-8b1e-43e2-8a6a-e436b776c703" xlink:to="loc_us-gaap_NondesignatedMember_a10f32d6-7434-4d94-a825-c1e589945dee" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RevenueRecognitionDisaggregationbyGeographyandTypeDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails" xlink:type="extended" id="i3b7b3fd8122d42feb2c7667659531342_RevenueRecognitionDisaggregationbyGeographyandTypeDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems_7dade0a3-c24f-496d-83d4-de5e06d08418" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0fd88903-2550-4032-bbeb-af4fb69df71e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_7dade0a3-c24f-496d-83d4-de5e06d08418" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0fd88903-2550-4032-bbeb-af4fb69df71e" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_7dade0a3-c24f-496d-83d4-de5e06d08418" xlink:to="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_66a0c7fb-daee-4011-895e-2ec589e12551" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:to="loc_srt_StatementGeographicalAxis_66a0c7fb-daee-4011-895e-2ec589e12551" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_66a0c7fb-daee-4011-895e-2ec589e12551_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_66a0c7fb-daee-4011-895e-2ec589e12551" xlink:to="loc_srt_SegmentGeographicalDomain_66a0c7fb-daee-4011-895e-2ec589e12551_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_66a0c7fb-daee-4011-895e-2ec589e12551" xlink:to="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_AmericasMember_486a549c-1cdb-4e27-94a2-308e49bf249c" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_AmericasMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:to="loc_srt_AmericasMember_486a549c-1cdb-4e27-94a2-308e49bf249c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_2e2d85d7-209c-4cbf-b621-e039b92bd127" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:to="loc_srt_EuropeMember_2e2d85d7-209c-4cbf-b621-e039b92bd127" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember_b004d8af-0786-4447-96b4-591b15fd0165" xlink:href="cgnx-20211231.xsd#cgnx_GreaterChinaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:to="loc_cgnx_GreaterChinaMember_b004d8af-0786-4447-96b4-591b15fd0165" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherAsiaMember_f96f77e4-9d85-4a1d-8ecc-4e658a9bc4b2" xlink:href="cgnx-20211231.xsd#cgnx_OtherAsiaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:to="loc_cgnx_OtherAsiaMember_f96f77e4-9d85-4a1d-8ecc-4e658a9bc4b2" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductOrServiceAxis_148a9f57-9752-426a-8aac-18b109519de2" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductOrServiceAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:to="loc_srt_ProductOrServiceAxis_148a9f57-9752-426a-8aac-18b109519de2" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductsAndServicesDomain_148a9f57-9752-426a-8aac-18b109519de2_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductsAndServicesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_ProductOrServiceAxis_148a9f57-9752-426a-8aac-18b109519de2" xlink:to="loc_srt_ProductsAndServicesDomain_148a9f57-9752-426a-8aac-18b109519de2_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductsAndServicesDomain_a41048b6-b355-4dab-b1ce-3aeae578ba27" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductsAndServicesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_ProductOrServiceAxis_148a9f57-9752-426a-8aac-18b109519de2" xlink:to="loc_srt_ProductsAndServicesDomain_a41048b6-b355-4dab-b1ce-3aeae578ba27" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StandardProductandServicesMember_4461944a-31f1-4531-99a2-b08558cd16d3" xlink:href="cgnx-20211231.xsd#cgnx_StandardProductandServicesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_ProductsAndServicesDomain_a41048b6-b355-4dab-b1ce-3aeae578ba27" xlink:to="loc_cgnx_StandardProductandServicesMember_4461944a-31f1-4531-99a2-b08558cd16d3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember_65ad8478-7080-4c7c-9a7c-96eca12c5918" xlink:href="cgnx-20211231.xsd#cgnx_ApplicationofCustomerSpecificSolutionsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_ProductsAndServicesDomain_a41048b6-b355-4dab-b1ce-3aeae578ba27" xlink:to="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember_65ad8478-7080-4c7c-9a7c-96eca12c5918" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#ShareholdersEquityAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail" xlink:type="extended" id="i6ce53162065e4552970c69d6fc452a7b_ShareholdersEquityAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ClassOfStockLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_8b9bc3fb-51de-477f-b427-935b982bd9fd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_8b9bc3fb-51de-477f-b427-935b982bd9fd" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare_b7f196ec-5fe0-4b74-94aa-a2164fa7f68c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_PreferredStockParOrStatedValuePerShare_b7f196ec-5fe0-4b74-94aa-a2164fa7f68c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized_2515fafb-a4bf-4d93-933a-89a6e091f0d4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesAuthorized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_CommonStockSharesAuthorized_2515fafb-a4bf-4d93-933a-89a6e091f0d4" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_e4f8c551-8497-4978-b3ce-a869aa17a308" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_e4f8c551-8497-4978-b3ce-a869aa17a308" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_VoteEntitledForEachCommonShareOutstanding_c3a96fef-c3d6-4dac-9351-b542995b011a" xlink:href="cgnx-20211231.xsd#cgnx_VoteEntitledForEachCommonShareOutstanding"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_cgnx_VoteEntitledForEachCommonShareOutstanding_c3a96fef-c3d6-4dac-9351-b542995b011a" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_8c503975-fb64-4bd6-bfd1-087f2138a341" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_8c503975-fb64-4bd6-bfd1-087f2138a341" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares_ed2153de-3aac-4817-9c69-685b424dbf79" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodShares"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodShares_ed2153de-3aac-4817-9c69-685b424dbf79" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled_1908d023-d6bf-40c7-9eb4-7851f4fab831" xlink:href="cgnx-20211231.xsd#cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled_1908d023-d6bf-40c7-9eb4-7851f4fab831" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue_8ccf27a9-df54-4f96-abaa-34b9e5ca1b27" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodValue_8ccf27a9-df54-4f96-abaa-34b9e5ca1b27" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareDeclared_ead9538b-5af3-4103-8aca-bed13d7e89d6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockDividendsPerShareDeclared"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_CommonStockDividendsPerShareDeclared_ead9538b-5af3-4103-8aca-bed13d7e89d6" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividends_e6c6918b-1b44-4086-b96f-462042302e7e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsOfDividends"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_PaymentsOfDividends_e6c6918b-1b44-4086-b96f-462042302e7e" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1_4d4be769-2043-4afe-b2bb-cacdd990e9a8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1_4d4be769-2043-4afe-b2bb-cacdd990e9a8" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareCashPaid_4b3a16c5-ed69-4c24-8c22-d6a975fa1cce" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockDividendsPerShareCashPaid"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_CommonStockDividendsPerShareCashPaid_4b3a16c5-ed69-4c24-8c22-d6a975fa1cce" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_318c76ff-2d84-4e4a-97da-1d8a111a5f22" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_318c76ff-2d84-4e4a-97da-1d8a111a5f22" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_c840533b-d698-4a62-829c-50c5c7f78a3c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_c840533b-d698-4a62-829c-50c5c7f78a3c" xlink:type="arc" order="14"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_9ebe8358-e33f-46b3-9b6d-c5646d988cb9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_ShareBasedCompensation_9ebe8358-e33f-46b3-9b6d-c5646d988cb9" xlink:type="arc" order="15"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_34cc74a1-b7db-419a-b8c1-45e1fd8fe9bd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_34cc74a1-b7db-419a-b8c1-45e1fd8fe9bd" xlink:type="arc" order="16"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1_0319d3d6-988b-4e79-a106-8df3f4d1def1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfStockByClassTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementClassOfStockAxis_bc866574-dfbb-486e-9ae8-f29f98d72f64" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementClassOfStockAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:to="loc_us-gaap_StatementClassOfStockAxis_bc866574-dfbb-486e-9ae8-f29f98d72f64" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockDomain_bc866574-dfbb-486e-9ae8-f29f98d72f64_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ClassOfStockDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_StatementClassOfStockAxis_bc866574-dfbb-486e-9ae8-f29f98d72f64" xlink:to="loc_us-gaap_ClassOfStockDomain_bc866574-dfbb-486e-9ae8-f29f98d72f64_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockDomain_5775721f-ea0b-43dc-8614-16726131163b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ClassOfStockDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_StatementClassOfStockAxis_bc866574-dfbb-486e-9ae8-f29f98d72f64" xlink:to="loc_us-gaap_ClassOfStockDomain_5775721f-ea0b-43dc-8614-16726131163b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_f91bfe23-017f-4a19-a1fe-8683e3943469" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockDomain_5775721f-ea0b-43dc-8614-16726131163b" xlink:to="loc_us-gaap_CommonStockMember_f91bfe23-017f-4a19-a1fe-8683e3943469" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramAxis_1d111811-57b7-4473-b643-740af1be0afc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareRepurchaseProgramAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:to="loc_us-gaap_ShareRepurchaseProgramAxis_1d111811-57b7-4473-b643-740af1be0afc" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramDomain_1d111811-57b7-4473-b643-740af1be0afc_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareRepurchaseProgramDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ShareRepurchaseProgramAxis_1d111811-57b7-4473-b643-740af1be0afc" xlink:to="loc_us-gaap_ShareRepurchaseProgramDomain_1d111811-57b7-4473-b643-740af1be0afc_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramDomain_13470b53-5618-4ccc-8d04-b78ed15fc382" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareRepurchaseProgramDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ShareRepurchaseProgramAxis_1d111811-57b7-4473-b643-740af1be0afc" xlink:to="loc_us-gaap_ShareRepurchaseProgramDomain_13470b53-5618-4ccc-8d04-b78ed15fc382" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramOctober2018Member_d7ab6404-f910-42ca-bbf6-f21a571bc7fb" xlink:href="cgnx-20211231.xsd#cgnx_RepurchaseProgramOctober2018Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_13470b53-5618-4ccc-8d04-b78ed15fc382" xlink:to="loc_cgnx_RepurchaseProgramOctober2018Member_d7ab6404-f910-42ca-bbf6-f21a571bc7fb" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramMarch2020Member_41bae8b4-abcd-49aa-b561-9a44a424cf6a" xlink:href="cgnx-20211231.xsd#cgnx_RepurchaseProgramMarch2020Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_13470b53-5618-4ccc-8d04-b78ed15fc382" xlink:to="loc_cgnx_RepurchaseProgramMarch2020Member_41bae8b4-abcd-49aa-b561-9a44a424cf6a" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail" xlink:type="extended" id="i6dc7cd26a0434b26a568eb590bf04844_StockBasedCompensationExpenseAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_51b852b9-08a8-4e94-86c0-5ba26bf2709e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_51b852b9-08a8-4e94-86c0-5ba26bf2709e" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_d5ecd25e-aca2-4dd6-9bfe-6e71c1d28079" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_d5ecd25e-aca2-4dd6-9bfe-6e71c1d28079" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExpirationPeriodOfStockOptionPlan_0edb9472-3826-4ca9-9f90-09584380fa39" xlink:href="cgnx-20211231.xsd#cgnx_ExpirationPeriodOfStockOptionPlan"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_ExpirationPeriodOfStockOptionPlan_0edb9472-3826-4ca9-9f90-09584380fa39" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NumberOfGroupsWithinEmployeePopulation_faa4595f-817c-4627-bd42-f6128f2e64f7" xlink:href="cgnx-20211231.xsd#cgnx_NumberOfGroupsWithinEmployeePopulation"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_NumberOfGroupsWithinEmployeePopulation_faa4595f-817c-4627-bd42-f6128f2e64f7" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_0d9b210a-5bbb-48c1-84a6-d71f2bd1781d" xlink:href="cgnx-20211231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_0d9b210a-5bbb-48c1-84a6-d71f2bd1781d" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_dd98520b-7adc-4fbc-8092-87c888de3a25" xlink:href="cgnx-20211231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_dd98520b-7adc-4fbc-8092-87c888de3a25" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_4b70385f-b4cf-4a78-a5b6-0fb1e73dc7ae" xlink:href="cgnx-20211231.xsd#cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_4b70385f-b4cf-4a78-a5b6-0fb1e73dc7ae" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_4a87f1df-c6a5-4675-8f75-945d0af9df49" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_4a87f1df-c6a5-4675-8f75-945d0af9df49" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_56982159-e3a5-40f0-bc03-db02e7784599" xlink:href="cgnx-20211231.xsd#cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_56982159-e3a5-40f0-bc03-db02e7784599" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_84979a49-5182-42ce-a80d-7c0b57de0237" xlink:href="cgnx-20211231.xsd#cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_84979a49-5182-42ce-a80d-7c0b57de0237" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_3eb94926-974c-4a1c-9843-1a1047c1b508" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_3eb94926-974c-4a1c-9843-1a1047c1b508" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_ffb8d5aa-ac07-438f-8952-975bd1b3b1a2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_ffb8d5aa-ac07-438f-8952-975bd1b3b1a2" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_68bac357-83fb-482b-923c-3ec8839e0951" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_68bac357-83fb-482b-923c-3ec8839e0951" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_bf961201-efb4-4601-8a25-0d2eb8c0d1f4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_bf961201-efb4-4601-8a25-0d2eb8c0d1f4" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_0f1a9152-5381-4603-b387-07bd4ee10abf" xlink:href="cgnx-20211231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_0f1a9152-5381-4603-b387-07bd4ee10abf" xlink:type="arc" order="14"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_b50e567f-1034-470c-9cb8-2d152cc061d3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_b50e567f-1034-470c-9cb8-2d152cc061d3" xlink:type="arc" order="15"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_340bd093-f2ac-498a-85f4-fa2c248851f8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_340bd093-f2ac-498a-85f4-fa2c248851f8" xlink:type="arc" order="16"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_49c21e4f-2063-42e9-88ae-61248ce56c0d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensation_49c21e4f-2063-42e9-88ae-61248ce56c0d" xlink:type="arc" order="17"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_1e478b52-4b85-49a5-83bb-40bfbc36ebe1" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:to="loc_srt_RangeAxis_1e478b52-4b85-49a5-83bb-40bfbc36ebe1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_1e478b52-4b85-49a5-83bb-40bfbc36ebe1_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_1e478b52-4b85-49a5-83bb-40bfbc36ebe1" xlink:to="loc_srt_RangeMember_1e478b52-4b85-49a5-83bb-40bfbc36ebe1_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_7f6e60ed-eee6-46d0-b35b-cc1245a26d47" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_1e478b52-4b85-49a5-83bb-40bfbc36ebe1" xlink:to="loc_srt_RangeMember_7f6e60ed-eee6-46d0-b35b-cc1245a26d47" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_4c323de6-552a-483e-a3a1-aa8ff2662309" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_7f6e60ed-eee6-46d0-b35b-cc1245a26d47" xlink:to="loc_srt_MinimumMember_4c323de6-552a-483e-a3a1-aa8ff2662309" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_bccf818f-e5a3-4cf5-bb6b-386ce73f2f69" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_7f6e60ed-eee6-46d0-b35b-cc1245a26d47" xlink:to="loc_srt_MaximumMember_bccf818f-e5a3-4cf5-bb6b-386ce73f2f69" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_24ee3889-f748-492b-81ca-0685bdbbeb03" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:to="loc_us-gaap_AwardTypeAxis_24ee3889-f748-492b-81ca-0685bdbbeb03" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_24ee3889-f748-492b-81ca-0685bdbbeb03_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_24ee3889-f748-492b-81ca-0685bdbbeb03" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_24ee3889-f748-492b-81ca-0685bdbbeb03_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_24ee3889-f748-492b-81ca-0685bdbbeb03" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_60f8ca2c-7f32-4582-98c4-eaed628210c8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:to="loc_us-gaap_EmployeeStockOptionMember_60f8ca2c-7f32-4582-98c4-eaed628210c8" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PerformanceSharesMember_79c87cc6-310f-4eeb-9b65-8341fe071c70" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:to="loc_us-gaap_PerformanceSharesMember_79c87cc6-310f-4eeb-9b65-8341fe071c70" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockUnitsRSUMember_6eb944a9-8cda-4cda-8377-b007b5c2205b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockUnitsRSUMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:to="loc_us-gaap_RestrictedStockUnitsRSUMember_6eb944a9-8cda-4cda-8377-b007b5c2205b" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" xlink:type="extended" id="i12cf475e7f704add9d71f5e1a2e6c0cd_StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_d64ae820-26de-4aaf-8b2b-9142e4568d87" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_d64ae820-26de-4aaf-8b2b-9142e4568d87" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_889895f3-3d67-4a67-bf4b-d89ce30ea8a2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_889895f3-3d67-4a67-bf4b-d89ce30ea8a2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_9c077c86-82a1-4a1a-b467-f2a46586c082" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_9c077c86-82a1-4a1a-b467-f2a46586c082" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_a74dff4a-fc7d-470c-858b-a4078e803415" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_a74dff4a-fc7d-470c-858b-a4078e803415" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_8af1486f-01dd-4f2f-8cfb-4e303f90ac79" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_8af1486f-01dd-4f2f-8cfb-4e303f90ac79" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_bcc8afc9-076d-498f-ae0a-8a387099a7a5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_8af1486f-01dd-4f2f-8cfb-4e303f90ac79" xlink:to="loc_us-gaap_AwardTypeAxis_bcc8afc9-076d-498f-ae0a-8a387099a7a5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_bcc8afc9-076d-498f-ae0a-8a387099a7a5_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_bcc8afc9-076d-498f-ae0a-8a387099a7a5" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_bcc8afc9-076d-498f-ae0a-8a387099a7a5_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6f61eda2-b5e4-413c-817b-1857a7547313" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_bcc8afc9-076d-498f-ae0a-8a387099a7a5" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6f61eda2-b5e4-413c-817b-1857a7547313" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_d97ac1a4-7aad-422d-a4ec-a823fedcf162" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6f61eda2-b5e4-413c-817b-1857a7547313" xlink:to="loc_us-gaap_RestrictedStockMember_d97ac1a4-7aad-422d-a4ec-a823fedcf162" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_7e36cb9e-c3fa-4843-b452-248d07b638d2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6f61eda2-b5e4-413c-817b-1857a7547313" xlink:to="loc_us-gaap_EmployeeStockOptionMember_7e36cb9e-c3fa-4843-b452-248d07b638d2" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" xlink:type="extended" id="ia896603ef38f47a494045c46edc6041e_StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_6b5135a9-6e49-471a-87b8-3e5c81b6ea11" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_6b5135a9-6e49-471a-87b8-3e5c81b6ea11" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_6b5f25b3-4ab0-43fa-a2fa-3eecd041197b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_6b5f25b3-4ab0-43fa-a2fa-3eecd041197b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_35dd356b-b3e9-46a5-845c-0e869a2f665c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_35dd356b-b3e9-46a5-845c-0e869a2f665c" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_acc9d41a-6de0-45fd-931a-1a59cee15e0b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_acc9d41a-6de0-45fd-931a-1a59cee15e0b" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_83ef7145-3ed1-4ab2-975b-c4eeeb887da4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_83ef7145-3ed1-4ab2-975b-c4eeeb887da4" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_28820de6-4f8f-4d6d-aee0-8b112206c8c1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_6b5135a9-6e49-471a-87b8-3e5c81b6ea11" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_e1a2b60a-d48d-4ff2-b96d-31122dd2f035" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_e1a2b60a-d48d-4ff2-b96d-31122dd2f035" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_10c47237-7277-4927-978f-dca98ee6ff84" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_10c47237-7277-4927-978f-dca98ee6ff84" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_54be6353-6d84-4dad-8bb1-5be87caeac47" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_54be6353-6d84-4dad-8bb1-5be87caeac47" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_1cda5ba1-a2bc-4461-ac8a-d2160061027c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_1cda5ba1-a2bc-4461-ac8a-d2160061027c" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_3ea35689-4325-41d0-948c-07867c9cb01a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_2b63fd14-033c-4943-8f9e-ef04c30cdd09" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_6b5135a9-6e49-471a-87b8-3e5c81b6ea11" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_2b63fd14-033c-4943-8f9e-ef04c30cdd09" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_448ff42d-13f2-49a7-bf56-a7fabd23077f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_2b63fd14-033c-4943-8f9e-ef04c30cdd09" xlink:to="loc_us-gaap_AwardTypeAxis_448ff42d-13f2-49a7-bf56-a7fabd23077f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_448ff42d-13f2-49a7-bf56-a7fabd23077f_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_448ff42d-13f2-49a7-bf56-a7fabd23077f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_448ff42d-13f2-49a7-bf56-a7fabd23077f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f84a8e61-1985-4164-a004-c0028c3f56e7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_448ff42d-13f2-49a7-bf56-a7fabd23077f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f84a8e61-1985-4164-a004-c0028c3f56e7" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_17c47bd1-1d52-4f9c-9484-84d63e4db0b7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f84a8e61-1985-4164-a004-c0028c3f56e7" xlink:to="loc_us-gaap_RestrictedStockMember_17c47bd1-1d52-4f9c-9484-84d63e4db0b7" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" xlink:type="extended" id="icc21846c904a4f7899ff9626683dadb8_StockBasedCompensationExpenseStockBasedCompensationExpenseDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_0e95ce10-33b6-4111-9416-b23642105268" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_0e95ce10-33b6-4111-9416-b23642105268" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_a75d68c5-6e1d-4328-961f-d1a0592ca038" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_a75d68c5-6e1d-4328-961f-d1a0592ca038" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_6666da91-b030-441c-a0f3-0f1ec3ec423f" xlink:href="cgnx-20211231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:to="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_6666da91-b030-441c-a0f3-0f1ec3ec423f" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b28e354f-2372-4dac-9e30-82f2627f6789" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:to="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b28e354f-2372-4dac-9e30-82f2627f6789" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_e9c27198-84ba-455b-973e-3afe4789acca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b28e354f-2372-4dac-9e30-82f2627f6789" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_e9c27198-84ba-455b-973e-3afe4789acca" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_e9c27198-84ba-455b-973e-3afe4789acca_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_e9c27198-84ba-455b-973e-3afe4789acca" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_e9c27198-84ba-455b-973e-3afe4789acca_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_e9c27198-84ba-455b-973e-3afe4789acca" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductCostOfRevenueMember_08590647-31f0-4efc-9b88-16f7dd650849" xlink:href="cgnx-20211231.xsd#cgnx_ProductCostOfRevenueMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:to="loc_cgnx_ProductCostOfRevenueMember_08590647-31f0-4efc-9b88-16f7dd650849" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpenseMember_b84b7358-f521-4696-99d9-8aca04421698" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpenseMember_b84b7358-f521-4696-99d9-8aca04421698" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SellingGeneralAndAdministrativeMember_69e8c8f5-1456-4cf7-8e5b-6a7bec929486" xlink:href="cgnx-20211231.xsd#cgnx_SellingGeneralAndAdministrativeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:to="loc_cgnx_SellingGeneralAndAdministrativeMember_69e8c8f5-1456-4cf7-8e5b-6a7bec929486" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesAdditionalInformationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails" xlink:type="extended" id="i382fa94eab9d4140844acaa812ae175f_IncomeTaxesAdditionalInformationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_15c0e823-ec92-4215-bacc-a1c089204372" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_15c0e823-ec92-4215-bacc-a1c089204372" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_61012971-ef8c-444c-b889-bb21add99cf1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_61012971-ef8c-444c-b889-bb21add99cf1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_1db70936-5ed9-48c1-bad2-f85f0ed48fc3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_1db70936-5ed9-48c1-bad2-f85f0ed48fc3" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange_ff167cbc-e511-4423-bda7-6c8de8ae3349" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsForeignTaxStructureChange"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange_ff167cbc-e511-4423-bda7-6c8de8ae3349" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_9c6437f1-99a7-4d9c-a59c-80345ddfa401" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_9c6437f1-99a7-4d9c-a59c-80345ddfa401" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_49be7a39-3bda-46e0-a31d-0207f1ff700b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_49be7a39-3bda-46e0-a31d-0207f1ff700b" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_273b275e-f90a-4639-b1b0-38a815b5b92b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_273b275e-f90a-4639-b1b0-38a815b5b92b" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_fc948cd0-38bf-4735-8138-270693100b86" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_fc948cd0-38bf-4735-8138-270693100b86" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_b548a124-9033-48f1-894c-e19d4720f69c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Cash"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_Cash_b548a124-9033-48f1-894c-e19d4720f69c" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_751cb059-7097-4564-93f3-308d7647a2e8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_751cb059-7097-4564-93f3-308d7647a2e8" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_9fd9600a-f65c-40c4-bfca-f5b86e9e16a9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_9fd9600a-f65c-40c4-bfca-f5b86e9e16a9" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_40c608aa-70e4-49bc-adbe-f16835138bda" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_40c608aa-70e4-49bc-adbe-f16835138bda" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_67316d7d-3080-464e-a193-82fd08ad315f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_67316d7d-3080-464e-a193-82fd08ad315f" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_56437cf4-56fa-4767-8ba0-ce01fda8393e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_56437cf4-56fa-4767-8ba0-ce01fda8393e" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_141aebe0-b85b-41f2-8671-ec0811aa734e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_141aebe0-b85b-41f2-8671-ec0811aa734e" xlink:type="arc" order="14"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_55fbcc42-284c-436b-b8fd-d684eca70e02" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilityForUncertainTaxPositionsNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_55fbcc42-284c-436b-b8fd-d684eca70e02" xlink:type="arc" order="15"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_cac019d8-80b4-41ff-b0d9-d6665bec6822" xlink:href="cgnx-20211231.xsd#cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_cac019d8-80b4-41ff-b0d9-d6665bec6822" xlink:type="arc" order="16"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_3e0a3810-15a5-4f06-b265-90961d0fccd6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_3e0a3810-15a5-4f06-b265-90961d0fccd6" xlink:type="arc" order="17"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_ef90fbe3-7502-43c1-8cc4-f631e80203cd" xlink:href="cgnx-20211231.xsd#cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_ef90fbe3-7502-43c1-8cc4-f631e80203cd" xlink:type="arc" order="18"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_738304f1-73ad-4499-bd3c-aca33c840320" xlink:href="cgnx-20211231.xsd#cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_738304f1-73ad-4499-bd3c-aca33c840320" xlink:type="arc" order="19"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_f53e40b2-9269-49d6-904a-c989c018c31e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_f53e40b2-9269-49d6-904a-c989c018c31e" xlink:type="arc" order="20"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_23b167de-c2cb-43e0-a3fd-5ddefd7efbcb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_23b167de-c2cb-43e0-a3fd-5ddefd7efbcb" xlink:type="arc" order="21"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxesPaidNet_7e6ac186-8800-4d7d-ab9c-24afe1f94ecc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxesPaidNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeTaxesPaidNet_7e6ac186-8800-4d7d-ab9c-24afe1f94ecc" xlink:type="arc" order="22"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_88a8c8e1-61e6-4880-9565-397e19e06278" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxReconciliationTaxSettlementsForeign"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_88a8c8e1-61e6-4880-9565-397e19e06278" xlink:type="arc" order="23"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_1a32bcd5-84e8-45a1-94c3-49a2aff1366d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_1a32bcd5-84e8-45a1-94c3-49a2aff1366d" xlink:type="arc" order="24"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_UnrecognizedTaxBenefitsGross_e5635eab-1af1-46ff-8042-4159161d30c0" xlink:href="cgnx-20211231.xsd#cgnx_UnrecognizedTaxBenefitsGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_UnrecognizedTaxBenefitsGross_e5635eab-1af1-46ff-8042-4159161d30c0" xlink:type="arc" order="25"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_6c8f6b58-bad9-430e-9707-27d44fe4c4c9" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_6c8f6b58-bad9-430e-9707-27d44fe4c4c9" xlink:type="arc" order="26"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_68a28059-8bce-4619-861d-43bfe9d759df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_68a28059-8bce-4619-861d-43bfe9d759df" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_68a28059-8bce-4619-861d-43bfe9d759df_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_68a28059-8bce-4619-861d-43bfe9d759df" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_68a28059-8bce-4619-861d-43bfe9d759df_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_abc786e3-47eb-4e04-b597-c480dd8689e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_68a28059-8bce-4619-861d-43bfe9d759df" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_abc786e3-47eb-4e04-b597-c480dd8689e4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_0f72a727-6125-4a32-a575-7e46b6d6dc63" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_abc786e3-47eb-4e04-b597-c480dd8689e4" xlink:to="loc_cgnx_SualabCo.Ltd.Member_0f72a727-6125-4a32-a575-7e46b6d6dc63" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityAxis_b0336b8c-be9f-4230-be7d-a6fb9b414d04" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_IncomeTaxAuthorityAxis_b0336b8c-be9f-4230-be7d-a6fb9b414d04" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_b0336b8c-be9f-4230-be7d-a6fb9b414d04_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis_b0336b8c-be9f-4230-be7d-a6fb9b414d04" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_b0336b8c-be9f-4230-be7d-a6fb9b414d04_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_3428bab4-4399-4f0c-a5a8-1441644909a3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis_b0336b8c-be9f-4230-be7d-a6fb9b414d04" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_3428bab4-4399-4f0c-a5a8-1441644909a3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCountryMember_505ca4e3-c5ba-4712-bd25-9b20c5f10d1b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCountryMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_3428bab4-4399-4f0c-a5a8-1441644909a3" xlink:to="loc_us-gaap_ForeignCountryMember_505ca4e3-c5ba-4712-bd25-9b20c5f10d1b" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DomesticCountryMember_4314b2d4-4448-4bf6-b311-2175453bcc60" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DomesticCountryMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_3428bab4-4399-4f0c-a5a8-1441644909a3" xlink:to="loc_us-gaap_DomesticCountryMember_4314b2d4-4448-4bf6-b311-2175453bcc60" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameAxis_db930d3f-a7d7-409a-8e3c-3a6096950355" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityNameAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameAxis_db930d3f-a7d7-409a-8e3c-3a6096950355" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameDomain_db930d3f-a7d7-409a-8e3c-3a6096950355_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameAxis_db930d3f-a7d7-409a-8e3c-3a6096950355" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameDomain_db930d3f-a7d7-409a-8e3c-3a6096950355_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameAxis_db930d3f-a7d7-409a-8e3c-3a6096950355" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueCommissionersIrelandMember_b5fbea0c-aeb8-43e8-9dc7-ff47ee161ee3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueCommissionersIrelandMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:to="loc_us-gaap_RevenueCommissionersIrelandMember_b5fbea0c-aeb8-43e8-9dc7-ff47ee161ee3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StateAdministrationOfTaxationChinaMember_d6382a4e-020c-4670-9cdb-cb8f5a30379a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StateAdministrationOfTaxationChinaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:to="loc_us-gaap_StateAdministrationOfTaxationChinaMember_d6382a4e-020c-4670-9cdb-cb8f5a30379a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_KP_3469b8b2-10dc-40b6-8292-072e8c941360" xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_KP"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:to="loc_country_KP_3469b8b2-10dc-40b6-8292-072e8c941360" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAxis_55c44f53-cc4b-489e-b159-0b7a52808cfd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_TaxCreditCarryforwardAxis_55c44f53-cc4b-489e-b159-0b7a52808cfd" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardNameDomain_55c44f53-cc4b-489e-b159-0b7a52808cfd_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_TaxCreditCarryforwardAxis_55c44f53-cc4b-489e-b159-0b7a52808cfd" xlink:to="loc_us-gaap_TaxCreditCarryforwardNameDomain_55c44f53-cc4b-489e-b159-0b7a52808cfd_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardNameDomain_442e8e1e-5f59-4444-9879-bed252f27102" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_TaxCreditCarryforwardAxis_55c44f53-cc4b-489e-b159-0b7a52808cfd" xlink:to="loc_us-gaap_TaxCreditCarryforwardNameDomain_442e8e1e-5f59-4444-9879-bed252f27102" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchMember_61e09b99-b67e-4434-95e9-af5ee7dac811" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardNameDomain_442e8e1e-5f59-4444-9879-bed252f27102" xlink:to="loc_us-gaap_ResearchMember_61e09b99-b67e-4434-95e9-af5ee7dac811" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StateResearchAndExperimentationMember_47ca1a08-090d-4a1c-8c3b-9b04348a97af" xlink:href="cgnx-20211231.xsd#cgnx_StateResearchAndExperimentationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardNameDomain_442e8e1e-5f59-4444-9879-bed252f27102" xlink:to="loc_cgnx_StateResearchAndExperimentationMember_47ca1a08-090d-4a1c-8c3b-9b04348a97af" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsAxis_8e088969-befa-4cc9-9f33-6c2d0c507c68" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxItemsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_cgnx_DiscreteTaxItemsAxis_8e088969-befa-4cc9-9f33-6c2d0c507c68" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsDomain_8e088969-befa-4cc9-9f33-6c2d0c507c68_default" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxItemsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_cgnx_DiscreteTaxItemsAxis_8e088969-befa-4cc9-9f33-6c2d0c507c68" xlink:to="loc_cgnx_DiscreteTaxItemsDomain_8e088969-befa-4cc9-9f33-6c2d0c507c68_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxItemsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_cgnx_DiscreteTaxItemsAxis_8e088969-befa-4cc9-9f33-6c2d0c507c68" xlink:to="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_508074c0-d410-4a2f-bcc2-c3428f38b047" xlink:href="cgnx-20211231.xsd#cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:to="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_508074c0-d410-4a2f-bcc2-c3428f38b047" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_9f04c387-82d2-4a8d-90e1-911a6d12be8c" xlink:href="cgnx-20211231.xsd#cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:to="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_9f04c387-82d2-4a8d-90e1-911a6d12be8c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_c71de0ad-4f5b-48fd-be16-ab43ae2722e5" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:to="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_c71de0ad-4f5b-48fd-be16-ab43ae2722e5" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesScheduleofChangeinAccountingPolicyDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails" xlink:type="extended" id="idd1eb500f602402cbd59d22d9128ee26_IncomeTaxesScheduleofChangeinAccountingPolicyDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_cf3e82bf-c2e6-4ac3-8fdf-3894bd019f50" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_cf3e82bf-c2e6-4ac3-8fdf-3894bd019f50" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_e2864bdc-a81a-4140-99f7-884b8ef0271c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_e2864bdc-a81a-4140-99f7-884b8ef0271c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_d035c95c-41ea-4939-8bea-2f37ea111b30" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_NetIncomeLoss_d035c95c-41ea-4939-8bea-2f37ea111b30" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_c1639d3a-4293-4c2b-a2c8-8148b6001f50" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_EarningsPerShareBasic_c1639d3a-4293-4c2b-a2c8-8148b6001f50" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_f9eaf5cd-3727-44a0-8641-bdb0d3cb0362" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_EarningsPerShareDiluted_f9eaf5cd-3727-44a0-8641-bdb0d3cb0362" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross_4d429ed4-cde2-4836-a894-87bd1efd9147" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_DeferredTaxAssetsGross_4d429ed4-cde2-4836-a894-87bd1efd9147" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_d7ba9bd9-bc0f-44b5-809f-8ac0f74c0be8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_d7ba9bd9-bc0f-44b5-809f-8ac0f74c0be8" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_d4af5e6d-25df-42c8-89f1-826163ae068f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_d4af5e6d-25df-42c8-89f1-826163ae068f" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfChangeInAccountingEstimateTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAxis_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:to="loc_srt_RestatementAxis_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementDomain_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RestatementAxis_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9" xlink:to="loc_srt_RestatementDomain_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementDomain_1b1b9643-a75c-4fcf-a370-b5a1c082d67e" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RestatementAxis_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9" xlink:to="loc_srt_RestatementDomain_1b1b9643-a75c-4fcf-a370-b5a1c082d67e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ScenarioPreviouslyReportedMember_1b488947-25b5-46d2-bc77-4bc28b8e912d" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioPreviouslyReportedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RestatementDomain_1b1b9643-a75c-4fcf-a370-b5a1c082d67e" xlink:to="loc_srt_ScenarioPreviouslyReportedMember_1b488947-25b5-46d2-bc77-4bc28b8e912d" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAdjustmentMember_426122fd-b14f-4479-8f4e-ce0eb66a59a6" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementAdjustmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RestatementDomain_1b1b9643-a75c-4fcf-a370-b5a1c082d67e" xlink:to="loc_srt_RestatementAdjustmentMember_426122fd-b14f-4479-8f4e-ce0eb66a59a6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_2040d048-aa61-4972-84f7-b95712f4dddb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:to="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_2040d048-aa61-4972-84f7-b95712f4dddb" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_2040d048-aa61-4972-84f7-b95712f4dddb_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_2040d048-aa61-4972-84f7-b95712f4dddb" xlink:to="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_2040d048-aa61-4972-84f7-b95712f4dddb_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_f07f80e2-4664-4a9a-894c-8f150c7d5fa7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_2040d048-aa61-4972-84f7-b95712f4dddb" xlink:to="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_f07f80e2-4664-4a9a-894c-8f150c7d5fa7" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_cd85cd78-ae7f-4fbc-b00b-0ccdff30d0b8" xlink:href="cgnx-20211231.xsd#cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_f07f80e2-4664-4a9a-894c-8f150c7d5fa7" xlink:to="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_cd85cd78-ae7f-4fbc-b00b-0ccdff30d0b8" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#WeightedAverageSharesAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail" xlink:type="extended" id="i9c1621b55d814d20a0aee3cac8ab1785_WeightedAverageSharesAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_9380218e-5b89-43c2-87d9-4b5619171323" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_a9ee44e1-10bb-4b67-bc35-c631d5e5b83f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_9380218e-5b89-43c2-87d9-4b5619171323" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_a9ee44e1-10bb-4b67-bc35-c631d5e5b83f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_ddf55955-875f-4eb1-943e-2310874c65b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_9380218e-5b89-43c2-87d9-4b5619171323" xlink:to="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_ddf55955-875f-4eb1-943e-2310874c65b2" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_afb96d72-188a-4b95-9f1b-e3431a6eecb8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_ddf55955-875f-4eb1-943e-2310874c65b2" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_afb96d72-188a-4b95-9f1b-e3431a6eecb8" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesNameDomain_afb96d72-188a-4b95-9f1b-e3431a6eecb8_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_afb96d72-188a-4b95-9f1b-e3431a6eecb8" xlink:to="loc_us-gaap_AntidilutiveSecuritiesNameDomain_afb96d72-188a-4b95-9f1b-e3431a6eecb8_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesNameDomain_570af037-ff46-4f3e-8fb6-29de836e5bcb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_afb96d72-188a-4b95-9f1b-e3431a6eecb8" xlink:to="loc_us-gaap_AntidilutiveSecuritiesNameDomain_570af037-ff46-4f3e-8fb6-29de836e5bcb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_f7d4dd97-3969-41b6-9c1c-abdd750254ef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AntidilutiveSecuritiesNameDomain_570af037-ff46-4f3e-8fb6-29de836e5bcb" xlink:to="loc_us-gaap_EmployeeStockOptionMember_f7d4dd97-3969-41b6-9c1c-abdd750254ef" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_43aee338-22c5-4176-9ca9-595b04ea0f8c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AntidilutiveSecuritiesNameDomain_570af037-ff46-4f3e-8fb6-29de836e5bcb" xlink:to="loc_us-gaap_RestrictedStockMember_43aee338-22c5-4176-9ca9-595b04ea0f8c" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SegmentandGeographicInformationAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail" xlink:type="extended" id="ic3467a60fd7c45149f9f301df5558688_SegmentandGeographicInformationAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskLineItems_7f4d3507-4926-40f2-88be-34d22e2d605a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments_2dfb47dd-008e-4fed-8701-bf10c713bff4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NumberOfReportableSegments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_7f4d3507-4926-40f2-88be-34d22e2d605a" xlink:to="loc_us-gaap_NumberOfReportableSegments_2dfb47dd-008e-4fed-8701-bf10c713bff4" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_ea6a5d65-2d78-4d7f-b154-865cd3614114" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_7f4d3507-4926-40f2-88be-34d22e2d605a" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_ea6a5d65-2d78-4d7f-b154-865cd3614114" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_7f4d3507-4926-40f2-88be-34d22e2d605a" xlink:to="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:to="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_706e6f6c-88ae-4d02-910a-d314da4fbe77" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_706e6f6c-88ae-4d02-910a-d314da4fbe77" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesRevenueNetMember_8be124c7-ce49-4b3d-a9d4-8a52a3a8a053" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SalesRevenueNetMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_706e6f6c-88ae-4d02-910a-d314da4fbe77" xlink:to="loc_us-gaap_SalesRevenueNetMember_8be124c7-ce49-4b3d-a9d4-8a52a3a8a053" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableMember_710decd7-8c45-484a-b235-fb89d1869fa2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_706e6f6c-88ae-4d02-910a-d314da4fbe77" xlink:to="loc_us-gaap_AccountsReceivableMember_710decd7-8c45-484a-b235-fb89d1869fa2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByTypeAxis_c42eb380-759d-4d0b-9214-20f4cee250b5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:to="loc_us-gaap_ConcentrationRiskByTypeAxis_c42eb380-759d-4d0b-9214-20f4cee250b5" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_c42eb380-759d-4d0b-9214-20f4cee250b5_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis_c42eb380-759d-4d0b-9214-20f4cee250b5" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_c42eb380-759d-4d0b-9214-20f4cee250b5_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_d47f5cb1-566e-4fb7-ab78-1e8c84043d90" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis_c42eb380-759d-4d0b-9214-20f4cee250b5" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_d47f5cb1-566e-4fb7-ab78-1e8c84043d90" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerConcentrationRiskMember_fc7260e5-c430-42e4-81c3-15aba1d56cca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CustomerConcentrationRiskMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskTypeDomain_d47f5cb1-566e-4fb7-ab78-1e8c84043d90" xlink:to="loc_us-gaap_CustomerConcentrationRiskMember_fc7260e5-c430-42e4-81c3-15aba1d56cca" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MajorCustomersAxis_f3edf0ac-2ad9-499d-a000-0499000f72a6" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MajorCustomersAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:to="loc_srt_MajorCustomersAxis_f3edf0ac-2ad9-499d-a000-0499000f72a6" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_f3edf0ac-2ad9-499d-a000-0499000f72a6_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_MajorCustomersAxis_f3edf0ac-2ad9-499d-a000-0499000f72a6" xlink:to="loc_srt_NameOfMajorCustomerDomain_f3edf0ac-2ad9-499d-a000-0499000f72a6_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_f54ce8e0-e325-4200-bc78-496d4cd2218a" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_MajorCustomersAxis_f3edf0ac-2ad9-499d-a000-0499000f72a6" xlink:to="loc_srt_NameOfMajorCustomerDomain_f54ce8e0-e325-4200-bc78-496d4cd2218a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer2Member_8752c11d-0c51-4b15-9ac6-85119f5b3336" xlink:href="cgnx-20211231.xsd#cgnx_Customer2Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_NameOfMajorCustomerDomain_f54ce8e0-e325-4200-bc78-496d4cd2218a" xlink:to="loc_cgnx_Customer2Member_8752c11d-0c51-4b15-9ac6-85119f5b3336" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer1Member_f5e05239-1cb1-4c84-8e7e-97e552ec7781" xlink:href="cgnx-20211231.xsd#cgnx_Customer1Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_NameOfMajorCustomerDomain_f54ce8e0-e325-4200-bc78-496d4cd2218a" xlink:to="loc_cgnx_Customer1Member_f5e05239-1cb1-4c84-8e7e-97e552ec7781" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" xlink:type="extended" id="ic9cd1df5e1ec4579b6ae5dce8c589401_SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_5ac0d43e-a680-499b-9725-2dd540cc76b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_5ac0d43e-a680-499b-9725-2dd540cc76b2" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncurrentAssets_dc25c52e-e8c4-448d-b4ae-8ea6a854be3e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncurrentAssets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_NoncurrentAssets_dc25c52e-e8c4-448d-b4ae-8ea6a854be3e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments_f44ffc64-1c40-4a74-a620-c92ed869d902" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NumberOfReportableSegments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_NumberOfReportableSegments_f44ffc64-1c40-4a74-a620-c92ed869d902" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_f2040cb2-6a4a-42bc-aece-337075709664" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_f2040cb2-6a4a-42bc-aece-337075709664" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_3aa62a65-1f57-4da1-9c42-8640e1841dcf" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_3aa62a65-1f57-4da1-9c42-8640e1841dcf" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_5b30e381-b96c-40ee-92fa-b143222f49cb" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_3aa62a65-1f57-4da1-9c42-8640e1841dcf" xlink:to="loc_srt_StatementGeographicalAxis_5b30e381-b96c-40ee-92fa-b143222f49cb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_5b30e381-b96c-40ee-92fa-b143222f49cb_default" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_5b30e381-b96c-40ee-92fa-b143222f49cb" xlink:to="loc_srt_SegmentGeographicalDomain_5b30e381-b96c-40ee-92fa-b143222f49cb_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_5b30e381-b96c-40ee-92fa-b143222f49cb" xlink:to="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_US_2c0b0e66-736d-4039-b5e4-8a4a135b7020" xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_US"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:to="loc_country_US_2c0b0e66-736d-4039-b5e4-8a4a135b7020" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_e217e75c-a352-4266-80c6-0144221f2703" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:to="loc_srt_EuropeMember_e217e75c-a352-4266-80c6-0144221f2703" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember_4a964c3b-9b8a-4dbb-8968-73244b4c4368" xlink:href="cgnx-20211231.xsd#cgnx_GreaterChinaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:to="loc_cgnx_GreaterChinaMember_4a964c3b-9b8a-4dbb-8968-73244b4c4368" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherGeographicAreaMember_fe2bc44c-a5da-4cfa-a8ad-ba98f8f5cb40" xlink:href="cgnx-20211231.xsd#cgnx_OtherGeographicAreaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:to="loc_cgnx_OtherGeographicAreaMember_fe2bc44c-a5da-4cfa-a8ad-ba98f8f5cb40" xlink:type="arc" order="3"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#BusinessAcquisitionsSualabCoLtdNarrativeDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails" xlink:type="extended" id="id71ec07a0c7348569c790354edce7fd2_BusinessAcquisitionsSualabCoLtdNarrativeDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationConsiderationTransferred1_0459bfe6-c777-48de-a8a9-c56cacb9e41e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_BusinessCombinationConsiderationTransferred1_0459bfe6-c777-48de-a8a9-c56cacb9e41e" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesGross_c2069e81-9867-4698-b4b0-fdcc3f0b4a47" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_PaymentsToAcquireBusinessesGross_c2069e81-9867-4698-b4b0-fdcc3f0b4a47" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition_9ab687d5-fa82-4f73-9d0f-3c2d5cc328bf" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForProceedsFromPreviousAcquisition"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition_9ab687d5-fa82-4f73-9d0f-3c2d5cc328bf" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationLiability_24d89e0a-21de-4ee1-aa7f-ff61e8e2036a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationLiability_24d89e0a-21de-4ee1-aa7f-ff61e8e2036a" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_2fecb03a-d46d-4f0d-9455-fb051855b9cd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_2fecb03a-d46d-4f0d-9455-fb051855b9cd" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_6d2f9cc1-4d37-4edc-9b89-12aaff67c6cd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_6d2f9cc1-4d37-4edc-9b89-12aaff67c6cd" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_dabce5a1-70e5-48ff-86c4-c1442e243d37" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_dabce5a1-70e5-48ff-86c4-c1442e243d37" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_dabce5a1-70e5-48ff-86c4-c1442e243d37_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_dabce5a1-70e5-48ff-86c4-c1442e243d37" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_dabce5a1-70e5-48ff-86c4-c1442e243d37_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_30f071b9-e665-434c-a860-4b6ef6632fad" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_dabce5a1-70e5-48ff-86c4-c1442e243d37" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_30f071b9-e665-434c-a860-4b6ef6632fad" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_e1c80431-1b59-4b4c-be44-a4b15ff4a331" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_30f071b9-e665-434c-a860-4b6ef6632fad" xlink:to="loc_cgnx_SualabCo.Ltd.Member_e1c80431-1b59-4b4c-be44-a4b15ff4a331" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c2bb0e47-c201-4c9b-a902-7a12fae72b56" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c2bb0e47-c201-4c9b-a902-7a12fae72b56" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c2bb0e47-c201-4c9b-a902-7a12fae72b56_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c2bb0e47-c201-4c9b-a902-7a12fae72b56" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c2bb0e47-c201-4c9b-a902-7a12fae72b56_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6b7c619c-7454-4870-a550-637e900b0a8d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c2bb0e47-c201-4c9b-a902-7a12fae72b56" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6b7c619c-7454-4870-a550-637e900b0a8d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_d248d348-1a51-435d-b40d-28104a32fa61" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6b7c619c-7454-4870-a550-637e900b0a8d" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_d248d348-1a51-435d-b40d-28104a32fa61" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_35ccf91a-c33c-4be9-a579-b1286c3b9290" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6b7c619c-7454-4870-a550-637e900b0a8d" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_35ccf91a-c33c-4be9-a579-b1286c3b9290" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_0d260ede-007c-41e4-b260-8f6c8ee8f749" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_0d260ede-007c-41e4-b260-8f6c8ee8f749" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_0d260ede-007c-41e4-b260-8f6c8ee8f749_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_0d260ede-007c-41e4-b260-8f6c8ee8f749" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_0d260ede-007c-41e4-b260-8f6c8ee8f749_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_90ffb7a4-de11-40db-82f7-1c7da287c92b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_0d260ede-007c-41e4-b260-8f6c8ee8f749" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_90ffb7a4-de11-40db-82f7-1c7da287c92b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_efc7500e-4d3e-4a40-bc72-a8267f9c74b0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_90ffb7a4-de11-40db-82f7-1c7da287c92b" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_efc7500e-4d3e-4a40-bc72-a8267f9c74b0" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" xlink:type="extended" id="iae3e52ec08dd40f4915f043c6db8f485_RestructuringChargesScheduleofRestructuringandRelatedCostsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_ee49ba84-dd7f-41a7-9a6b-a8e32289fea6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_5ca788f6-6065-453b-9638-746464290922" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_ee49ba84-dd7f-41a7-9a6b-a8e32289fea6" xlink:to="loc_us-gaap_RestructuringCharges_5ca788f6-6065-453b-9638-746464290922" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2f5b9f4f-ede2-4706-a4f9-bab9f14d75ce" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_ee49ba84-dd7f-41a7-9a6b-a8e32289fea6" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2f5b9f4f-ede2-4706-a4f9-bab9f14d75ce" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_07cac83e-19e8-432b-9706-46ee2c8d8bbb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2f5b9f4f-ede2-4706-a4f9-bab9f14d75ce" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_07cac83e-19e8-432b-9706-46ee2c8d8bbb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_07cac83e-19e8-432b-9706-46ee2c8d8bbb_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_07cac83e-19e8-432b-9706-46ee2c8d8bbb" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_07cac83e-19e8-432b-9706-46ee2c8d8bbb_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_07cac83e-19e8-432b-9706-46ee2c8d8bbb" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember_cc21e1f0-c911-4958-ad3d-d334d883d913" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OneTimeTerminationBenefitsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:to="loc_us-gaap_OneTimeTerminationBenefitsMember_cc21e1f0-c911-4958-ad3d-d334d883d913" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_97b1a0f2-21ac-421b-aeb1-3a56fb120237" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:to="loc_us-gaap_ContractTerminationMember_97b1a0f2-21ac-421b-aeb1-3a56fb120237" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember_458111d1-9b87-4f6d-916f-267cc1b041b8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherRestructuringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:to="loc_us-gaap_OtherRestructuringMember_458111d1-9b87-4f6d-916f-267cc1b041b8" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" xlink:type="extended" id="i768550ae76b448798209af58fff03fbf_RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_0e4d964a-07c9-409f-ace7-0aae088b9329" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_0e4d964a-07c9-409f-ace7-0aae088b9329" xlink:to="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_d2894a8e-cced-4b4e-ad75-8cdb5f640eba" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserve"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserve_d2894a8e-cced-4b4e-ad75-8cdb5f640eba" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_0e5a8882-532b-4db1-a7d5-cb03f477cbcb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringCharges_0e5a8882-532b-4db1-a7d5-cb03f477cbcb" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRestructuring_740a5f80-0b43-44df-bfdf-d591fea786a8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRestructuring"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_PaymentsForRestructuring_740a5f80-0b43-44df-bfdf-d591fea786a8" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveSettledWithoutCash2_b5540886-0b4b-4f21-b02f-aee0c5a04c85" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveSettledWithoutCash2"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserveSettledWithoutCash2_b5540886-0b4b-4f21-b02f-aee0c5a04c85" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveAccrualAdjustment1_1e4a2a0b-aa95-4110-a390-13b67aef2012" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveAccrualAdjustment1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserveAccrualAdjustment1_1e4a2a0b-aa95-4110-a390-13b67aef2012" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveTranslationAdjustment_fa6300d6-b005-4fd4-9a3b-2823caa4fc6e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveTranslationAdjustment"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserveTranslationAdjustment_fa6300d6-b005-4fd4-9a3b-2823caa4fc6e" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_6b8cb482-691a-48c1-a2b4-8671ea1f908e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserve"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_0e4d964a-07c9-409f-ace7-0aae088b9329" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_e485cfd8-46cb-4acb-81fa-159ae5e5f1c3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_e485cfd8-46cb-4acb-81fa-159ae5e5f1c3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesMember_8e24adc0-d34c-4042-b6ec-3998091f5dee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_e485cfd8-46cb-4acb-81fa-159ae5e5f1c3" xlink:to="loc_us-gaap_AccruedLiabilitiesMember_8e24adc0-d34c-4042-b6ec-3998091f5dee" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_3f7db50a-96a4-427b-9479-3a7752afc740" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_3f7db50a-96a4-427b-9479-3a7752afc740" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_3f7db50a-96a4-427b-9479-3a7752afc740_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_3f7db50a-96a4-427b-9479-3a7752afc740" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_3f7db50a-96a4-427b-9479-3a7752afc740_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_3f7db50a-96a4-427b-9479-3a7752afc740" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember_1e0f4098-0f47-46cd-a8ff-3502f201dbe9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OneTimeTerminationBenefitsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:to="loc_us-gaap_OneTimeTerminationBenefitsMember_1e0f4098-0f47-46cd-a8ff-3502f201dbe9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_e11fb4b4-622e-4766-a9d8-0a35c79f45ee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:to="loc_us-gaap_ContractTerminationMember_e11fb4b4-622e-4766-a9d8-0a35c79f45ee" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember_845f8015-f289-471e-b335-069b11099743" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherRestructuringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:to="loc_us-gaap_OtherRestructuringMember_845f8015-f289-471e-b335-069b11099743" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SubsequentEventsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SubsequentEventsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SubsequentEventsDetails" xlink:type="extended" id="i6b0dfa7b75144716a8541c7c617bf8de_SubsequentEventsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableAmountPerShare_966eb239-458f-4dac-953f-28a26c933908" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableAmountPerShare"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:to="loc_us-gaap_DividendsPayableAmountPerShare_966eb239-458f-4dac-953f-28a26c933908" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_b7252c38-578e-4ced-8c7f-f8844d8f9fd5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableDateDeclaredDayMonthAndYear"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:to="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_b7252c38-578e-4ced-8c7f-f8844d8f9fd5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_75743ed5-7288-4cf6-8baf-dcc31e03a5c6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableDateOfRecordDayMonthAndYear"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:to="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_75743ed5-7288-4cf6-8baf-dcc31e03a5c6" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTable_895e36e2-2de9-4ce8-a903-cd35d360f0df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:to="loc_us-gaap_SubsequentEventTable_895e36e2-2de9-4ce8-a903-cd35d360f0df" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeAxis_71135895-649c-4f38-8a3a-4eb12142255a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_SubsequentEventTable_895e36e2-2de9-4ce8-a903-cd35d360f0df" xlink:to="loc_us-gaap_SubsequentEventTypeAxis_71135895-649c-4f38-8a3a-4eb12142255a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_71135895-649c-4f38-8a3a-4eb12142255a_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_SubsequentEventTypeAxis_71135895-649c-4f38-8a3a-4eb12142255a" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_71135895-649c-4f38-8a3a-4eb12142255a_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_2152f3a0-28f9-43a4-84dd-4899181752df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_SubsequentEventTypeAxis_71135895-649c-4f38-8a3a-4eb12142255a" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_2152f3a0-28f9-43a4-84dd-4899181752df" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventMember_62f3b05b-bf6a-4b69-9cd1-9dc4ef4ae995" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventTypeDomain_2152f3a0-28f9-43a4-84dd-4899181752df" xlink:to="loc_us-gaap_SubsequentEventMember_62f3b05b-bf6a-4b69-9cd1-9dc4ef4ae995" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#ScheduleIIValuationandQualifyingAccountsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="extended" id="ia90cced964f743d8a27c116c89d2a061_ScheduleIIValuationandQualifyingAccountsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_cf9f8601-305e-4596-9bf8-fc9d3b9e5699" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MovementInValuationAllowancesAndReservesRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_cf9f8601-305e-4596-9bf8-fc9d3b9e5699" xlink:to="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_854a5c6d-3ff4-47e3-96ef-d9f3b220232d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_854a5c6d-3ff4-47e3-96ef-d9f3b220232d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_34b7fc01-865a-4a5b-a9d5-ce8649476828" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_34b7fc01-865a-4a5b-a9d5-ce8649476828" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts_bb0001bc-264f-40cc-bbdf-360dbb61ac49" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts_bb0001bc-264f-40cc-bbdf-360dbb61ac49" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDeductions_95c2b223-a181-4541-9380-a139358a2173" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDeductions"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDeductions_95c2b223-a181-4541-9380-a139358a2173" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesAdjustments_cb1e38c9-20d9-4a1f-8ff3-284d8bb45cef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesAdjustments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesAdjustments_cb1e38c9-20d9-4a1f-8ff3-284d8bb45cef" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_adefdc8d-8a8f-4226-9a65-43a87ddfc8d8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_1397b147-9583-4859-9e99-ed7ee2ed0dc7" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_cf9f8601-305e-4596-9bf8-fc9d3b9e5699" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_1397b147-9583-4859-9e99-ed7ee2ed0dc7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_90ab389c-7472-417d-b006-13bf8d78fcc3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_1397b147-9583-4859-9e99-ed7ee2ed0dc7" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_90ab389c-7472-417d-b006-13bf8d78fcc3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_90ab389c-7472-417d-b006-13bf8d78fcc3_default" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_90ab389c-7472-417d-b006-13bf8d78fcc3" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_90ab389c-7472-417d-b006-13bf8d78fcc3_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_90ab389c-7472-417d-b006-13bf8d78fcc3" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UncollectibleReceivablesMember_dfa18029-86cb-4a5f-91c9-677f5aa134a4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UncollectibleReceivablesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:to="loc_us-gaap_UncollectibleReceivablesMember_dfa18029-86cb-4a5f-91c9-677f5aa134a4" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesReturnsAndAllowancesMember_f9519971-412e-4174-96b6-186555bae1bc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SalesReturnsAndAllowancesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:to="loc_us-gaap_SalesReturnsAndAllowancesMember_f9519971-412e-4174-96b6-186555bae1bc" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_06a91f61-9e92-4156-b3c6-b4bd2c3f0c37" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:to="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_06a91f61-9e92-4156-b3c6-b4bd2c3f0c37" xlink:type="arc" order="2"/>
  </link:definitionLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>12
<FILENAME>cgnx-20211231_lab.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION LABEL LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2022 Workiva-->
<!--r:4878a129-9b80-4a38-a303-2b34e8ac6131,g:f27b0d4b-0a26-4a3f-9754-6435629f6abe-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodStartLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodStartLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/netLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/net-2009-12-16.xsd#netLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedNetLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedNetLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTerseLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedPeriodEndLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedPeriodEndLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedLabel"/>
  <link:roleRef roleURI="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="simple" xlink:href="http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd#negatedTotalLabel"/>
  <link:labelLink xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">
    <link:label id="lab_us-gaap_RevenueCommissionersIrelandMember_34224d51-9466-494f-b08e-f3f49f42626a_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueCommissionersIrelandMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue Commissioners, Ireland [Member]</link:label>
    <link:label id="lab_us-gaap_RevenueCommissionersIrelandMember_label_en-US" xlink:label="lab_us-gaap_RevenueCommissionersIrelandMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue Commissioners, Ireland [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueCommissionersIrelandMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueCommissionersIrelandMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueCommissionersIrelandMember" xlink:to="lab_us-gaap_RevenueCommissionersIrelandMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_NameOfMajorCustomerDomain_4154e349-8a0c-4bcf-b53d-d3b8d3ca4f92_terseLabel_en-US" xlink:label="lab_srt_NameOfMajorCustomerDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer [Domain]</link:label>
    <link:label id="lab_srt_NameOfMajorCustomerDomain_label_en-US" xlink:label="lab_srt_NameOfMajorCustomerDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_NameOfMajorCustomerDomain" xlink:to="lab_srt_NameOfMajorCustomerDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_71145464-9599-4201-986d-c720dcf925f9_terseLabel_en-US" xlink:label="lab_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total intrinsic values of stock options exercised</link:label>
    <link:label id="lab_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_label_en-US" xlink:label="lab_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares Based Compensation Arrangement By Shares Based Payment Award Options Exercised Intrinsic Value</link:label>
    <link:label id="lab_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_documentation_en-US" xlink:label="lab_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares based compensation arrangement by shares based payment award options exercised intrinsic value.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" xlink:href="cgnx-20211231.xsd#cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" xlink:to="lab_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_13fc0940-f17d-4ecd-85bb-41b6d9f55517_terseLabel_en-US" xlink:label="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State</link:label>
    <link:label id="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current State and Local Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:to="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_ec4268a9-e12d-4ab7-b181-3861561bdda4_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vested (in shares)</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_2c0e1471-658e-46e6-b404-22a03b205dba_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vested</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Vested in Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LeaseholdImprovementsMember_f1b99457-1f0d-42fc-9d1d-97082695b364_verboseLabel_en-US" xlink:label="lab_us-gaap_LeaseholdImprovementsMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Leasehold Improvements [Member]</link:label>
    <link:label id="lab_us-gaap_LeaseholdImprovementsMember_label_en-US" xlink:label="lab_us-gaap_LeaseholdImprovementsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Leasehold Improvements [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseholdImprovementsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LeaseholdImprovementsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LeaseholdImprovementsMember" xlink:to="lab_us-gaap_LeaseholdImprovementsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_18553c01-56bf-46ec-90f9-b35127a67a1c_terseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent" xlink:to="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockSharesOutstanding_6c469525-0d4e-4cb7-8110-b7b71a3c8de0_terseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, shares outstanding</link:label>
    <link:label id="lab_us-gaap_PreferredStockSharesOutstanding_label_en-US" xlink:label="lab_us-gaap_PreferredStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Shares Outstanding</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesOutstanding" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockSharesOutstanding" xlink:to="lab_us-gaap_PreferredStockSharesOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_193a8444-a58d-42eb-a548-3641cdf3bc5c_terseLabel_en-US" xlink:label="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property Subject to or Available for Operating Lease [Axis]</link:label>
    <link:label id="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_label_en-US" xlink:label="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property Subject to or Available for Operating Lease [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis" xlink:to="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillDisclosureTextBlock_4ad86d0a-78f2-4df1-ba22-958fd7ad54dd_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill</link:label>
    <link:label id="lab_us-gaap_GoodwillDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_GoodwillDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillDisclosureTextBlock" xlink:to="lab_us-gaap_GoodwillDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherIntangibleAssetsMember_8d2c4c5c-e542-4ac9-8890-e37e756367ae_terseLabel_en-US" xlink:label="lab_us-gaap_OtherIntangibleAssetsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Non-compete Agreements [Member]</link:label>
    <link:label id="lab_us-gaap_OtherIntangibleAssetsMember_label_en-US" xlink:label="lab_us-gaap_OtherIntangibleAssetsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Intangible Assets [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherIntangibleAssetsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherIntangibleAssetsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherIntangibleAssetsMember" xlink:to="lab_us-gaap_OtherIntangibleAssetsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_17c59a8b-87ed-4272-806d-98f8c00b80dd_terseLabel_en-US" xlink:label="lab_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Carrying value of lease assets</link:label>
    <link:label id="lab_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_label_en-US" xlink:label="lab_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Right-Of-Use Asset, Carrying Value Of Impaired Asset</link:label>
    <link:label id="lab_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_documentation_en-US" xlink:label="lab_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Right-Of-Use Asset, Carrying Value Of Impaired Asset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" xlink:href="cgnx-20211231.xsd#cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" xlink:to="lab_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_c6b7c517-6056-488e-bf18-f0d2a26ba809_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unbilled revenue</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Contract with Customer, Asset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerAsset"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:to="lab_us-gaap_IncreaseDecreaseInContractWithCustomerAsset" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeLiabilities_81f97249-beff-4e20-b853-93fce3f7182d_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeLiabilities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net amount of liabilities presented</link:label>
    <link:label id="lab_us-gaap_DerivativeLiabilities_40b21f4c-e393-4d56-b5b9-89e67873d667_totalLabel_en-US" xlink:label="lab_us-gaap_DerivativeLiabilities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net amount of liabilities presented</link:label>
    <link:label id="lab_us-gaap_DerivativeLiabilities_label_en-US" xlink:label="lab_us-gaap_DerivativeLiabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeLiabilities" xlink:to="lab_us-gaap_DerivativeLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DividendsCommonStockCash_ef0aebd6-688f-4ee3-be25-25e6140c7d09_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_DividendsCommonStockCash" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payment of dividends ($0.245 per common share)</link:label>
    <link:label id="lab_us-gaap_DividendsCommonStockCash_label_en-US" xlink:label="lab_us-gaap_DividendsCommonStockCash" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Dividends, Common Stock, Cash</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsCommonStockCash" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsCommonStockCash"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DividendsCommonStockCash" xlink:to="lab_us-gaap_DividendsCommonStockCash" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_SecurityExchangeName_f7542994-c9b4-4992-86a9-53ac30f51159_terseLabel_en-US" xlink:label="lab_dei_SecurityExchangeName" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Security Exchange Name</link:label>
    <link:label id="lab_dei_SecurityExchangeName_label_en-US" xlink:label="lab_dei_SecurityExchangeName" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Security Exchange Name</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SecurityExchangeName" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_SecurityExchangeName"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_SecurityExchangeName" xlink:to="lab_dei_SecurityExchangeName" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings_704c2c1c-0342-4f7c-ae95-0e95c014fd99_terseLabel_en-US" xlink:label="lab_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Credit losses</link:label>
    <link:label id="lab_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings_label_en-US" xlink:label="lab_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other-than-temporary Impairment Loss, Debt Securities, Available-for-sale, Recognized in Earnings</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings" xlink:to="lab_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax_d40aaa86-1a5d-4fc7-ae23-7b093a97a702_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax benefit of foreign currency translation adjustment</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Foreign Currency Translation Adjustment, Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_0afabfd8-60e8-4c55-88e4-3ced54003dd3_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Forfeited or expired, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Forfeitures, Weighted Average Grant Date Fair Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock_d542891f-c0bf-43b1-b253-26b2f85699b9_terseLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Liability</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:to="lab_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_d749062d-1843-40cd-9c27-d8e6948ef5b3_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payment of Chiaro contingent consideration</link:label>
    <link:label id="lab_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_label_en-US" xlink:label="lab_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payment for Contingent Consideration Liability, Financing Activities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities" xlink:to="lab_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_76019d4a-02f4-4be6-8af2-a11f7c5b01c3_terseLabel_en-US" xlink:label="lab_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Compensation expense capitalized</link:label>
    <link:label id="lab_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_label_en-US" xlink:label="lab_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share Based Compensation Recognized Period Costs Capitalized Amount</link:label>
    <link:label id="lab_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_documentation_en-US" xlink:label="lab_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee service share based compensation recognized period costs capitalized amount.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" xlink:href="cgnx-20211231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" xlink:to="lab_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_f1b31376-7eb9-46c7-afc4-c0f54e34b0df_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease, weighted average remaining lease term (years)</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Weighted Average Remaining Lease Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:to="lab_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock_4c10f17e-b61a-4da4-9b00-80cf4f6ec738_terseLabel_en-US" xlink:label="lab_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Currency</link:label>
    <link:label id="lab_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Currency Transactions and Translations Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:to="lab_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_29d5be16-e1bc-4bbd-8359-bd5ec73e70ac_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Share-based Compensation Arrangements by Share-based Payment Award [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Share-based Compensation Arrangements by Share-based Payment Award [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:to="lab_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativesPolicyTextBlock_281a4718-1838-4bfc-b34e-9d82f46c4a66_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments</link:label>
    <link:label id="lab_us-gaap_DerivativesPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_DerivativesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivatives, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativesPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativesPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativesPolicyTextBlock" xlink:to="lab_us-gaap_DerivativesPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_7755edad-e01c-4fea-a2c4-8a62a10b006b_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares available for grant under stock option plans</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ContractTerminationMember_99231d38-c986-4bbc-b674-c866fa237f13_terseLabel_en-US" xlink:label="lab_us-gaap_ContractTerminationMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract Termination [Member]</link:label>
    <link:label id="lab_us-gaap_ContractTerminationMember_label_en-US" xlink:label="lab_us-gaap_ContractTerminationMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract Termination [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ContractTerminationMember" xlink:to="lab_us-gaap_ContractTerminationMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_e706d559-9fb6-4af3-b36a-959705dce8b1_totalLabel_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net change in cash and cash equivalents</link:label>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_label_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:to="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_5133c975-7b74-4ec3-a299-107d28d88bc3_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Expected volatility</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Fair Value Assumptions, Expected Volatility Rate</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseLeaseIncome_f99b8539-7ac6-4bd9-b3be-0d1519138e6b_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLeaseIncome" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease income</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLeaseIncome_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseLeaseIncome" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Lease Income</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLeaseIncome" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLeaseIncome"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseLeaseIncome" xlink:to="lab_us-gaap_OperatingLeaseLeaseIncome" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_47e627fc-b207-49d7-8977-45123790c3ab_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_label_en-US" xlink:label="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward" xlink:to="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_5642c390-b762-4e47-9cf8-d317a3da1f64_terseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued income taxes</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Income Taxes Payable</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:to="lab_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_834de29d-7454-4adf-9a9e-90663a4f9d26_terseLabel_en-US" xlink:label="lab_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Economic hedge forward contracts</link:label>
    <link:label id="lab_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_label_en-US" xlink:label="lab_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Currency Contracts, Liability, Fair Value Disclosure</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure" xlink:to="lab_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxAssetsOtherNoncurrent_f107f9c5-2d19-491b-92ba-af3d3bf813bf_terseLabel_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsOtherNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other</link:label>
    <link:label id="lab_cgnx_DeferredTaxAssetsOtherNoncurrent_label_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsOtherNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets Other Noncurrent</link:label>
    <link:label id="lab_cgnx_DeferredTaxAssetsOtherNoncurrent_documentation_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsOtherNoncurrent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax assets other non current.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsOtherNoncurrent" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsOtherNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DeferredTaxAssetsOtherNoncurrent" xlink:to="lab_cgnx_DeferredTaxAssetsOtherNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GainLossOnDispositionOfAssets1_7e385257-fe5c-4bea-9717-91510bee1700_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_GainLossOnDispositionOfAssets1" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Loss on disposition of property, plant and equipment</link:label>
    <link:label id="lab_us-gaap_GainLossOnDispositionOfAssets1_label_en-US" xlink:label="lab_us-gaap_GainLossOnDispositionOfAssets1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gain (Loss) on Disposition of Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnDispositionOfAssets1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GainLossOnDispositionOfAssets1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GainLossOnDispositionOfAssets1" xlink:to="lab_us-gaap_GainLossOnDispositionOfAssets1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardLineItems_38eb8d8d-4e79-4506-a7c3-78f1fe997cfa_terseLabel_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward [Line Items]</link:label>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardLineItems_label_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems" xlink:to="lab_us-gaap_TaxCreditCarryforwardLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_4088141a-15ce-43c4-9bf8-aa1bcb06977b_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Charged&#160;to Costs and Expenses</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Cost and Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedBonusesCurrent_ffccd714-b30e-4c98-b701-55d98587c9c6_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedBonusesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Incentive compensation</link:label>
    <link:label id="lab_us-gaap_AccruedBonusesCurrent_label_en-US" xlink:label="lab_us-gaap_AccruedBonusesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Bonuses, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedBonusesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedBonusesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedBonusesCurrent" xlink:to="lab_us-gaap_AccruedBonusesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventTypeDomain_02de7063-68e4-47dc-9276-886feef081d6_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventTypeDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event Type [Domain]</link:label>
    <link:label id="lab_us-gaap_SubsequentEventTypeDomain_label_en-US" xlink:label="lab_us-gaap_SubsequentEventTypeDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event Type [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventTypeDomain" xlink:to="lab_us-gaap_SubsequentEventTypeDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeLeaseDescriptionLineItems_2519737b-c350-42dc-8723-e805a313b0f0_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeLeaseDescriptionLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Lease, Description [Line Items]</link:label>
    <link:label id="lab_us-gaap_LesseeLeaseDescriptionLineItems_label_en-US" xlink:label="lab_us-gaap_LesseeLeaseDescriptionLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Lease, Description [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeaseDescriptionLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeLeaseDescriptionLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems" xlink:to="lab_us-gaap_LesseeLeaseDescriptionLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueRecognitionAndDeferredRevenueAbstract_label_en-US" xlink:label="lab_us-gaap_RevenueRecognitionAndDeferredRevenueAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue Recognition and Deferred Revenue [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRecognitionAndDeferredRevenueAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueRecognitionAndDeferredRevenueAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueRecognitionAndDeferredRevenueAbstract" xlink:to="lab_us-gaap_RevenueRecognitionAndDeferredRevenueAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AmortizationOfIntangibleAssets_1fe2b984-3e9c-485c-b59a-6c71b1823098_terseLabel_en-US" xlink:label="lab_us-gaap_AmortizationOfIntangibleAssets" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amortization of intangible assets</link:label>
    <link:label id="lab_us-gaap_AmortizationOfIntangibleAssets_label_en-US" xlink:label="lab_us-gaap_AmortizationOfIntangibleAssets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amortization of Intangible Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AmortizationOfIntangibleAssets" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AmortizationOfIntangibleAssets" xlink:to="lab_us-gaap_AmortizationOfIntangibleAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock_a7a36baa-402f-4014-b6b2-4caf7a4d5a43_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Restructuring Reserve by Type of Cost</link:label>
    <link:label id="lab_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Restructuring Reserve by Type of Cost [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock" xlink:to="lab_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_33d39e4a-9960-4541-8497-09d4e510b139_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible assets</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Intangible Assets, Other than Goodwill</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1_5c8bfa2c-de4a-41a7-8017-01611bbec6ca_terseLabel_en-US" xlink:label="lab_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchase Program, Remaining Authorized Repurchase Amount</link:label>
    <link:label id="lab_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1_label_en-US" xlink:label="lab_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchase Program, Remaining Authorized Repurchase Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:to="lab_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_4476a9d8-5be4-4f22-99ee-7d58f8bf42f5_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Increase Resulting from Prior Period Tax Positions</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet_d629b86d-4b7d-4e6e-8fc4-5cdfa0807534_totalLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Net, Noncurrent</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsLiabilitiesNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:to="lab_us-gaap_DeferredTaxAssetsLiabilitiesNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_d4071663-e855-4d9b-a38e-8d17d7d52cac_terseLabel_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock options to purchase anti-dilutive common stock</link:label>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_label_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:to="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_48be9ab2-07b7-4135-abb9-94f29450e968_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease, weighted average discount rate (percent)</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Weighted Average Discount Rate, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:to="lab_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_5f182e29-555a-40f0-b3f4-94452f655a5a_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventories</link:label>
    <link:label id="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Inventory, Current [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfInventoryCurrentTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ResearchAndDevelopmentExpenseMember_67e500d0-587a-49e3-8454-8b23094280cc_terseLabel_en-US" xlink:label="lab_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research, development, and engineering expenses</link:label>
    <link:label id="lab_us-gaap_ResearchAndDevelopmentExpenseMember_label_en-US" xlink:label="lab_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research and Development Expense [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:to="lab_us-gaap_ResearchAndDevelopmentExpenseMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventsAbstract_84feb999-639c-4084-a9e7-52f4b7044db9_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Events [Abstract]</link:label>
    <link:label id="lab_us-gaap_SubsequentEventsAbstract_label_en-US" xlink:label="lab_us-gaap_SubsequentEventsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Events [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventsAbstract" xlink:to="lab_us-gaap_SubsequentEventsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessAcquisitionAxis_e8d197d8-c400-4164-b181-eb877a992a24_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessAcquisitionAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Acquisition [Axis]</link:label>
    <link:label id="lab_us-gaap_BusinessAcquisitionAxis_label_en-US" xlink:label="lab_us-gaap_BusinessAcquisitionAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Acquisition [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessAcquisitionAxis" xlink:to="lab_us-gaap_BusinessAcquisitionAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityNameAxis_e5601369-90f9-46e6-976e-3cfae8460b6c_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityNameAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority, Name [Axis]</link:label>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityNameAxis_label_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityNameAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority, Name [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityNameAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameAxis" xlink:to="lab_us-gaap_IncomeTaxAuthorityNameAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_4d5dfe5c-28aa-4f2b-b888-e991d5fdce1e_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Award [Domain]</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award Type [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_c4777a8c-a0a9-4864-893f-0465e4665bba_terseLabel_en-US" xlink:label="lab_us-gaap_MovementInStandardProductWarrantyAccrualRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Movement in Standard Product Warranty Accrual [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_label_en-US" xlink:label="lab_us-gaap_MovementInStandardProductWarrantyAccrualRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Movement in Standard Product Warranty Accrual [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MovementInStandardProductWarrantyAccrualRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward" xlink:to="lab_us-gaap_MovementInStandardProductWarrantyAccrualRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_LocalPhoneNumber_dcf7ed84-c75f-44cf-beef-3091e3d48c73_terseLabel_en-US" xlink:label="lab_dei_LocalPhoneNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Local Phone Number</link:label>
    <link:label id="lab_dei_LocalPhoneNumber_label_en-US" xlink:label="lab_dei_LocalPhoneNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Local Phone Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_LocalPhoneNumber" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_LocalPhoneNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_LocalPhoneNumber" xlink:to="lab_dei_LocalPhoneNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GainLossOnSaleOfInvestments_28444a26-cb34-4010-b42e-a63d7827b4b0_negatedLabel_en-US" xlink:label="lab_us-gaap_GainLossOnSaleOfInvestments" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Realized gain on sale of investments</link:label>
    <link:label id="lab_us-gaap_GainLossOnSaleOfInvestments_label_en-US" xlink:label="lab_us-gaap_GainLossOnSaleOfInvestments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gain (Loss) on Sale of Investments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfInvestments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GainLossOnSaleOfInvestments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GainLossOnSaleOfInvestments" xlink:to="lab_us-gaap_GainLossOnSaleOfInvestments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock_18beda13-3931-42e0-8095-bdef104e159c_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of Available-for-Sale Investments</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Available-for-sale Securities Reconciliation [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_b926fabf-888c-40d7-a71f-ce3d66b25cbf_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Exercisable, Shares</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_33758a77-d28a-4853-a99b-b20bcc2f6c1b_terseLabel_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible asset in connection with change in tax structure</link:label>
    <link:label id="lab_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_label_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Intangible Asset, Change in Tax Structure</link:label>
    <link:label id="lab_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_documentation_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Intangible Asset, Change in Tax Structure</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" xlink:to="lab_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock_be5932fb-a865-4550-bd9a-f74d4ae02327_terseLabel_en-US" xlink:label="lab_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Maturity Dates of Available-for-Sale Investments</link:label>
    <link:label id="lab_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock_label_en-US" xlink:label="lab_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investments Classified by Contractual Maturity Date [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:to="lab_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_CurrencyAxis_3803110c-826f-4257-a526-242ca7989203_terseLabel_en-US" xlink:label="lab_srt_CurrencyAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Currency [Axis]</link:label>
    <link:label id="lab_srt_CurrencyAxis_label_en-US" xlink:label="lab_srt_CurrencyAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Currency [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CurrencyAxis" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_CurrencyAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_CurrencyAxis" xlink:to="lab_srt_CurrencyAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_MoneyMarketInstrumentsFairValueDisclosure_c05110c3-5089-4afe-a84f-54035f85cd54_terseLabel_en-US" xlink:label="lab_cgnx_MoneyMarketInstrumentsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Money market instruments</link:label>
    <link:label id="lab_cgnx_MoneyMarketInstrumentsFairValueDisclosure_label_en-US" xlink:label="lab_cgnx_MoneyMarketInstrumentsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Money Market Instruments Fair Value Disclosure</link:label>
    <link:label id="lab_cgnx_MoneyMarketInstrumentsFairValueDisclosure_documentation_en-US" xlink:label="lab_cgnx_MoneyMarketInstrumentsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Money market instruments fair value disclosure.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure" xlink:href="cgnx-20211231.xsd#cgnx_MoneyMarketInstrumentsFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure" xlink:to="lab_cgnx_MoneyMarketInstrumentsFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RetainedEarningsMember_7dbc5695-66d5-42aa-ad50-8e92fd20a585_terseLabel_en-US" xlink:label="lab_us-gaap_RetainedEarningsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retained Earnings [Member]</link:label>
    <link:label id="lab_us-gaap_RetainedEarningsMember_label_en-US" xlink:label="lab_us-gaap_RetainedEarningsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retained Earnings [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RetainedEarningsMember" xlink:to="lab_us-gaap_RetainedEarningsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment_ab6e7f53-4e4e-4c77-a947-cd99e05fff2c_terseLabel_en-US" xlink:label="lab_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign exchange rate changes</link:label>
    <link:label id="lab_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment_label_en-US" xlink:label="lab_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, Allowance For Credit Loss, Foreign Exchange Rate Adjustment</link:label>
    <link:label id="lab_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment_documentation_en-US" xlink:label="lab_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, Allowance For Credit Loss, Foreign Exchange Rate Adjustment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" xlink:href="cgnx-20211231.xsd#cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" xlink:to="lab_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_f5baad2d-edb3-404d-a2cc-e508d47b9bb3_terseLabel_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">1-2 Years</link:label>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_label_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available For Sale Securities Debt Maturities After One Year Before Two Years Fair Value</link:label>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_documentation_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">This item represents the fair value of debt securities which are expected to mature within one year of the balance sheet date and which are categorized neither as held-to-maturity nor trading securities.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" xlink:to="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_39314c19-c428-4e80-bf94-68efeeb32825_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable" xlink:to="lab_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccountsReceivable_48eecbfe-6d0c-4ec0-96d9-60fa0cdc59f2_negatedLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts receivable</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccountsReceivable_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Accounts Receivable</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:to="lab_us-gaap_IncreaseDecreaseInAccountsReceivable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_d92c33af-7435-444f-90d4-20c7a4a5b59a_terseLabel_en-US" xlink:label="lab_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Dividends Payable, Date of Record</link:label>
    <link:label id="lab_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_label_en-US" xlink:label="lab_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Dividends Payable, Date of Record</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableDateOfRecordDayMonthAndYear"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear" xlink:to="lab_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_b71e6f8d-9633-4bde-baad-c75846c29de8_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments and Hedging Activities Disclosure [Abstract]</link:label>
    <link:label id="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments and Hedging Activities Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract" xlink:to="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentLineItems_59d91aef-81dc-4aa4-b084-bb5fce92e9db_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Line Items]</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentLineItems_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityWellKnownSeasonedIssuer_fc58197f-2373-4e09-b988-de739b398684_terseLabel_en-US" xlink:label="lab_dei_EntityWellKnownSeasonedIssuer" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Well-known Seasoned Issuer</link:label>
    <link:label id="lab_dei_EntityWellKnownSeasonedIssuer_label_en-US" xlink:label="lab_dei_EntityWellKnownSeasonedIssuer" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Well-known Seasoned Issuer</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityWellKnownSeasonedIssuer" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityWellKnownSeasonedIssuer"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityWellKnownSeasonedIssuer" xlink:to="lab_dei_EntityWellKnownSeasonedIssuer" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_17cce6ec-f8ad-40fc-be49-260977e491ff_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Table]</link:label>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_label_en-US" xlink:label="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable" xlink:to="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_Customer2Member_2f2c1022-b385-492a-9563-dd9460e1f5f9_terseLabel_en-US" xlink:label="lab_cgnx_Customer2Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer 2 [Member]</link:label>
    <link:label id="lab_cgnx_Customer2Member_label_en-US" xlink:label="lab_cgnx_Customer2Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer 2 [Member]</link:label>
    <link:label id="lab_cgnx_Customer2Member_documentation_en-US" xlink:label="lab_cgnx_Customer2Member" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer 2</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer2Member" xlink:href="cgnx-20211231.xsd#cgnx_Customer2Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_Customer2Member" xlink:to="lab_cgnx_Customer2Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_f27b8cee-2efc-40a6-9846-1b1db62ed456_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Allocation of Recognized Period Costs [Line Items]</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Expensed and Capitalized, Amount [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareBasic_7c96d5d2-473e-45c3-b3ff-0ff78af6546c_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasic" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net income (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareBasic_a4a9a00a-a719-43e0-970c-975ca7834ee3_verboseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasic" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basic net income (loss) per share (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareBasic_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasic" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Basic</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareBasic" xlink:to="lab_us-gaap_EarningsPerShareBasic" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseExpense_a29e0b62-fdbf-485f-8ff8-bc9c28a260a0_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease expense</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseExpense_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseExpense" xlink:to="lab_us-gaap_OperatingLeaseExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerTextBlock_b7c56144-bf2f-4557-9468-05004cacb8d2_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue Recognition</link:label>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerTextBlock_label_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:to="lab_us-gaap_RevenueFromContractWithCustomerTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_43557120-782b-4102-8ddf-f52334180ba8_periodStartLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nonvested beginning balance outstanding</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_c42efcca-9217-4632-9a7c-fa280df4517f_periodEndLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nonvested ending balance outstanding</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Nonvested, Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_d15d270f-2510-4915-a3bf-afdaecdd8086_periodStartLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning balance</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_92389ce8-ce1d-4066-abba-15f4b9a65011_periodEndLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Ending balance</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_f4db2b55-0e10-4ea1-b50d-44ecf9fd415b_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair value</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_label_en-US" xlink:label="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" xlink:to="lab_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareDilutedAbstract_3823db41-1c10-4df2-80f3-776add646993_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareDilutedAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Diluted earnings per weighted-average common and common-equivalent share (1):</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareDilutedAbstract_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareDilutedAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Diluted [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDilutedAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDilutedAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareDilutedAbstract" xlink:to="lab_us-gaap_EarningsPerShareDilutedAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock_446ad9d0-eb2d-48fc-a14e-bfbc0b984566_terseLabel_en-US" xlink:label="lab_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule II - Valuation and Qualifying Accounts</link:label>
    <link:label id="lab_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock_label_en-US" xlink:label="lab_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Schedule of Valuation and Qualifying Accounts Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:to="lab_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeFairValueOfDerivativeAsset_6515f2e7-9e90-4d44-aa34-1a75fe28066f_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeFairValueOfDerivativeAsset" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Asset, Fair Value, Gross Asset</link:label>
    <link:label id="lab_us-gaap_DerivativeFairValueOfDerivativeAsset_label_en-US" xlink:label="lab_us-gaap_DerivativeFairValueOfDerivativeAsset" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Asset, Fair Value, Gross Asset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeAsset" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeFairValueOfDerivativeAsset"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeFairValueOfDerivativeAsset" xlink:to="lab_us-gaap_DerivativeFairValueOfDerivativeAsset" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_2ac7b66c-1557-49cf-a855-274e331080a9_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contingent consideration, low range</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combination, Contingent Consideration Arrangements, Range of Outcomes, Value, Low</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow" xlink:to="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock_2280cf49-fb6d-47c0-97e4-3ce27b6bb9c0_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas</link:label>
    <link:label id="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityVoluntaryFilers_d05c3eee-3c6e-4bab-a1e3-b5cd2caf5782_terseLabel_en-US" xlink:label="lab_dei_EntityVoluntaryFilers" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Voluntary Filers</link:label>
    <link:label id="lab_dei_EntityVoluntaryFilers_label_en-US" xlink:label="lab_dei_EntityVoluntaryFilers" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Voluntary Filers</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityVoluntaryFilers" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityVoluntaryFilers"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityVoluntaryFilers" xlink:to="lab_dei_EntityVoluntaryFilers" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesAdjustments_50c090d4-1a48-47de-ae5e-981979b432b2_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesAdjustments" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesAdjustments_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesAdjustments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Increase (Decrease) Adjustment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesAdjustments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesAdjustments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesAdjustments" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesAdjustments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringReserveAccrualAdjustment1_48099581-198a-4377-a8c8-6ecaea2afcba_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringReserveAccrualAdjustment1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring adjustments</link:label>
    <link:label id="lab_us-gaap_RestructuringReserveAccrualAdjustment1_label_en-US" xlink:label="lab_us-gaap_RestructuringReserveAccrualAdjustment1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Reserve, Accrual Adjustment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveAccrualAdjustment1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveAccrualAdjustment1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringReserveAccrualAdjustment1" xlink:to="lab_us-gaap_RestructuringReserveAccrualAdjustment1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetsFairValueDisclosureAbstract_98171a09-dd98-41e1-9b5a-690a9a25ddc8_terseLabel_en-US" xlink:label="lab_us-gaap_AssetsFairValueDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets:</link:label>
    <link:label id="lab_us-gaap_AssetsFairValueDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_AssetsFairValueDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets, Fair Value Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsFairValueDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract" xlink:to="lab_us-gaap_AssetsFairValueDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueInputsLevel1Member_75f35a36-10b6-4037-a8e4-47b260379fb5_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel1Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Quoted&#160;Prices&#160;in Active Markets for Identical Assets (Level&#160;1)</link:label>
    <link:label id="lab_us-gaap_FairValueInputsLevel1Member_label_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel1Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Inputs, Level 1 [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel1Member" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel1Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueInputsLevel1Member" xlink:to="lab_us-gaap_FairValueInputsLevel1Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_1411bd43-94a6-4c34-9968-ef92991d5ec3_terseLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash flows from investing activities:</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Investing Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:to="lab_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxDisclosureAbstract_1856014c-4f24-4f01-aae2-6b485490392a_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Disclosure [Abstract]</link:label>
    <link:label id="lab_us-gaap_IncomeTaxDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_IncomeTaxDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract" xlink:to="lab_us-gaap_IncomeTaxDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntitySmallBusiness_f38ca83f-c324-416a-8fa5-4dd6c667e893_terseLabel_en-US" xlink:label="lab_dei_EntitySmallBusiness" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Small Business</link:label>
    <link:label id="lab_dei_EntitySmallBusiness_label_en-US" xlink:label="lab_dei_EntitySmallBusiness" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Small Business</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntitySmallBusiness" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntitySmallBusiness"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntitySmallBusiness" xlink:to="lab_dei_EntitySmallBusiness" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock_0c580dec-0ee9-4f50-b695-dfd9ef9776c9_terseLabel_en-US" xlink:label="lab_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Allowance for Credit Loss</link:label>
    <link:label id="lab_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock_label_en-US" xlink:label="lab_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financing Receivable, Allowance for Credit Loss [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock" xlink:to="lab_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_b565116f-de60-4e6a-beac-ef7bdc2183b6_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Increase Resulting from Current Period Tax Positions</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems_e966cee9-dee1-4021-9b50-cfd7321c29a1_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets [Line Items]</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_165aeca0-8879-416f-a3f1-32ceb0468010_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reduction of income tax expense for adoption of ASU 2016-09</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Expense (Benefit), Share-based Payment Arrangement, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UncollectibleReceivablesMember_3cc31cce-cd7e-4138-a116-10d0619b0318_terseLabel_en-US" xlink:label="lab_us-gaap_UncollectibleReceivablesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reserve for Uncollectible Accounts Receivable and Sales Return [Member]</link:label>
    <link:label id="lab_us-gaap_UncollectibleReceivablesMember_label_en-US" xlink:label="lab_us-gaap_UncollectibleReceivablesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Uncollectible Receivables [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UncollectibleReceivablesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UncollectibleReceivablesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UncollectibleReceivablesMember" xlink:to="lab_us-gaap_UncollectibleReceivablesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled_3e27ced0-0a2a-4dcc-ad53-a2fdbcc6ba26_terseLabel_en-US" xlink:label="lab_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase of common stock, not yet settled (in shares)</link:label>
    <link:label id="lab_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled_label_en-US" xlink:label="lab_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchased During Period, Shares Not Yet Settled</link:label>
    <link:label id="lab_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled_documentation_en-US" xlink:label="lab_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchased During Period, Shares Not Yet Settled</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled" xlink:href="cgnx-20211231.xsd#cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled" xlink:to="lab_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NoncompeteAgreementsMember_53084829-1012-4e18-bead-a878ace11412_terseLabel_en-US" xlink:label="lab_us-gaap_NoncompeteAgreementsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Non-compete agreements</link:label>
    <link:label id="lab_us-gaap_NoncompeteAgreementsMember_label_en-US" xlink:label="lab_us-gaap_NoncompeteAgreementsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Noncompete Agreements [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NoncompeteAgreementsMember" xlink:to="lab_us-gaap_NoncompeteAgreementsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_dbdfff89-9eb2-4d6e-9714-7dabd1226699_terseLabel_en-US" xlink:label="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Estimated forfeiture rate for unvested options for senior management</link:label>
    <link:label id="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_label_en-US" xlink:label="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Estimated Forfeiture Rate For Unvested Options For Senior Management</link:label>
    <link:label id="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_documentation_en-US" xlink:label="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Estimated forfeiture rate for unvested options for senior management.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" xlink:href="cgnx-20211231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" xlink:to="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_80618ed5-24f2-4745-af56-2941fd9db192_terseLabel_en-US" xlink:label="lab_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible asset impairment charges</link:label>
    <link:label id="lab_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_label_en-US" xlink:label="lab_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Impairment of Intangible Assets, Indefinite-lived (Excluding Goodwill)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" xlink:to="lab_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract_02257245-0bf3-4c43-8511-f3f9113607c8_terseLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">LIABILITIES AND SHAREHOLDERS&#8217; EQUITY</link:label>
    <link:label id="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract_label_en-US" xlink:label="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities and Equity [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquityAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:to="lab_us-gaap_LiabilitiesAndStockholdersEquityAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccountsPayable_8991ff91-e859-4bbe-aa56-fc055e2d22ec_terseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts payable</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccountsPayable_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Accounts Payable</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:to="lab_us-gaap_IncreaseDecreaseInAccountsPayable" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ApplicationofCustomerSpecificSolutionsMember_e3584499-6fab-4528-b7a5-d822f86549a5_terseLabel_en-US" xlink:label="lab_cgnx_ApplicationofCustomerSpecificSolutionsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Application-specific customer solutions</link:label>
    <link:label id="lab_cgnx_ApplicationofCustomerSpecificSolutionsMember_label_en-US" xlink:label="lab_cgnx_ApplicationofCustomerSpecificSolutionsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Application of Customer Specific Solutions [Member]</link:label>
    <link:label id="lab_cgnx_ApplicationofCustomerSpecificSolutionsMember_documentation_en-US" xlink:label="lab_cgnx_ApplicationofCustomerSpecificSolutionsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Application of Customer Specific Solutions [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember" xlink:href="cgnx-20211231.xsd#cgnx_ApplicationofCustomerSpecificSolutionsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember" xlink:to="lab_cgnx_ApplicationofCustomerSpecificSolutionsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsDisclosureTable_a302e73e-04f0-4a29-803d-3278ff7daec6_terseLabel_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Table]</link:label>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsDisclosureTable_label_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:to="lab_srt_ValuationAndQualifyingAccountsDisclosureTable" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityInteractiveDataCurrent_79d916da-900c-4830-be03-c68ec7e799f7_terseLabel_en-US" xlink:label="lab_dei_EntityInteractiveDataCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Interactive Data Current</link:label>
    <link:label id="lab_dei_EntityInteractiveDataCurrent_label_en-US" xlink:label="lab_dei_EntityInteractiveDataCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Interactive Data Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityInteractiveDataCurrent" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityInteractiveDataCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityInteractiveDataCurrent" xlink:to="lab_dei_EntityInteractiveDataCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_95502e05-62a8-4798-94d6-5df2050d55a8_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2025</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Asset, Expected Amortization, Year Four</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_3b38a54e-bf85-4094-afa1-0f615c31c252_terseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Issuance of common stock under stock option plans</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Issued During Period, Value, Stock Options Exercised</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:to="lab_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain_7e8b43ff-c310-4eb9-824e-01885960b49b_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross realized losses</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Realized Gain</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleRealizedGain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_4fcc0693-3427-47bb-83a6-b26fca27e12b_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revaluation of contingent consideration</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combination, Contingent Consideration Arrangements, Change in Amount of Contingent Consideration, Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:to="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_60d409db-931a-415e-8805-78d86e52b063_terseLabel_en-US" xlink:label="lab_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reserve for income taxes</link:label>
    <link:label id="lab_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_label_en-US" xlink:label="lab_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liability for Uncertainty in Income Taxes, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilityForUncertainTaxPositionsNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent" xlink:to="lab_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BalanceSheetLocationDomain_9942023a-05f5-4ad5-8177-47448aabc32b_terseLabel_en-US" xlink:label="lab_us-gaap_BalanceSheetLocationDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Location [Domain]</link:label>
    <link:label id="lab_us-gaap_BalanceSheetLocationDomain_label_en-US" xlink:label="lab_us-gaap_BalanceSheetLocationDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Location [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BalanceSheetLocationDomain" xlink:to="lab_us-gaap_BalanceSheetLocationDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefits_e9fd902f-f491-41ac-8a71-d222802aef42_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefits" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reserve for tax uncertainties</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefits_06084875-3495-413e-a2e2-64eb5edf4dc7_periodStartLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefits" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance of reserve for income taxes</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefits_4f665d45-45f3-4dc8-808b-3d00f7f54ffc_periodEndLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefits" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance of reserve for income taxes</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefits_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefits" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefits" xlink:to="lab_us-gaap_UnrecognizedTaxBenefits" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsGross_302f4287-79ec-4cc1-a967-af6631b19988_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsGross" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax assets</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsGross_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsGross" xlink:to="lab_us-gaap_DeferredTaxAssetsGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityDomain_8f9ccecf-aa54-40e3-b638-58a8c48ab9b4_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority [Domain]</link:label>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityDomain_label_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain" xlink:to="lab_us-gaap_IncomeTaxAuthorityDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_SellingGeneralAndAdministrativeMember_4791eb56-98c4-4ea1-b87c-ea89b14defa7_terseLabel_en-US" xlink:label="lab_cgnx_SellingGeneralAndAdministrativeMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Selling, general, and administrative [Member]</link:label>
    <link:label id="lab_cgnx_SellingGeneralAndAdministrativeMember_label_en-US" xlink:label="lab_cgnx_SellingGeneralAndAdministrativeMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Selling General And Administrative [Member]</link:label>
    <link:label id="lab_cgnx_SellingGeneralAndAdministrativeMember_documentation_en-US" xlink:label="lab_cgnx_SellingGeneralAndAdministrativeMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Selling, general, and administrative.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SellingGeneralAndAdministrativeMember" xlink:href="cgnx-20211231.xsd#cgnx_SellingGeneralAndAdministrativeMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_SellingGeneralAndAdministrativeMember" xlink:to="lab_cgnx_SellingGeneralAndAdministrativeMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityCommonStockSharesOutstanding_6cf7670f-e52a-4117-9bcf-8970b68633f8_terseLabel_en-US" xlink:label="lab_dei_EntityCommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
    <link:label id="lab_dei_EntityCommonStockSharesOutstanding_label_en-US" xlink:label="lab_dei_EntityCommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Common Stock, Shares Outstanding</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCommonStockSharesOutstanding" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityCommonStockSharesOutstanding" xlink:to="lab_dei_EntityCommonStockSharesOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_0b188cdd-4128-464b-8b1b-3eacc79ac2e3_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">1. Effective income tax rate reconciliation, tax settlement, foreign, amount</link:label>
    <link:label id="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_label_en-US" xlink:label="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Settlement, Foreign, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxReconciliationTaxSettlementsForeign"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign" xlink:to="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_c7b799b9-995a-47ec-8155-d83c1bbfdcb7_terseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross Unrealized Gains</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Accumulated Gross Unrealized Gain, before Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:to="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressStateOrProvince_5466abf6-bfb4-4dff-8011-a7cbce5509dd_terseLabel_en-US" xlink:label="lab_dei_EntityAddressStateOrProvince" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:label id="lab_dei_EntityAddressStateOrProvince_label_en-US" xlink:label="lab_dei_EntityAddressStateOrProvince" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, State or Province</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressStateOrProvince" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityAddressStateOrProvince"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressStateOrProvince" xlink:to="lab_dei_EntityAddressStateOrProvince" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringReserve_64e0d5b2-348f-4692-8fad-c4a7be6e6bc9_periodStartLabel_en-US" xlink:label="lab_us-gaap_RestructuringReserve" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance as of December 31, 2019</link:label>
    <link:label id="lab_us-gaap_RestructuringReserve_5eb42b5f-66e8-4c1a-8060-bda2d589de86_periodEndLabel_en-US" xlink:label="lab_us-gaap_RestructuringReserve" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance as of December 31, 2020</link:label>
    <link:label id="lab_us-gaap_RestructuringReserve_label_en-US" xlink:label="lab_us-gaap_RestructuringReserve" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Reserve</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserve"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringReserve" xlink:to="lab_us-gaap_RestructuringReserve" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxAssetsNet_708fa1ee-564d-4735-bbe8-a210f1ae8a75_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxAssetsNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred income taxes</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxAssetsNet_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxAssetsNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Income Tax Assets, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxAssetsNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxAssetsNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxAssetsNet" xlink:to="lab_us-gaap_DeferredIncomeTaxAssetsNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesCurrentAbstract_aa5d4ff7-28f6-48a7-814d-56d7a87b5ce2_terseLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current liabilities:</link:label>
    <link:label id="lab_us-gaap_LiabilitiesCurrentAbstract_label_en-US" xlink:label="lab_us-gaap_LiabilitiesCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities, Current [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract" xlink:to="lab_us-gaap_LiabilitiesCurrentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_RestatementAxis_655e047f-aa63-4479-8ced-655f1caa3e32_terseLabel_en-US" xlink:label="lab_srt_RestatementAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restatement [Axis]</link:label>
    <link:label id="lab_srt_RestatementAxis_label_en-US" xlink:label="lab_srt_RestatementAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revision of Prior Period [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAxis" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_RestatementAxis" xlink:to="lab_srt_RestatementAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_e55d183e-1d79-456d-a854-4f234ce63656_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Exercisable, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_c4206668-dbaf-454f-a53c-2c69e36eb0d5_terseLabel_en-US" xlink:label="lab_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum decrease in income tax expense due to release in reserves</link:label>
    <link:label id="lab_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_label_en-US" xlink:label="lab_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum Decrease In Income Tax Expense Due To Release In Reserves</link:label>
    <link:label id="lab_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_documentation_en-US" xlink:label="lab_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum decrease in income tax expense due to release in reserves.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:href="cgnx-20211231.xsd#cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:to="lab_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringReserveSettledWithoutCash2_1daf2132-822a-423e-8bb2-b12452649c89_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_RestructuringReserveSettledWithoutCash2" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Non-cash restructuring charges</link:label>
    <link:label id="lab_us-gaap_RestructuringReserveSettledWithoutCash2_label_en-US" xlink:label="lab_us-gaap_RestructuringReserveSettledWithoutCash2" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Reserve, Settled without Cash</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveSettledWithoutCash2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveSettledWithoutCash2"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringReserveSettledWithoutCash2" xlink:to="lab_us-gaap_RestructuringReserveSettledWithoutCash2" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryDisclosureTextBlock_9faea943-f179-4c05-844e-b7b0b2106eef_verboseLabel_en-US" xlink:label="lab_us-gaap_InventoryDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventories</link:label>
    <link:label id="lab_us-gaap_InventoryDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_InventoryDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryDisclosureTextBlock" xlink:to="lab_us-gaap_InventoryDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_82be716c-219a-4b91-ad7e-0398acac93b9_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Interest and penalties, gross</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Income Tax Penalties and Interest Accrued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountingPoliciesAbstract_7241c905-9f44-461b-9f2e-03d103b32c02_terseLabel_en-US" xlink:label="lab_us-gaap_AccountingPoliciesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounting Policies [Abstract]</link:label>
    <link:label id="lab_us-gaap_AccountingPoliciesAbstract_label_en-US" xlink:label="lab_us-gaap_AccountingPoliciesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounting Policies [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountingPoliciesAbstract" xlink:to="lab_us-gaap_AccountingPoliciesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_37d7a275-358f-4955-ab60-7af0093f762a_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Outstanding, weighted-average remaining contractual term (in years)</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Remaining Contractual Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_MunicipalBondsFairValueDisclosure_90e095da-abcd-4eac-8540-70bdacafee21_terseLabel_en-US" xlink:label="lab_cgnx_MunicipalBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Municipal bonds</link:label>
    <link:label id="lab_cgnx_MunicipalBondsFairValueDisclosure_label_en-US" xlink:label="lab_cgnx_MunicipalBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Municipal Bonds Fair Value Disclosure</link:label>
    <link:label id="lab_cgnx_MunicipalBondsFairValueDisclosure_documentation_en-US" xlink:label="lab_cgnx_MunicipalBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Municipal bonds fair value disclosure.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MunicipalBondsFairValueDisclosure" xlink:href="cgnx-20211231.xsd#cgnx_MunicipalBondsFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_MunicipalBondsFairValueDisclosure" xlink:to="lab_cgnx_MunicipalBondsFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentFederalTaxExpenseBenefit_e8eda658-58eb-4bb5-bad7-4363dd5a505a_terseLabel_en-US" xlink:label="lab_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Federal</link:label>
    <link:label id="lab_us-gaap_CurrentFederalTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Federal Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:to="lab_us-gaap_CurrentFederalTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseLiability_a60215ba-b749-4093-a82f-83e2e53ac90c_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiability" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease, liability</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiability_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiability" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseLiability" xlink:to="lab_us-gaap_OperatingLeaseLiability" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentTransitionReport_15ade72f-e14d-44df-b715-0e174f48f0be_terseLabel_en-US" xlink:label="lab_dei_DocumentTransitionReport" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Transition Report</link:label>
    <link:label id="lab_dei_DocumentTransitionReport_label_en-US" xlink:label="lab_dei_DocumentTransitionReport" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Transition Report</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentTransitionReport" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentTransitionReport"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentTransitionReport" xlink:to="lab_dei_DocumentTransitionReport" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_be3ef7b4-2e9a-4dba-a011-39a16a09b64c_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Recognition period for unrecognized compensation expense</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DueFromForeignBanks_36d4768c-75b2-4d04-b21b-7633a422dc94_terseLabel_en-US" xlink:label="lab_cgnx_DueFromForeignBanks" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash balance included foreign bank balance</link:label>
    <link:label id="lab_cgnx_DueFromForeignBanks_label_en-US" xlink:label="lab_cgnx_DueFromForeignBanks" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Due From Foreign Banks</link:label>
    <link:label id="lab_cgnx_DueFromForeignBanks_documentation_en-US" xlink:label="lab_cgnx_DueFromForeignBanks" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Due from foreign banks.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DueFromForeignBanks" xlink:href="cgnx-20211231.xsd#cgnx_DueFromForeignBanks"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DueFromForeignBanks" xlink:to="lab_cgnx_DueFromForeignBanks" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CustomerConcentrationRiskMember_25b1c5b7-1caf-4c6a-b9a2-d0257a5afa40_verboseLabel_en-US" xlink:label="lab_us-gaap_CustomerConcentrationRiskMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from a single customer, percentage</link:label>
    <link:label id="lab_us-gaap_CustomerConcentrationRiskMember_label_en-US" xlink:label="lab_us-gaap_CustomerConcentrationRiskMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Concentration Risk [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerConcentrationRiskMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CustomerConcentrationRiskMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CustomerConcentrationRiskMember" xlink:to="lab_us-gaap_CustomerConcentrationRiskMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_65cfee13-8f3a-45e9-bfdd-b08ed9d1fa76_periodStartLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nonvested beginning balance, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_efff90bf-1bce-44e1-9f96-cee0944d5b32_periodEndLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nonvested ending balance, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeasesTextBlock_ba7294de-2f35-4122-9ba8-f9f726755832_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeasesTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Leases</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeasesTextBlock_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeasesTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Leases [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeasesTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeasesTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeasesTextBlock" xlink:to="lab_us-gaap_LesseeOperatingLeasesTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DividendsPayableAmountPerShare_f5e00e8f-7ed7-4d3f-8d88-17dfa4dd3c01_terseLabel_en-US" xlink:label="lab_us-gaap_DividendsPayableAmountPerShare" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Dividends Payable, Amount Per Share</link:label>
    <link:label id="lab_us-gaap_DividendsPayableAmountPerShare_label_en-US" xlink:label="lab_us-gaap_DividendsPayableAmountPerShare" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Dividends Payable, Amount Per Share</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableAmountPerShare" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableAmountPerShare"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DividendsPayableAmountPerShare" xlink:to="lab_us-gaap_DividendsPayableAmountPerShare" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationDisclosureTextBlock_8ef176a2-3b48-40f6-9c0e-b724440dc617_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Acquisitions</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combination Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationDisclosureTextBlock" xlink:to="lab_us-gaap_BusinessCombinationDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_e95fab29-a415-403c-b3b2-27cce7505edd_terseLabel_en-US" xlink:label="lab_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Completed Technologies And Other Intangible Assets [Member]</link:label>
    <link:label id="lab_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_label_en-US" xlink:label="lab_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Completed Technologies And Other Intangible Assets [Member]</link:label>
    <link:label id="lab_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_documentation_en-US" xlink:label="lab_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Completed Technologies And Other Intangible Assets [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember" xlink:href="cgnx-20211231.xsd#cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember" xlink:to="lab_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_IcfrAuditorAttestationFlag_75962bc4-64c4-4e7b-9857-21e5cf616e35_terseLabel_en-US" xlink:label="lab_dei_IcfrAuditorAttestationFlag" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">ICFR Auditor Attestation Flag</link:label>
    <link:label id="lab_dei_IcfrAuditorAttestationFlag_label_en-US" xlink:label="lab_dei_IcfrAuditorAttestationFlag" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">ICFR Auditor Attestation Flag</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_IcfrAuditorAttestationFlag" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_IcfrAuditorAttestationFlag"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_IcfrAuditorAttestationFlag" xlink:to="lab_dei_IcfrAuditorAttestationFlag" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AuditorLineItems_label_en-US" xlink:label="lab_dei_AuditorLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorLineItems" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AuditorLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AuditorLineItems" xlink:to="lab_dei_AuditorLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_6864f989-8bc7-41ad-9a3f-bcb9f0d8345a_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted</link:label>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Share-based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesNameDomain_e99a1012-1e69-48b4-95c6-2f4f49bbe674_terseLabel_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Antidilutive Securities, Name [Domain]</link:label>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesNameDomain_label_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Antidilutive Securities, Name [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AntidilutiveSecuritiesNameDomain" xlink:to="lab_us-gaap_AntidilutiveSecuritiesNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_9f9235c1-5e49-44b1-88de-1d21ecdc37f4_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign</link:label>
    <link:label id="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Foreign Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillLineItems_5b207fcc-561a-498e-8417-85862965fe9e_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill [Line Items]</link:label>
    <link:label id="lab_us-gaap_GoodwillLineItems_label_en-US" xlink:label="lab_us-gaap_GoodwillLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillLineItems" xlink:to="lab_us-gaap_GoodwillLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementClassOfStockAxis_18ef4481-97ef-4dd4-83cf-5169a387ea64_terseLabel_en-US" xlink:label="lab_us-gaap_StatementClassOfStockAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Class of Stock [Axis]</link:label>
    <link:label id="lab_us-gaap_StatementClassOfStockAxis_label_en-US" xlink:label="lab_us-gaap_StatementClassOfStockAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Class of Stock [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementClassOfStockAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementClassOfStockAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementClassOfStockAxis" xlink:to="lab_us-gaap_StatementClassOfStockAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_58ae8e4e-b376-4d83-af42-7ce1ce8f6f2c_terseLabel_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">GILTI tax basis differences</link:label>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_bc321907-85d1-496a-be49-d75aa16cf500_negatedTerseLabel_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">GILTI tax basis differences in connection with change in tax structure</link:label>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_label_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Liabilities, Tax Cuts And Jobs Act, Global Intangible Low Tax Income</link:label>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_documentation_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Liabilities, Tax Cuts And Jobs Act, Global Intangible Low Tax Income</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" xlink:to="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_GBP_eea4300f-4bab-40c0-8e8a-bada9b225d9f_terseLabel_en-US" xlink:label="lab_currency_GBP" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">British Pound [Member]</link:label>
    <link:label id="lab_currency_GBP_label_en-US" xlink:label="lab_currency_GBP" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">United Kingdom, Pounds</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_GBP" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_GBP"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_GBP" xlink:to="lab_currency_GBP" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_23836965-bcf6-4060-b32e-ef14d754bdde_terseLabel_en-US" xlink:label="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Changes in the Reserve for Income Taxes, Excluding Interest and Penalties</link:label>
    <link:label id="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_label_en-US" xlink:label="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of Income Tax Contingencies [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SummaryOfIncomeTaxContingenciesTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:to="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_NumberOfGroupsWithinEmployeePopulation_3e7d9492-2ff2-4c67-bb87-f421f40dd360_terseLabel_en-US" xlink:label="lab_cgnx_NumberOfGroupsWithinEmployeePopulation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of groups within the employee population</link:label>
    <link:label id="lab_cgnx_NumberOfGroupsWithinEmployeePopulation_label_en-US" xlink:label="lab_cgnx_NumberOfGroupsWithinEmployeePopulation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number Of Groups Within Employee Population</link:label>
    <link:label id="lab_cgnx_NumberOfGroupsWithinEmployeePopulation_documentation_en-US" xlink:label="lab_cgnx_NumberOfGroupsWithinEmployeePopulation" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of groups within employee population.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NumberOfGroupsWithinEmployeePopulation" xlink:href="cgnx-20211231.xsd#cgnx_NumberOfGroupsWithinEmployeePopulation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_NumberOfGroupsWithinEmployeePopulation" xlink:to="lab_cgnx_NumberOfGroupsWithinEmployeePopulation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityAxis_320ec688-07ca-4efa-8096-9f80317052df_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority [Axis]</link:label>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityAxis_label_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis" xlink:to="lab_us-gaap_IncomeTaxAuthorityAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryWorkInProcessNetOfReserves_691ccf83-a99f-4239-b762-da3e690b9319_terseLabel_en-US" xlink:label="lab_us-gaap_InventoryWorkInProcessNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Work-in-process</link:label>
    <link:label id="lab_us-gaap_InventoryWorkInProcessNetOfReserves_label_en-US" xlink:label="lab_us-gaap_InventoryWorkInProcessNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Work in Process, Net of Reserves</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryWorkInProcessNetOfReserves" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryWorkInProcessNetOfReserves"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryWorkInProcessNetOfReserves" xlink:to="lab_us-gaap_InventoryWorkInProcessNetOfReserves" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnbilledReceivablesCurrent_3a83cc68-d3ee-44d2-b991-d6e291a52974_terseLabel_en-US" xlink:label="lab_us-gaap_UnbilledReceivablesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unbilled revenue</link:label>
    <link:label id="lab_us-gaap_UnbilledReceivablesCurrent_label_en-US" xlink:label="lab_us-gaap_UnbilledReceivablesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unbilled Receivables, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnbilledReceivablesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnbilledReceivablesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnbilledReceivablesCurrent" xlink:to="lab_us-gaap_UnbilledReceivablesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_d412540a-72b4-49a9-849e-62a25add9639_terseLabel_en-US" xlink:label="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:label id="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_label_en-US" xlink:label="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid Expense and Other Assets, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:to="lab_us-gaap_PrepaidExpenseAndOtherAssetsCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_KRW_6d4eff3d-48bd-4a2a-9341-fc6f6eabb803_terseLabel_en-US" xlink:label="lab_currency_KRW" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Korean Won [Member]</link:label>
    <link:label id="lab_currency_KRW_label_en-US" xlink:label="lab_currency_KRW" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Korea (South), Won</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_KRW" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_KRW"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_KRW" xlink:to="lab_currency_KRW" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_207361b4-5a56-408e-a20d-1c96a13140b1_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Option, Exercise Price Range [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems" xlink:to="lab_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockDividendsPerShareDeclared_1f4cd8cd-0172-4558-9f00-6da17732a504_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockDividendsPerShareDeclared" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash dividend declared per common share</link:label>
    <link:label id="lab_us-gaap_CommonStockDividendsPerShareDeclared_label_en-US" xlink:label="lab_us-gaap_CommonStockDividendsPerShareDeclared" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Dividends, Per Share, Declared</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareDeclared" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockDividendsPerShareDeclared"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockDividendsPerShareDeclared" xlink:to="lab_us-gaap_CommonStockDividendsPerShareDeclared" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrent_80291377-966d-4275-b5d5-52c6000ff2da_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued expenses</link:label>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrent_597ea811-6af7-49f8-b1d0-f5a3a82b96df_totalLabel_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued expenses</link:label>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrent_label_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Liabilities, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrent" xlink:to="lab_us-gaap_AccruedLiabilitiesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_b16874db-455f-4975-b1a3-b47f96158048_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue</link:label>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_ffe2b11b-5db6-437d-8108-997b651aee2c_verboseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue</link:label>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_label_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer, Excluding Assessed Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:to="lab_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_4a35f8e7-155b-4d5b-9164-5e6c26245faa_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Share-based Compensation Cost</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:to="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryFinishedGoodsNetOfReserves_b7dc9f6c-560b-489d-bcbb-efbf7c764e2b_terseLabel_en-US" xlink:label="lab_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finished goods</link:label>
    <link:label id="lab_us-gaap_InventoryFinishedGoodsNetOfReserves_label_en-US" xlink:label="lab_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Finished Goods, Net of Reserves</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:to="lab_us-gaap_InventoryFinishedGoodsNetOfReserves" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeStockOptionMember_32bc02a5-7b77-4f66-bf36-63428fa7e2f3_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeStockOptionMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Stock Option [Member]</link:label>
    <link:label id="lab_us-gaap_EmployeeStockOptionMember_bd082503-c9d8-4874-8754-0542ae67a55d_verboseLabel_en-US" xlink:label="lab_us-gaap_EmployeeStockOptionMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Compensation Plan [Member]</link:label>
    <link:label id="lab_us-gaap_EmployeeStockOptionMember_label_en-US" xlink:label="lab_us-gaap_EmployeeStockOptionMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Option [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeStockOptionMember" xlink:to="lab_us-gaap_EmployeeStockOptionMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EquityAbstract_d37efa90-4e49-497b-9a73-fb72e9848378_terseLabel_en-US" xlink:label="lab_us-gaap_EquityAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity [Abstract]</link:label>
    <link:label id="lab_us-gaap_EquityAbstract_label_en-US" xlink:label="lab_us-gaap_EquityAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EquityAbstract" xlink:to="lab_us-gaap_EquityAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis_56c813fd-cd3d-410a-b62c-40cd9991a0f2_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Hierarchy and NAV [Axis]</link:label>
    <link:label id="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis_label_en-US" xlink:label="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Hierarchy and NAV [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:to="lab_us-gaap_FairValueByFairValueHierarchyLevelAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock_99892fe1-4e29-49dc-a202-292a6632b17a_terseLabel_en-US" xlink:label="lab_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Comprehensive Income</link:label>
    <link:label id="lab_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Comprehensive Income, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:to="lab_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_36b5d3f3-f56b-41f8-ba06-0376e384b429_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax credit</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Credit, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_f4d94e39-9134-4294-9ff9-86d3c61525a4_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative liability gross amount offset</link:label>
    <link:label id="lab_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_label_en-US" xlink:label="lab_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Liability, Collateral, Right to Reclaim Cash, Offset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset" xlink:to="lab_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StandardProductWarrantyPolicy_5bc79380-cc32-4b81-8553-777d802f3579_terseLabel_en-US" xlink:label="lab_us-gaap_StandardProductWarrantyPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Warranty Obligations</link:label>
    <link:label id="lab_us-gaap_StandardProductWarrantyPolicy_label_en-US" xlink:label="lab_us-gaap_StandardProductWarrantyPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard Product Warranty, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StandardProductWarrantyPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StandardProductWarrantyPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StandardProductWarrantyPolicy" xlink:to="lab_us-gaap_StandardProductWarrantyPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_SovereignBondsFairValueDisclosure_0709cd83-25a6-4612-97be-62d9702013b6_terseLabel_en-US" xlink:label="lab_cgnx_SovereignBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sovereign bonds</link:label>
    <link:label id="lab_cgnx_SovereignBondsFairValueDisclosure_label_en-US" xlink:label="lab_cgnx_SovereignBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sovereign Bonds Fair Value Disclosure</link:label>
    <link:label id="lab_cgnx_SovereignBondsFairValueDisclosure_documentation_en-US" xlink:label="lab_cgnx_SovereignBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sovereign bonds fair value disclosure.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SovereignBondsFairValueDisclosure" xlink:href="cgnx-20211231.xsd#cgnx_SovereignBondsFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_SovereignBondsFairValueDisclosure" xlink:to="lab_cgnx_SovereignBondsFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months_50be8666-f9ad-43a9-b99f-1218ab472a89_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Less than 12 months</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Continuous Unrealized Loss Position, Less than 12 Months</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SegmentReportingDisclosureTextBlock_c61e6176-688b-4fc9-9497-1d549dbc474d_terseLabel_en-US" xlink:label="lab_us-gaap_SegmentReportingDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Segment and Geographic Information</link:label>
    <link:label id="lab_us-gaap_SegmentReportingDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_SegmentReportingDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Segment Reporting Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SegmentReportingDisclosureTextBlock" xlink:to="lab_us-gaap_SegmentReportingDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_CAD_90975b52-89a6-4854-876f-95d542c74010_terseLabel_en-US" xlink:label="lab_currency_CAD" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Canadian Dollar [Member]</link:label>
    <link:label id="lab_currency_CAD_label_en-US" xlink:label="lab_currency_CAD" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Canada, Dollars</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_CAD" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_CAD"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_CAD" xlink:to="lab_currency_CAD" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_de7827a1-9563-47c2-9d76-ebdb2d03a417_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:to="lab_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_bfe07f3c-fa4f-4b99-b5b9-9468f6b167df_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale [Line Items]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:to="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_20f92c7f-7cb2-4c38-8e4c-74c9d899b8fb_terseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Stockholders' Equity [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Stockholders' Equity [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:to="lab_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentFiscalYearFocus_51f0eac6-a900-46f9-8cda-e6f9eb7f536c_terseLabel_en-US" xlink:label="lab_dei_DocumentFiscalYearFocus" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Fiscal Year Focus</link:label>
    <link:label id="lab_dei_DocumentFiscalYearFocus_label_en-US" xlink:label="lab_dei_DocumentFiscalYearFocus" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Fiscal Year Focus</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalYearFocus" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentFiscalYearFocus"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentFiscalYearFocus" xlink:to="lab_dei_DocumentFiscalYearFocus" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentAbstract_1c4833f7-7a09-4edd-b5e1-a08c48d0003d_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Abstract]</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentAbstract_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalMember_2144c71d-95fd-4b1a-a1e2-33e6409b87da_terseLabel_en-US" xlink:label="lab_us-gaap_AdditionalPaidInCapitalMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additional Paid-in Capital [Member]</link:label>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalMember_label_en-US" xlink:label="lab_us-gaap_AdditionalPaidInCapitalMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additional Paid-in Capital [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdditionalPaidInCapitalMember" xlink:to="lab_us-gaap_AdditionalPaidInCapitalMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet_3c9b957f-aa70-4cd6-845d-ac1da6388fc9_totalLabel_en-US" xlink:label="lab_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred income taxes</link:label>
    <link:label id="lab_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet_label_en-US" xlink:label="lab_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred income tax assets (liabilities), net</link:label>
    <link:label id="lab_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet_documentation_en-US" xlink:label="lab_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred income tax assets (liabilities), net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet" xlink:href="cgnx-20211231.xsd#cgnx_DeferredIncomeTaxAssetsLiabilitiesNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet" xlink:to="lab_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockDividendsPerShareCashPaid_3de50a2a-926d-488f-9f33-777524a49900_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockDividendsPerShareCashPaid" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash dividends per common share (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_CommonStockDividendsPerShareCashPaid_label_en-US" xlink:label="lab_us-gaap_CommonStockDividendsPerShareCashPaid" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Dividends, Per Share, Cash Paid</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareCashPaid" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockDividendsPerShareCashPaid"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockDividendsPerShareCashPaid" xlink:to="lab_us-gaap_CommonStockDividendsPerShareCashPaid" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAbstract_70fc25a2-de0a-4fe9-9370-2d0256d698e2_terseLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Abstract]</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAbstract_label_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract" xlink:to="lab_us-gaap_CashAndCashEquivalentsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ScenarioPreviouslyReportedMember_598f0a08-0a97-4001-936f-cf4cb4d89969_terseLabel_en-US" xlink:label="lab_srt_ScenarioPreviouslyReportedMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Previously Reported [Member]</link:label>
    <link:label id="lab_srt_ScenarioPreviouslyReportedMember_label_en-US" xlink:label="lab_srt_ScenarioPreviouslyReportedMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Previously Reported [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ScenarioPreviouslyReportedMember" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioPreviouslyReportedMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ScenarioPreviouslyReportedMember" xlink:to="lab_srt_ScenarioPreviouslyReportedMember" xlink:type="arc" order="1"/>
    <link:label id="lab_country_KP_fe051c96-391a-4d20-9425-dd2fd56559ba_terseLabel_en-US" xlink:label="lab_country_KP" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF</link:label>
    <link:label id="lab_country_KP_label_en-US" xlink:label="lab_country_KP" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_country_KP" xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_KP"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_country_KP" xlink:to="lab_country_KP" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherNonoperatingIncomeExpense_69ec01d7-e9f7-4254-a0f0-b81aad93eab9_terseLabel_en-US" xlink:label="lab_us-gaap_OtherNonoperatingIncomeExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other income (expense)</link:label>
    <link:label id="lab_us-gaap_OtherNonoperatingIncomeExpense_label_en-US" xlink:label="lab_us-gaap_OtherNonoperatingIncomeExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Nonoperating Income (Expense)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherNonoperatingIncomeExpense" xlink:to="lab_us-gaap_OtherNonoperatingIncomeExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationsAbstract_f0a7ca10-9ed3-43bf-ae1e-a3825d0b95e9_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combinations [Abstract]</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationsAbstract_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combinations [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationsAbstract" xlink:to="lab_us-gaap_BusinessCombinationsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_MaximumMember_9ed7d623-fc21-4a09-88b5-fe799525e071_terseLabel_en-US" xlink:label="lab_srt_MaximumMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum [Member]</link:label>
    <link:label id="lab_srt_MaximumMember_label_en-US" xlink:label="lab_srt_MaximumMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_MaximumMember" xlink:to="lab_srt_MaximumMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_342fecfe-03fb-436b-ada8-c21c4214ce36_terseLabel_en-US" xlink:label="lab_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disclosure of Compensation Related Costs, Share-based Payments [Abstract]</link:label>
    <link:label id="lab_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_label_en-US" xlink:label="lab_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract" xlink:to="lab_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryRawMaterialsNetOfReserves_1c2631e1-28e7-4ba9-879b-21ed31ca9fea_terseLabel_en-US" xlink:label="lab_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Raw materials</link:label>
    <link:label id="lab_us-gaap_InventoryRawMaterialsNetOfReserves_label_en-US" xlink:label="lab_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Raw Materials, Net of Reserves</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryRawMaterialsNetOfReserves"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:to="lab_us-gaap_InventoryRawMaterialsNetOfReserves" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_5bfd7513-f3d9-4797-9783-1a0253115b01_terseLabel_en-US" xlink:label="lab_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Dividends Payable, Date Declared</link:label>
    <link:label id="lab_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_label_en-US" xlink:label="lab_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Dividends Payable, Date Declared</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableDateDeclaredDayMonthAndYear"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear" xlink:to="lab_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_7502ca2f-762f-4693-a0d5-8a5b13a5d2bd_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Constituents of Accrued Expenses</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Accrued Liabilities [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AwardTypeAxis_e6b98e7b-f383-4a27-9335-aaaf5bc9183e_terseLabel_en-US" xlink:label="lab_us-gaap_AwardTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award Type [Axis]</link:label>
    <link:label id="lab_us-gaap_AwardTypeAxis_label_en-US" xlink:label="lab_us-gaap_AwardTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Award Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AwardTypeAxis" xlink:to="lab_us-gaap_AwardTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_0915d2bc-a89a-4bb7-bfb0-ef268f9324a9_terseLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash flows from financing activities:</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Financing Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:to="lab_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_96d7269a-b625-48d3-8f3d-7d11b28fd8b9_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of lease payments</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, Maturity [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockholdersEquity_b0d01067-cc35-49eb-a9bd-139a558bdbcd_totalLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total shareholders&#8217; equity</link:label>
    <link:label id="lab_us-gaap_StockholdersEquity_d90bc4e1-0e16-4e15-8177-95c870a6093a_periodStartLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning Balance</link:label>
    <link:label id="lab_us-gaap_StockholdersEquity_a85f4972-98ad-48c1-8acc-3db941b726c7_periodEndLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance</link:label>
    <link:label id="lab_us-gaap_StockholdersEquity_label_en-US" xlink:label="lab_us-gaap_StockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stockholders' Equity Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockholdersEquity" xlink:to="lab_us-gaap_StockholdersEquity" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_CityAreaCode_50dbc182-4577-4a64-b8ae-6a5697e442f6_terseLabel_en-US" xlink:label="lab_dei_CityAreaCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">City Area Code</link:label>
    <link:label id="lab_dei_CityAreaCode_label_en-US" xlink:label="lab_dei_CityAreaCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">City Area Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CityAreaCode" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_CityAreaCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_CityAreaCode" xlink:to="lab_dei_CityAreaCode" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_a9712669-7086-4d31-9e1c-e12305b7a780_terseLabel_en-US" xlink:label="lab_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease expense for which no liability or asset was recognized</link:label>
    <link:label id="lab_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_label_en-US" xlink:label="lab_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Expense, No Liability Or Asset Recognized</link:label>
    <link:label id="lab_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_documentation_en-US" xlink:label="lab_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Expense, No Liability Or Asset Recognized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized" xlink:href="cgnx-20211231.xsd#cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized" xlink:to="lab_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_MaximumInvestmentOfCompanyInPartnership_816c1206-b5e7-4c12-a2f4-3ea5aa6fcb93_terseLabel_en-US" xlink:label="lab_cgnx_MaximumInvestmentOfCompanyInPartnership" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum investment of the company in partnership</link:label>
    <link:label id="lab_cgnx_MaximumInvestmentOfCompanyInPartnership_label_en-US" xlink:label="lab_cgnx_MaximumInvestmentOfCompanyInPartnership" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum Investment Of Company In Partnership</link:label>
    <link:label id="lab_cgnx_MaximumInvestmentOfCompanyInPartnership_documentation_en-US" xlink:label="lab_cgnx_MaximumInvestmentOfCompanyInPartnership" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum investment of the company in partnership.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MaximumInvestmentOfCompanyInPartnership" xlink:href="cgnx-20211231.xsd#cgnx_MaximumInvestmentOfCompanyInPartnership"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_MaximumInvestmentOfCompanyInPartnership" xlink:to="lab_cgnx_MaximumInvestmentOfCompanyInPartnership" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_5d3bb872-842e-4fb5-89b5-3688508abe70_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill and Intangible Assets Disclosure [Abstract]</link:label>
    <link:label id="lab_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill and Intangible Assets Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract" xlink:to="lab_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_e209ade5-a28f-4b4e-806b-ecc4dd65c0ff_terseLabel_en-US" xlink:label="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property Subject to or Available for Operating Lease [Domain]</link:label>
    <link:label id="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_label_en-US" xlink:label="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property Subject to or Available for Operating Lease [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain" xlink:to="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IntangibleAssetsDisclosureTextBlock_9fd842fb-7258-43e6-b2d1-e675ef6e8f50_terseLabel_en-US" xlink:label="lab_us-gaap_IntangibleAssetsDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets</link:label>
    <link:label id="lab_us-gaap_IntangibleAssetsDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_IntangibleAssetsDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IntangibleAssetsDisclosureTextBlock" xlink:to="lab_us-gaap_IntangibleAssetsDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsForRepurchaseOfCommonStock_01104947-017c-4c1d-9459-f9b776e23f6c_negatedLabel_en-US" xlink:label="lab_us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase of common stock</link:label>
    <link:label id="lab_us-gaap_PaymentsForRepurchaseOfCommonStock_label_en-US" xlink:label="lab_us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments for Repurchase of Common Stock</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:to="lab_us-gaap_PaymentsForRepurchaseOfCommonStock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife_1ef44e2c-19ff-409f-96f6-fb4a761a067c_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Useful Life</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Useful Life</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentUsefulLife" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockholdersEquityAbstract_42db2780-e27a-44c5-aa98-3ff1598434c8_terseLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shareholders&#8217; equity:</link:label>
    <link:label id="lab_us-gaap_StockholdersEquityAbstract_label_en-US" xlink:label="lab_us-gaap_StockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stockholders' Equity Attributable to Parent [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquityAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockholdersEquityAbstract" xlink:to="lab_us-gaap_StockholdersEquityAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityNameDomain_d79d9567-c5b0-49a4-b394-2548c534dbd2_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority, Name [Domain]</link:label>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityNameDomain_label_en-US" xlink:label="lab_us-gaap_IncomeTaxAuthorityNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Authority, Name [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain" xlink:to="lab_us-gaap_IncomeTaxAuthorityNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityNoncurrent_4899443f-d095-4ffa-a31b-4d82ea940689_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Non-current operating lease liabilities</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityNoncurrent_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Liability, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:to="lab_us-gaap_OperatingLeaseLiabilityNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentIncomeTaxExpenseBenefit_5df6a520-5ef8-41dc-a0bf-1073cef7df2f_totalLabel_en-US" xlink:label="lab_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current income tax expense (benefit), Total</link:label>
    <link:label id="lab_us-gaap_CurrentIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_CurrentIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_37bdc97e-9cf2-498a-8057-35066f4ed08c_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax benefit recognized related to stock-based compensation expense</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Expense, Tax Benefit</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfTwoYear_c4145980-84eb-4609-ab27-3baf74cceea8_terseLabel_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfTwoYear" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company contributions vest at end of two years</link:label>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfTwoYear_label_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfTwoYear" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company Contributions Vest At End Of Two Year</link:label>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfTwoYear_documentation_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfTwoYear" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company contributions vest at end of two year.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfTwoYear"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear" xlink:to="lab_cgnx_CompanyContributionsVestAtEndOfTwoYear" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock_23ce5328-6b8e-40ab-83a4-5c1634894b2a_terseLabel_en-US" xlink:label="lab_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research and Development</link:label>
    <link:label id="lab_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research, Development, and Computer Software, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock" xlink:to="lab_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativesFairValueLineItems_23757a21-f166-4e37-b8b2-fd4c304b54a2_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativesFairValueLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivatives, Fair Value [Line Items]</link:label>
    <link:label id="lab_us-gaap_DerivativesFairValueLineItems_label_en-US" xlink:label="lab_us-gaap_DerivativesFairValueLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivatives, Fair Value [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativesFairValueLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativesFairValueLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativesFairValueLineItems" xlink:to="lab_us-gaap_DerivativesFairValueLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestrictedStockUnitsRSUMember_920cb422-eb5b-49a4-9f5c-5ba9495d33d3_terseLabel_en-US" xlink:label="lab_us-gaap_RestrictedStockUnitsRSUMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restricted Stock Units (RSUs) [Member]</link:label>
    <link:label id="lab_us-gaap_RestrictedStockUnitsRSUMember_label_en-US" xlink:label="lab_us-gaap_RestrictedStockUnitsRSUMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restricted Stock Units (RSUs) [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockUnitsRSUMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockUnitsRSUMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestrictedStockUnitsRSUMember" xlink:to="lab_us-gaap_RestrictedStockUnitsRSUMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_USTreasuryBillSecuritiesMember_9b0e466e-4028-4689-a6e6-9bdf55f665a8_verboseLabel_en-US" xlink:label="lab_us-gaap_USTreasuryBillSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Treasury Bills [Member]</link:label>
    <link:label id="lab_us-gaap_USTreasuryBillSecuritiesMember_label_en-US" xlink:label="lab_us-gaap_USTreasuryBillSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">US Treasury Bill Securities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasuryBillSecuritiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasuryBillSecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_USTreasuryBillSecuritiesMember" xlink:to="lab_us-gaap_USTreasuryBillSecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_RestatementDomain_657ffe8a-78d2-4be2-a7b6-5b98ac2146f1_terseLabel_en-US" xlink:label="lab_srt_RestatementDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restatement [Domain]</link:label>
    <link:label id="lab_srt_RestatementDomain_label_en-US" xlink:label="lab_srt_RestatementDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revision of Prior Period [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementDomain" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_RestatementDomain" xlink:to="lab_srt_RestatementDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts_9883675b-a580-4afa-b604-3a58cc1d87f4_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Other Account</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Other Account</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessAcquisitionLineItems_e530d004-7fc9-4a75-83eb-1ed2af227eec_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessAcquisitionLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Acquisition [Line Items]</link:label>
    <link:label id="lab_us-gaap_BusinessAcquisitionLineItems_label_en-US" xlink:label="lab_us-gaap_BusinessAcquisitionLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Acquisition [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems" xlink:to="lab_us-gaap_BusinessAcquisitionLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxLiabilities_b36db962-277a-46c3-b451-dcfb7d5e3eb5_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxLiabilities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax liabilities</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxLiabilities_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxLiabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Liabilities, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxLiabilities" xlink:to="lab_us-gaap_DeferredIncomeTaxLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch_344ceaaf-9bbe-45a9-a7ed-ef53dd2305dc_terseLabel_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company match percent</link:label>
    <link:label id="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch_label_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Defined Contribution Plan, Employer Matching Contribution, Percent of Match</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" xlink:to="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareRepurchaseProgramAxis_d92d8830-ff9c-46c3-b0be-9ffb532c9dde_terseLabel_en-US" xlink:label="lab_us-gaap_ShareRepurchaseProgramAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share Repurchase Program [Axis]</link:label>
    <link:label id="lab_us-gaap_ShareRepurchaseProgramAxis_label_en-US" xlink:label="lab_us-gaap_ShareRepurchaseProgramAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share Repurchase Program [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareRepurchaseProgramAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareRepurchaseProgramAxis" xlink:to="lab_us-gaap_ShareRepurchaseProgramAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeStatementAbstract_87ca9acc-f6ba-4874-9e0b-92af117d411a_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeStatementAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement [Abstract]</link:label>
    <link:label id="lab_us-gaap_IncomeStatementAbstract_label_en-US" xlink:label="lab_us-gaap_IncomeStatementAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeStatementAbstract" xlink:to="lab_us-gaap_IncomeStatementAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityRegistrantName_0564268e-4f66-46c0-9048-3df38c6a597c_terseLabel_en-US" xlink:label="lab_dei_EntityRegistrantName" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:label id="lab_dei_EntityRegistrantName_label_en-US" xlink:label="lab_dei_EntityRegistrantName" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Registrant Name</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityRegistrantName" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityRegistrantName"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityRegistrantName" xlink:to="lab_dei_EntityRegistrantName" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ChangeInAccountingEstimateLineItems_b71785e8-2829-4ff9-abd1-b505ba971759_terseLabel_en-US" xlink:label="lab_us-gaap_ChangeInAccountingEstimateLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in Accounting Estimate [Line Items]</link:label>
    <link:label id="lab_us-gaap_ChangeInAccountingEstimateLineItems_label_en-US" xlink:label="lab_us-gaap_ChangeInAccountingEstimateLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in Accounting Estimate [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems" xlink:to="lab_us-gaap_ChangeInAccountingEstimateLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_LongTermInvestmentsMember_add8e42c-4555-414f-b9fd-481e88e6cd95_terseLabel_en-US" xlink:label="lab_cgnx_LongTermInvestmentsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-term investments [Member]</link:label>
    <link:label id="lab_cgnx_LongTermInvestmentsMember_label_en-US" xlink:label="lab_cgnx_LongTermInvestmentsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long Term Investments [Member]</link:label>
    <link:label id="lab_cgnx_LongTermInvestmentsMember_documentation_en-US" xlink:label="lab_cgnx_LongTermInvestmentsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-term investments.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_LongTermInvestmentsMember" xlink:href="cgnx-20211231.xsd#cgnx_LongTermInvestmentsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_LongTermInvestmentsMember" xlink:to="lab_cgnx_LongTermInvestmentsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesDeductions_366b7a10-bff8-468b-8d73-da8b5d4d2d67_negatedLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deductions</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesDeductions_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Deduction</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDeductions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesDeductions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued_e4547006-aa26-42c3-9998-74409e25dfb8_terseLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Provisions for warranties issued during the period</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued_label_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard and Extended Product Warranty Accrual, Increase for Warranties Issued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrualWarrantiesIssued"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:to="lab_us-gaap_ProductWarrantyAccrualWarrantiesIssued" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxExpenseBenefit_e7461f00-502a-4e91-86bb-583d8224f1f9_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax expense on continuing operations</link:label>
    <link:label id="lab_us-gaap_IncomeTaxExpenseBenefit_2efbc698-765a-4059-93e1-c759502b7cb1_totalLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax expense (benefit), continuing operations, Total</link:label>
    <link:label id="lab_us-gaap_IncomeTaxExpenseBenefit_6ad62f38-e2cd-45e0-b395-ca10bdc6d08c_verboseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax expense (benefit)</link:label>
    <link:label id="lab_us-gaap_IncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_IncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillOtherIncreaseDecrease_df3e00af-5b35-428c-a78e-6d43e63c5570_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillOtherIncreaseDecrease" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill, Other Increase (Decrease)</link:label>
    <link:label id="lab_us-gaap_GoodwillOtherIncreaseDecrease_label_en-US" xlink:label="lab_us-gaap_GoodwillOtherIncreaseDecrease" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill, Other Increase (Decrease)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillOtherIncreaseDecrease" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillOtherIncreaseDecrease"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillOtherIncreaseDecrease" xlink:to="lab_us-gaap_GoodwillOtherIncreaseDecrease" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsReceivableNetCurrent_bdaa1d32-847d-49e0-bf8a-33e966dc97a7_terseLabel_en-US" xlink:label="lab_us-gaap_AccountsReceivableNetCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts receivable, allowance for credit losses of $776 and $831 in 2021 and 2020, respectively</link:label>
    <link:label id="lab_us-gaap_AccountsReceivableNetCurrent_label_en-US" xlink:label="lab_us-gaap_AccountsReceivableNetCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, after Allowance for Credit Loss, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableNetCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsReceivableNetCurrent" xlink:to="lab_us-gaap_AccountsReceivableNetCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsInventory_3744351a-ef7d-4622-b6a6-888e2b4b1ca1_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsInventory" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory and revenue related</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsInventory_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsInventory" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Inventory</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsInventory" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsInventory"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsInventory" xlink:to="lab_us-gaap_DeferredTaxAssetsInventory" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_a17065bc-7291-4066-9ecb-d87e2d5fe4bc_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) [Table]</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityTaxIdentificationNumber_925a9fd6-ee81-480e-b864-19a86cbf22d5_terseLabel_en-US" xlink:label="lab_dei_EntityTaxIdentificationNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:label id="lab_dei_EntityTaxIdentificationNumber_label_en-US" xlink:label="lab_dei_EntityTaxIdentificationNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Tax Identification Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityTaxIdentificationNumber" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityTaxIdentificationNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityTaxIdentificationNumber" xlink:to="lab_dei_EntityTaxIdentificationNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InvestmentTypeAxis_92924ffb-664c-45a7-b012-7d8c21f78d0e_terseLabel_en-US" xlink:label="lab_us-gaap_InvestmentTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investment Type [Axis]</link:label>
    <link:label id="lab_us-gaap_InvestmentTypeAxis_label_en-US" xlink:label="lab_us-gaap_InvestmentTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investment Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InvestmentTypeAxis" xlink:to="lab_us-gaap_InvestmentTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentFiscalPeriodFocus_d2305af2-4bc0-4d61-be1e-0a35b14db7de_terseLabel_en-US" xlink:label="lab_dei_DocumentFiscalPeriodFocus" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Fiscal Period Focus</link:label>
    <link:label id="lab_dei_DocumentFiscalPeriodFocus_label_en-US" xlink:label="lab_dei_DocumentFiscalPeriodFocus" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Fiscal Period Focus</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalPeriodFocus" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentFiscalPeriodFocus"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentFiscalPeriodFocus" xlink:to="lab_dei_DocumentFiscalPeriodFocus" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetsCurrent_a5be63fd-ca8b-405f-9568-ba862d383d58_totalLabel_en-US" xlink:label="lab_us-gaap_AssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total current assets</link:label>
    <link:label id="lab_us-gaap_AssetsCurrent_label_en-US" xlink:label="lab_us-gaap_AssetsCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetsCurrent" xlink:to="lab_us-gaap_AssetsCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsReceivableMember_76fc4356-cab7-415c-b18a-d100477a651a_terseLabel_en-US" xlink:label="lab_us-gaap_AccountsReceivableMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable [Member]</link:label>
    <link:label id="lab_us-gaap_AccountsReceivableMember_label_en-US" xlink:label="lab_us-gaap_AccountsReceivableMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsReceivableMember" xlink:to="lab_us-gaap_AccountsReceivableMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_d8428268-c527-4edb-ba14-28ceff9918ca_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, Payments, Due</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_429411c5-bb80-4792-8b51-401345d1f42f_totalLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_087068f7-341e-4d72-9f91-f7b7bb0255ab_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Forfeited or expired</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Forfeited in Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfStockByClassTable_f70f2f74-16ac-424a-9cb1-9d20d5b29a37_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfStockByClassTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Stock by Class [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfStockByClassTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfStockByClassTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Stock by Class [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfStockByClassTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfStockByClassTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfStockByClassTable" xlink:to="lab_us-gaap_ScheduleOfStockByClassTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_2a951cdb-7491-4c14-b0f1-9676a2e50959_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-Based Compensation</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:to="lab_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockRepurchasedDuringPeriodValue_35f72449-961c-4a47-a9bd-0584f438e9ba_negatedLabel_en-US" xlink:label="lab_us-gaap_StockRepurchasedDuringPeriodValue" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase of common stock</link:label>
    <link:label id="lab_us-gaap_StockRepurchasedDuringPeriodValue_59268c59-f186-4fc0-87c2-7f93e219547e_verboseLabel_en-US" xlink:label="lab_us-gaap_StockRepurchasedDuringPeriodValue" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase of common stock</link:label>
    <link:label id="lab_us-gaap_StockRepurchasedDuringPeriodValue_label_en-US" xlink:label="lab_us-gaap_StockRepurchasedDuringPeriodValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchased During Period, Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockRepurchasedDuringPeriodValue" xlink:to="lab_us-gaap_StockRepurchasedDuringPeriodValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementOfFinancialPositionAbstract_dc646e1b-c181-4ba7-92e0-07eecfd8c914_terseLabel_en-US" xlink:label="lab_us-gaap_StatementOfFinancialPositionAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Financial Position [Abstract]</link:label>
    <link:label id="lab_us-gaap_StatementOfFinancialPositionAbstract_label_en-US" xlink:label="lab_us-gaap_StatementOfFinancialPositionAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Financial Position [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfFinancialPositionAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract" xlink:to="lab_us-gaap_StatementOfFinancialPositionAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsAbstract_33671e68-06ed-4811-94cd-1bc4e33e4046_terseLabel_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts [Abstract]</link:label>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsAbstract_label_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsAbstract" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ValuationAndQualifyingAccountsAbstract" xlink:to="lab_srt_ValuationAndQualifyingAccountsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock_1ce4dff1-23d8-44b1-8f20-8218e06756b9_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Change in Accounting Policy</link:label>
    <link:label id="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Change in Accounting Estimate [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock" xlink:to="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_48e805c3-6f90-46f0-8f53-ff05118ef497_terseLabel_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total unrecognized compensation expense related to non-vested stock options</link:label>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_label_en-US" xlink:label="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Nonvested Award, Option, Cost Not yet Recognized, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:to="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain_691dc65e-9716-4ded-9096-58d0115f5df4_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Type [Domain]</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-Lived Tangible Asset [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentTypeDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock_7984008b-f0a2-4f84-88b4-e3ead3dcc1d6_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Calculation of Weighted Average Shares</link:label>
    <link:label id="lab_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Weighted Average Number of Shares [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeInstrumentsGainLossLineItems_f4e8594c-5135-4dd5-bdb4-65c3c8ab3788_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeInstrumentsGainLossLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments, Gain (Loss) [Line Items]</link:label>
    <link:label id="lab_us-gaap_DerivativeInstrumentsGainLossLineItems_label_en-US" xlink:label="lab_us-gaap_DerivativeInstrumentsGainLossLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments, Gain (Loss) [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsGainLossLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossLineItems" xlink:to="lab_us-gaap_DerivativeInstrumentsGainLossLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SalesRevenueNetMember_86b65f37-dd91-449a-a3a2-005bef0275b1_verboseLabel_en-US" xlink:label="lab_us-gaap_SalesRevenueNetMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total Revenue</link:label>
    <link:label id="lab_us-gaap_SalesRevenueNetMember_label_en-US" xlink:label="lab_us-gaap_SalesRevenueNetMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue Benchmark [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesRevenueNetMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SalesRevenueNetMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SalesRevenueNetMember" xlink:to="lab_us-gaap_SalesRevenueNetMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_dd07326f-5152-480b-adf9-3c88b20d6b2a_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average grant-date fair values of stock options granted</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EquityComponentDomain_385179cf-8a74-482c-97eb-d3721a5c5315_terseLabel_en-US" xlink:label="lab_us-gaap_EquityComponentDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Component [Domain]</link:label>
    <link:label id="lab_us-gaap_EquityComponentDomain_label_en-US" xlink:label="lab_us-gaap_EquityComponentDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Component [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EquityComponentDomain" xlink:to="lab_us-gaap_EquityComponentDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_ddc4a8cc-3513-4ef2-96d8-8ca626907952_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2022</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year One</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ExcessAndObsoleteInventoryCharges_786f1807-6d68-4c0e-ab2b-dde903ed4a04_terseLabel_en-US" xlink:label="lab_cgnx_ExcessAndObsoleteInventoryCharges" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Excess and Obsolete Inventory Charges</link:label>
    <link:label id="lab_cgnx_ExcessAndObsoleteInventoryCharges_label_en-US" xlink:label="lab_cgnx_ExcessAndObsoleteInventoryCharges" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Excess and Obsolete Inventory Charges</link:label>
    <link:label id="lab_cgnx_ExcessAndObsoleteInventoryCharges_documentation_en-US" xlink:label="lab_cgnx_ExcessAndObsoleteInventoryCharges" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Excess and Obsolete Inventory Charges</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExcessAndObsoleteInventoryCharges" xlink:href="cgnx-20211231.xsd#cgnx_ExcessAndObsoleteInventoryCharges"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ExcessAndObsoleteInventoryCharges" xlink:to="lab_cgnx_ExcessAndObsoleteInventoryCharges" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AssetBackedSecuritiesFairValueDisclosure_709158ce-d207-4510-98bc-84e678ddedd8_verboseLabel_en-US" xlink:label="lab_cgnx_AssetBackedSecuritiesFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Asset-backed securities</link:label>
    <link:label id="lab_cgnx_AssetBackedSecuritiesFairValueDisclosure_label_en-US" xlink:label="lab_cgnx_AssetBackedSecuritiesFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Asset Backed Securities Fair Value Disclosure</link:label>
    <link:label id="lab_cgnx_AssetBackedSecuritiesFairValueDisclosure_documentation_en-US" xlink:label="lab_cgnx_AssetBackedSecuritiesFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Asset Backed Securities Fair Value Disclosure</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure" xlink:href="cgnx-20211231.xsd#cgnx_AssetBackedSecuritiesFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure" xlink:to="lab_cgnx_AssetBackedSecuritiesFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ExpirationPeriodOfStockOptionPlan_5afe3274-63c8-4c95-8535-105003ae116c_terseLabel_en-US" xlink:label="lab_cgnx_ExpirationPeriodOfStockOptionPlan" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Expiration period of stock option plan</link:label>
    <link:label id="lab_cgnx_ExpirationPeriodOfStockOptionPlan_label_en-US" xlink:label="lab_cgnx_ExpirationPeriodOfStockOptionPlan" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Expiration Period Of Stock Option Plan</link:label>
    <link:label id="lab_cgnx_ExpirationPeriodOfStockOptionPlan_documentation_en-US" xlink:label="lab_cgnx_ExpirationPeriodOfStockOptionPlan" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Expiration period of stock option plan.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExpirationPeriodOfStockOptionPlan" xlink:href="cgnx-20211231.xsd#cgnx_ExpirationPeriodOfStockOptionPlan"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ExpirationPeriodOfStockOptionPlan" xlink:to="lab_cgnx_ExpirationPeriodOfStockOptionPlan" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_6737bf35-8bea-4c2e-b7e6-d9047370b9dd_terseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-term investments</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" xlink:to="lab_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsToAcquireInvestments_ee0e3385-89c5-4775-9d57-8b1698d10b52_negatedLabel_en-US" xlink:label="lab_us-gaap_PaymentsToAcquireInvestments" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchases of investments</link:label>
    <link:label id="lab_us-gaap_PaymentsToAcquireInvestments_label_en-US" xlink:label="lab_us-gaap_PaymentsToAcquireInvestments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments to Acquire Investments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireInvestments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireInvestments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsToAcquireInvestments" xlink:to="lab_us-gaap_PaymentsToAcquireInvestments" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_JPY_898e897f-39b5-4f8f-b677-6dd2d64b8a5e_terseLabel_en-US" xlink:label="lab_currency_JPY" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Japanese Yen [Member]</link:label>
    <link:label id="lab_currency_JPY_label_en-US" xlink:label="lab_currency_JPY" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Japan, Yen</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_JPY" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_JPY"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_JPY" xlink:to="lab_currency_JPY" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_4612ed4a-e3bb-40ae-b0c2-fab489813df5_terseLabel_en-US" xlink:label="lab_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maturities and sales of investments</link:label>
    <link:label id="lab_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_label_en-US" xlink:label="lab_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds from Sale, Maturity and Collection of Investments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments" xlink:to="lab_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShortTermInvestmentsMember_d1d2396f-29e0-4e4b-b053-457655d9d0cd_terseLabel_en-US" xlink:label="lab_us-gaap_ShortTermInvestmentsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Short-term Investments [Member]</link:label>
    <link:label id="lab_us-gaap_ShortTermInvestmentsMember_label_en-US" xlink:label="lab_us-gaap_ShortTermInvestmentsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Short-term Investments [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShortTermInvestmentsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShortTermInvestmentsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShortTermInvestmentsMember" xlink:to="lab_us-gaap_ShortTermInvestmentsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_3af384ab-ed87-45dc-bda8-8ca0bfb2e90d_terseLabel_en-US" xlink:label="lab_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Credit recoveries</link:label>
    <link:label id="lab_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_label_en-US" xlink:label="lab_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Than Temporary Impairment Losses Investments Portion Recognized In Earnings Net, non current</link:label>
    <link:label id="lab_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_documentation_en-US" xlink:label="lab_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Than Temporary Impairment Losses Investments Portion Recognized In Earnings Net, non current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" xlink:href="cgnx-20211231.xsd#cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" xlink:to="lab_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_d0c8a51f-8387-41f6-ae3d-88d2579ffc92_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2025</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year Four</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_32613f57-61e4-40e0-82b4-ff8dc9463162_totalLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income before income tax expense (benefit)</link:label>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_3016693d-433e-41ea-b000-5d5baae80a73_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income before income tax expense</link:label>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_label_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:to="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueInputsLevel2Member_d842ba22-e677-4575-a7a6-ad115b1ae38f_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel2Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Significant&#160;Other Observable Inputs (Level&#160;2)</link:label>
    <link:label id="lab_us-gaap_FairValueInputsLevel2Member_label_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel2Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Inputs, Level 2 [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel2Member" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel2Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueInputsLevel2Member" xlink:to="lab_us-gaap_FairValueInputsLevel2Member" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_OtherAsiaMember_189aeb10-1663-4a56-b60c-3b60b596658c_terseLabel_en-US" xlink:label="lab_cgnx_OtherAsiaMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Asia [Member]</link:label>
    <link:label id="lab_cgnx_OtherAsiaMember_label_en-US" xlink:label="lab_cgnx_OtherAsiaMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Asia [Member]</link:label>
    <link:label id="lab_cgnx_OtherAsiaMember_documentation_en-US" xlink:label="lab_cgnx_OtherAsiaMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Asia [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherAsiaMember" xlink:href="cgnx-20211231.xsd#cgnx_OtherAsiaMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_OtherAsiaMember" xlink:to="lab_cgnx_OtherAsiaMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AuditorLocation_6ef1b04d-bf60-4e5a-89ae-b12943b40536_terseLabel_en-US" xlink:label="lab_dei_AuditorLocation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Location</link:label>
    <link:label id="lab_dei_AuditorLocation_label_en-US" xlink:label="lab_dei_AuditorLocation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Location</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorLocation" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AuditorLocation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AuditorLocation" xlink:to="lab_dei_AuditorLocation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeGainLossOnDerivativeNet_d668820e-2cbe-4bd3-bcaa-ba18b7001d39_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeGainLossOnDerivativeNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gains (losses) recognized in net income</link:label>
    <link:label id="lab_us-gaap_DerivativeGainLossOnDerivativeNet_label_en-US" xlink:label="lab_us-gaap_DerivativeGainLossOnDerivativeNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative, Gain (Loss) on Derivative, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeGainLossOnDerivativeNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeGainLossOnDerivativeNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeGainLossOnDerivativeNet" xlink:to="lab_us-gaap_DerivativeGainLossOnDerivativeNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_bc063183-2010-4cfd-a626-4b1b823a2318_totalLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Unrealized Loss Position</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SegmentReportingAbstract_67a97a98-2063-42e7-9a7a-73368402cd91_terseLabel_en-US" xlink:label="lab_us-gaap_SegmentReportingAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Segment Reporting [Abstract]</link:label>
    <link:label id="lab_us-gaap_SegmentReportingAbstract_label_en-US" xlink:label="lab_us-gaap_SegmentReportingAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Segment Reporting [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SegmentReportingAbstract" xlink:to="lab_us-gaap_SegmentReportingAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TypeOfRestructuringDomain_91d63e40-2d1c-4d7d-a36e-be75c3a006e1_terseLabel_en-US" xlink:label="lab_us-gaap_TypeOfRestructuringDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Type of Restructuring [Domain]</link:label>
    <link:label id="lab_us-gaap_TypeOfRestructuringDomain_label_en-US" xlink:label="lab_us-gaap_TypeOfRestructuringDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Type of Restructuring [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TypeOfRestructuringDomain" xlink:to="lab_us-gaap_TypeOfRestructuringDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_2f2dc850-5e40-4e60-8f11-c3d4673a4e42_totalLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amortized Cost</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Amortized Cost</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:to="lab_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent_291458d2-2d9e-47f8-a49e-bfa6a3258b68_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Amortized Cost, Noncurrent</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Amortized Cost, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetUsefulLife_b59ea79f-b8f6-4a1b-a4cb-82a2eeeb4f32_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Asset, Useful Life</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetUsefulLife_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Asset, Useful Life</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetUsefulLife" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ChiaroTechnologiesLLCMember_93722105-0008-4f1b-a892-105293c26544_terseLabel_en-US" xlink:label="lab_cgnx_ChiaroTechnologiesLLCMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Chiaro Technologies LLC</link:label>
    <link:label id="lab_cgnx_ChiaroTechnologiesLLCMember_label_en-US" xlink:label="lab_cgnx_ChiaroTechnologiesLLCMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Chiaro Technologies LLC [Member]</link:label>
    <link:label id="lab_cgnx_ChiaroTechnologiesLLCMember_documentation_en-US" xlink:label="lab_cgnx_ChiaroTechnologiesLLCMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Chiaro Technologies LLC [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChiaroTechnologiesLLCMember" xlink:href="cgnx-20211231.xsd#cgnx_ChiaroTechnologiesLLCMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ChiaroTechnologiesLLCMember" xlink:to="lab_cgnx_ChiaroTechnologiesLLCMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UseOfEstimates_86d16ac9-8b4a-4391-afa9-97a3e4566afd_terseLabel_en-US" xlink:label="lab_us-gaap_UseOfEstimates" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Use of Estimates in the Preparation of Financial Statements</link:label>
    <link:label id="lab_us-gaap_UseOfEstimates_label_en-US" xlink:label="lab_us-gaap_UseOfEstimates" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Use of Estimates, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UseOfEstimates" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UseOfEstimates"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UseOfEstimates" xlink:to="lab_us-gaap_UseOfEstimates" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_af428b19-b86c-4f3c-8f33-dcba59ac4638_totalLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other comprehensive income (loss), net of tax</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Net of Tax, Portion Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:to="lab_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_Security12bTitle_f7911869-7598-4d3a-a982-03572af2992d_terseLabel_en-US" xlink:label="lab_dei_Security12bTitle" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:label id="lab_dei_Security12bTitle_label_en-US" xlink:label="lab_dei_Security12bTitle" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Title of 12(b) Security</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_Security12bTitle" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_Security12bTitle"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_Security12bTitle" xlink:to="lab_dei_Security12bTitle" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign_e011b6a2-4fb0-4d16-8e52-6a97fe041370_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Tax Credit Carryforwards, Foreign</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Tax Credit Carryforwards, Foreign</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign" xlink:to="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_RestatementAdjustmentMember_a0e69423-6878-44e4-bcbf-a00fb188d906_terseLabel_en-US" xlink:label="lab_srt_RestatementAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revision of Prior Period, Adjustment [Member]</link:label>
    <link:label id="lab_srt_RestatementAdjustmentMember_label_en-US" xlink:label="lab_srt_RestatementAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revision of Prior Period, Adjustment [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAdjustmentMember" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementAdjustmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_RestatementAdjustmentMember" xlink:to="lab_srt_RestatementAdjustmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockSharesAuthorized_7196bbc2-c1ca-48f9-8aa7-8fab8eff9962_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, shares authorized</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesAuthorized_label_en-US" xlink:label="lab_us-gaap_CommonStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Shares Authorized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesAuthorized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockSharesAuthorized" xlink:to="lab_us-gaap_CommonStockSharesAuthorized" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease_6c91edd0-b042-4539-8793-3de3e518bf03_terseLabel_en-US" xlink:label="lab_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred revenue and customer deposits</link:label>
    <link:label id="lab_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease_label_en-US" xlink:label="lab_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract With Customer, Liability, Period Increase (Decrease)</link:label>
    <link:label id="lab_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease_documentation_en-US" xlink:label="lab_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract With Customer, Liability, Period Increase (Decrease)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease" xlink:href="cgnx-20211231.xsd#cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease" xlink:to="lab_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_9d11a6e0-8020-4987-9901-84966356b65e_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete tax expense (benefit) related to tax return filings</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Settlement, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentType_517b8bab-9440-4cac-a916-2a6eb3b59821_terseLabel_en-US" xlink:label="lab_dei_DocumentType" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Type</link:label>
    <link:label id="lab_dei_DocumentType_label_en-US" xlink:label="lab_dei_DocumentType" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Type</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentType" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentType"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentType" xlink:to="lab_dei_DocumentType" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ProductsAndServicesDomain_033c0315-0d76-4b24-9be2-3845c5f28d2d_terseLabel_en-US" xlink:label="lab_srt_ProductsAndServicesDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product and Service [Domain]</link:label>
    <link:label id="lab_srt_ProductsAndServicesDomain_label_en-US" xlink:label="lab_srt_ProductsAndServicesDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product and Service [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductsAndServicesDomain" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductsAndServicesDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ProductsAndServicesDomain" xlink:to="lab_srt_ProductsAndServicesDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationContingentConsiderationLiability_d7806506-cbe1-4291-afcc-ba035b2585b8_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contingent consideration liabilities</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationContingentConsiderationLiability_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combination, Contingent Consideration, Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:to="lab_us-gaap_BusinessCombinationContingentConsiderationLiability" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_a9ed1f2f-75c1-4511-84a3-0aff2c653e10_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueByMeasurementFrequencyAxis_cef8561f-fb59-41a6-8bed-c33fcc7cf83c_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Measurement Frequency [Axis]</link:label>
    <link:label id="lab_us-gaap_FairValueByMeasurementFrequencyAxis_label_en-US" xlink:label="lab_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Measurement Frequency [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:to="lab_us-gaap_FairValueByMeasurementFrequencyAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_dabff35b-1932-48da-8efa-7650b3a7f4a5_totalLabel_en-US" xlink:label="lab_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total</link:label>
    <link:label id="lab_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_label_en-US" xlink:label="lab_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash Cash Equivalents Short Term And Long Term Investments</link:label>
    <link:label id="lab_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_documentation_en-US" xlink:label="lab_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, cash equivalents, short term and long term investments.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments" xlink:href="cgnx-20211231.xsd#cgnx_CashCashEquivalentsShortTermAndLongTermInvestments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments" xlink:to="lab_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_9f6f7486-9840-45aa-8570-dadfae739f95_negatedLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reclassification of net realized (gain) loss into current operations</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_c17a7761-d708-4754-9cb7-01d0ef6e5995_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reclassification of net realized (gain) loss on the sale of available-for-sale investments</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_985d7829-6486-4c5b-878d-90b31b4e8294_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net realized gains reclassified into current operations</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Reclassification Adjustment from AOCI for Sale of Securities, Net of Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_5ff9d302-128f-4991-b093-550800759d64_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Valuation Allowance [Member]</link:label>
    <link:label id="lab_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_label_en-US" xlink:label="lab_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowance, Deferred Tax Asset [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:to="lab_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_4123c188-a114-463e-b168-3a3dec4fc73d_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Share-based Compensation, Shares Authorized under Stock Option Plans, by Exercise Price Range [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Option, Exercise Price Range [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable" xlink:to="lab_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CorporateBondSecuritiesMember_9fc36410-4189-4de5-8844-626b5c8685b5_terseLabel_en-US" xlink:label="lab_us-gaap_CorporateBondSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Corporate Bonds [Member]</link:label>
    <link:label id="lab_us-gaap_CorporateBondSecuritiesMember_label_en-US" xlink:label="lab_us-gaap_CorporateBondSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Corporate Bond Securities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CorporateBondSecuritiesMember" xlink:to="lab_us-gaap_CorporateBondSecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ChangeInAccountingEstimateByTypeAxis_9e168312-9c5c-4956-813e-8d018f7ab94c_terseLabel_en-US" xlink:label="lab_us-gaap_ChangeInAccountingEstimateByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in Accounting Estimate by Type [Axis]</link:label>
    <link:label id="lab_us-gaap_ChangeInAccountingEstimateByTypeAxis_label_en-US" xlink:label="lab_us-gaap_ChangeInAccountingEstimateByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in Accounting Estimate by Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateByTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis" xlink:to="lab_us-gaap_ChangeInAccountingEstimateByTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_StatementGeographicalAxis_b8b7cff0-8095-455e-8a50-17a2ed0b341d_terseLabel_en-US" xlink:label="lab_srt_StatementGeographicalAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Geographical [Axis]</link:label>
    <link:label id="lab_srt_StatementGeographicalAxis_label_en-US" xlink:label="lab_srt_StatementGeographicalAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Geographical [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_StatementGeographicalAxis" xlink:to="lab_srt_StatementGeographicalAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_c2deac37-7727-45b2-9c68-a85544cb907c_terseLabel_en-US" xlink:label="lab_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Values Derivatives, Balance Sheet Location, by Derivative Contract Type [Table]</link:label>
    <link:label id="lab_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_label_en-US" xlink:label="lab_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Values Derivatives, Balance Sheet Location, by Derivative Contract Type [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable" xlink:to="lab_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CapitalizedContractCostGross_ded3f26d-5127-4e82-8721-7602e0f0e906_terseLabel_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostGross" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized Contract Cost, Gross</link:label>
    <link:label id="lab_us-gaap_CapitalizedContractCostGross_label_en-US" xlink:label="lab_us-gaap_CapitalizedContractCostGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Capitalized Contract Cost, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostGross" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CapitalizedContractCostGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CapitalizedContractCostGross" xlink:to="lab_us-gaap_CapitalizedContractCostGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventsTextBlock_1df9c1a5-cde4-4e0c-acc9-b6d1d1043809_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventsTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Events</link:label>
    <link:label id="lab_us-gaap_SubsequentEventsTextBlock_label_en-US" xlink:label="lab_us-gaap_SubsequentEventsTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Events [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventsTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventsTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventsTextBlock" xlink:to="lab_us-gaap_SubsequentEventsTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_733d7df1-b697-4f8d-bfbe-cea41ee4c9c9_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete tax benefit for changes to international tax structure</link:label>
    <link:label id="lab_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_label_en-US" xlink:label="lab_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:to="lab_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InvestmentPolicyTextBlock_220d1feb-ab67-4341-92eb-671e3959cb20_terseLabel_en-US" xlink:label="lab_us-gaap_InvestmentPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investment, Policy</link:label>
    <link:label id="lab_us-gaap_InvestmentPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_InvestmentPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investment, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InvestmentPolicyTextBlock" xlink:to="lab_us-gaap_InvestmentPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities_1eb1979b-1c17-45a7-b299-dd463fc5b744_totalLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net cash used in financing activities</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities_014c11ec-7a38-47c3-bbcc-6dd373998b75_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net cash used in financing activities</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Financing Activities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:to="lab_us-gaap_NetCashProvidedByUsedInFinancingActivities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract_d217dd86-b1d9-429d-8c6b-dd6a0d26fc3f_terseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-average common and common-equivalent shares outstanding:</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract_label_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted Average Number of Shares Outstanding, Diluted [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:to="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_SGD_980fe8e7-5b32-4359-84b7-b1cf044cbb47_terseLabel_en-US" xlink:label="lab_currency_SGD" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Singapore Dollar [Member]</link:label>
    <link:label id="lab_currency_SGD_label_en-US" xlink:label="lab_currency_SGD" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Singapore, Dollars</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_SGD" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_SGD"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_SGD" xlink:to="lab_currency_SGD" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_0699745b-0070-45b6-8937-85c130ac5164_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vesting period for stock option plans</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Award Vesting Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_db580ed1-cdf2-4b88-bb00-f7c0d79f4eeb_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax penalties and interest expense</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Income Tax Penalties and Interest Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueDisclosuresTextBlock_5b1328bb-7bcc-4687-82af-3c0dd4046828_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueDisclosuresTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Measurements</link:label>
    <link:label id="lab_us-gaap_FairValueDisclosuresTextBlock_label_en-US" xlink:label="lab_us-gaap_FairValueDisclosuresTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Disclosures [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueDisclosuresTextBlock" xlink:to="lab_us-gaap_FairValueDisclosuresTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DistributionRightsMember_a66ecb9d-0055-496e-9d6a-9a981a252796_verboseLabel_en-US" xlink:label="lab_us-gaap_DistributionRightsMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Distribution Rights [Member]</link:label>
    <link:label id="lab_us-gaap_DistributionRightsMember_6ea6dc6f-dabc-4e51-8d30-1e34b4c53364_terseLabel_en-US" xlink:label="lab_us-gaap_DistributionRightsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Distribution Networks [Member]</link:label>
    <link:label id="lab_us-gaap_DistributionRightsMember_label_en-US" xlink:label="lab_us-gaap_DistributionRightsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Distribution Rights [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DistributionRightsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DistributionRightsMember" xlink:to="lab_us-gaap_DistributionRightsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringCharges_1b67f3fd-74d4-4758-a173-4eab61ea6144_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringCharges" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring charges</link:label>
    <link:label id="lab_us-gaap_RestructuringCharges_9ebcdba6-0edb-4def-8e6b-7141da7351a6_verboseLabel_en-US" xlink:label="lab_us-gaap_RestructuringCharges" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring charges</link:label>
    <link:label id="lab_us-gaap_RestructuringCharges_label_en-US" xlink:label="lab_us-gaap_RestructuringCharges" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Charges</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringCharges" xlink:to="lab_us-gaap_RestructuringCharges" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskByTypeAxis_799afc87-1cd8-4d95-9961-b913b6bf60bf_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Type [Axis]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskByTypeAxis_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskByTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis" xlink:to="lab_us-gaap_ConcentrationRiskByTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedSalariesCurrent_1c9fa9b1-075d-4ec8-956a-7da287badb4b_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedSalariesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Salaries and payroll taxes</link:label>
    <link:label id="lab_us-gaap_AccruedSalariesCurrent_label_en-US" xlink:label="lab_us-gaap_AccruedSalariesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Salaries, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedSalariesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedSalariesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedSalariesCurrent" xlink:to="lab_us-gaap_AccruedSalariesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_11b2a4c9-82d3-4706-a745-a3b09065a95e_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2024</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Asset, Expected Amortization, Year Three</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ForeignCountryMember_81cfb09e-8283-4940-9b37-51daf0de79ac_terseLabel_en-US" xlink:label="lab_us-gaap_ForeignCountryMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Tax Authority [Member]</link:label>
    <link:label id="lab_us-gaap_ForeignCountryMember_label_en-US" xlink:label="lab_us-gaap_ForeignCountryMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Tax Authority [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCountryMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCountryMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ForeignCountryMember" xlink:to="lab_us-gaap_ForeignCountryMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesAbstract_a48e86c2-2c66-4002-933f-06ee0a1b0025_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross deferred tax liabilities:</link:label>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesAbstract_label_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Liabilities, Gross [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxLiabilitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesAbstract" xlink:to="lab_us-gaap_DeferredTaxLiabilitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationsPolicy_e30e8973-5344-4b07-a4c4-ed4724beef86_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationsPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combinations</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationsPolicy_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationsPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combinations Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationsPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationsPolicy" xlink:to="lab_us-gaap_BusinessCombinationsPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeTable_163e3e8d-722f-484d-98e7-d64d8878a45a_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative [Table]</link:label>
    <link:label id="lab_us-gaap_DerivativeTable_label_en-US" xlink:label="lab_us-gaap_DerivativeTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeTable" xlink:to="lab_us-gaap_DerivativeTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_42f5e09e-bfe9-476b-9be8-aef0b46dd7b9_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill</link:label>
    <link:label id="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_label_en-US" xlink:label="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:to="lab_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentPeriodEndDate_ed94a32f-cca8-48d0-937c-01b849fd681c_terseLabel_en-US" xlink:label="lab_dei_DocumentPeriodEndDate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Period End Date</link:label>
    <link:label id="lab_dei_DocumentPeriodEndDate_label_en-US" xlink:label="lab_dei_DocumentPeriodEndDate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Period End Date</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentPeriodEndDate" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentPeriodEndDate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentPeriodEndDate" xlink:to="lab_dei_DocumentPeriodEndDate" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_RetirementAllowance_8b13b541-a5bf-4c22-9729-25c98348501f_terseLabel_en-US" xlink:label="lab_cgnx_RetirementAllowance" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign retirement obligations</link:label>
    <link:label id="lab_cgnx_RetirementAllowance_label_en-US" xlink:label="lab_cgnx_RetirementAllowance" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retirement Allowance</link:label>
    <link:label id="lab_cgnx_RetirementAllowance_documentation_en-US" xlink:label="lab_cgnx_RetirementAllowance" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retirement allowance Japan.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RetirementAllowance" xlink:href="cgnx-20211231.xsd#cgnx_RetirementAllowance"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_RetirementAllowance" xlink:to="lab_cgnx_RetirementAllowance" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskBenchmarkDomain_f2199ca9-0651-482d-8dfe-f00bb6a38052_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Benchmark [Domain]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskBenchmarkDomain_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Benchmark [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:to="lab_us-gaap_ConcentrationRiskBenchmarkDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_9aae40c7-085c-47d8-b6df-e797e441e468_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net unrealized gain (loss) on available-for-sale investments, net of tax</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">OCI, Debt Securities, Available-for-Sale, Gain (Loss), after Adjustment and Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_993c22df-d60e-4513-8227-aa962b0d4e9b_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shares</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1_81c468e1-b336-4f62-9f9d-732ee63131c0_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reduction of accumulated depreciation due to disposals</link:label>
    <link:label id="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1_label_en-US" xlink:label="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Depreciation, Depletion and Amortization, Sale or Disposal of Property, Plant and Equipment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" xlink:to="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SalesReturnsAndAllowancesMember_beff14b9-e93f-4773-ba1d-0661322b11b1_terseLabel_en-US" xlink:label="lab_us-gaap_SalesReturnsAndAllowancesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sales Returns and Allowances [Member]</link:label>
    <link:label id="lab_us-gaap_SalesReturnsAndAllowancesMember_label_en-US" xlink:label="lab_us-gaap_SalesReturnsAndAllowancesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sales Returns and Allowances [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesReturnsAndAllowancesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SalesReturnsAndAllowancesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SalesReturnsAndAllowancesMember" xlink:to="lab_us-gaap_SalesReturnsAndAllowancesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_34be535f-4623-4aac-a2d7-3c81e3c2e300_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State income taxes, net of federal benefit</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, State and Local Income Taxes, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_952b0b1c-1ce6-4379-82e8-972ddd5d448f_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State</link:label>
    <link:label id="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred State and Local Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentTextBlock_f1c16403-9d53-4972-9208-05948cbc058b_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant, and Equipment</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentTextBlock_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_2b48de5e-b386-4abd-bf0c-2d76194ffc17_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax assets, tax credit carryforwards, research</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Tax Credit Carryforwards, Research</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch" xlink:to="lab_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeStatementLocationDomain_88827509-2393-4c64-a58b-a82eb16635b7_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement Location [Domain]</link:label>
    <link:label id="lab_us-gaap_IncomeStatementLocationDomain_4592ac76-7737-4cef-a9a0-18ee3fa67ab3_verboseLabel_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationDomain" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Service Share-based Compensation, Allocation of Recognized Period Costs, Report Line [Domain]</link:label>
    <link:label id="lab_us-gaap_IncomeStatementLocationDomain_label_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement Location [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeStatementLocationDomain" xlink:to="lab_us-gaap_IncomeStatementLocationDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DiscreteTaxItemsAxis_064a25ee-109e-4358-b8b9-1f1ca4d8d9fb_terseLabel_en-US" xlink:label="lab_cgnx_DiscreteTaxItemsAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Items [Axis]</link:label>
    <link:label id="lab_cgnx_DiscreteTaxItemsAxis_label_en-US" xlink:label="lab_cgnx_DiscreteTaxItemsAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Items [Axis]</link:label>
    <link:label id="lab_cgnx_DiscreteTaxItemsAxis_documentation_en-US" xlink:label="lab_cgnx_DiscreteTaxItemsAxis" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Items</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsAxis" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxItemsAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DiscreteTaxItemsAxis" xlink:to="lab_cgnx_DiscreteTaxItemsAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InterestReceivable_c880b4fa-d711-4974-a785-77833f7b1d34_terseLabel_en-US" xlink:label="lab_us-gaap_InterestReceivable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Interest Receivable</link:label>
    <link:label id="lab_us-gaap_InterestReceivable_label_en-US" xlink:label="lab_us-gaap_InterestReceivable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Interest Receivable</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InterestReceivable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InterestReceivable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InterestReceivable" xlink:to="lab_us-gaap_InterestReceivable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentNet_e052beec-da74-436b-bf5f-100f14512ac3_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, plant, and equipment, net</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentNet_4fe56915-ca42-4a74-aedd-7cef1da3dc73_totalLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, plant and equipment, net, total</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentNet_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentNet" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentNet" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_RepurchaseProgramMarch2020Member_424247ff-7548-48e2-9c6f-ae577093c1b7_terseLabel_en-US" xlink:label="lab_cgnx_RepurchaseProgramMarch2020Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase Program March 2020 [Member]</link:label>
    <link:label id="lab_cgnx_RepurchaseProgramMarch2020Member_label_en-US" xlink:label="lab_cgnx_RepurchaseProgramMarch2020Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase Program March 2020 [Member]</link:label>
    <link:label id="lab_cgnx_RepurchaseProgramMarch2020Member_documentation_en-US" xlink:label="lab_cgnx_RepurchaseProgramMarch2020Member" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase Program March 2020</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramMarch2020Member" xlink:href="cgnx-20211231.xsd#cgnx_RepurchaseProgramMarch2020Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_RepurchaseProgramMarch2020Member" xlink:to="lab_cgnx_RepurchaseProgramMarch2020Member" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_NatureOfOperationsPolicyTextBlock_243361d9-fc82-4c31-896f-47121e1ac180_terseLabel_en-US" xlink:label="lab_cgnx_NatureOfOperationsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nature of Operations</link:label>
    <link:label id="lab_cgnx_NatureOfOperationsPolicyTextBlock_label_en-US" xlink:label="lab_cgnx_NatureOfOperationsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nature Of Operations [Policy Text Block]</link:label>
    <link:label id="lab_cgnx_NatureOfOperationsPolicyTextBlock_documentation_en-US" xlink:label="lab_cgnx_NatureOfOperationsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nature of Operations.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NatureOfOperationsPolicyTextBlock" xlink:href="cgnx-20211231.xsd#cgnx_NatureOfOperationsPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_NatureOfOperationsPolicyTextBlock" xlink:to="lab_cgnx_NatureOfOperationsPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock_6d691afa-e208-4978-bb0b-852777c6de56_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Estimated Amortization Expense Succeeding Fiscal Years</link:label>
    <link:label id="lab_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:to="lab_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareAbstract_a8f7e52e-cfd0-4fa6-b613-c400ae2313c2_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share [Abstract]</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareAbstract_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareAbstract" xlink:to="lab_us-gaap_EarningsPerShareAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentGross_f26fca68-4309-48b3-b7e7-3cd768e5a7d9_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentGross" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, plant and equipment, gross</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentGross_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentGross" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivable_bbf02881-b740-4f35-a205-63eafcecb275_periodStartLabel_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning balance</link:label>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivable_b2ad5b5b-3fb7-485e-948b-4e49c0b6a9a2_periodEndLabel_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Ending balance</link:label>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivable_label_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, Allowance for Credit Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:to="lab_us-gaap_AllowanceForDoubtfulAccountsReceivable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_3a9159ea-ce9c-41c8-8440-413e4e57f60b_totalLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net change related to foreign currency translation adjustments</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:to="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TrademarksMember_692569c4-e1b0-4600-982a-f8286e2339fc_terseLabel_en-US" xlink:label="lab_us-gaap_TrademarksMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Trademarks [Member]</link:label>
    <link:label id="lab_us-gaap_TrademarksMember_label_en-US" xlink:label="lab_us-gaap_TrademarksMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Trademarks [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TrademarksMember" xlink:to="lab_us-gaap_TrademarksMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CustomerContractsLiabilityCurrentRollForward_66e05c36-d808-4c56-90d9-bde333de9dce_terseLabel_en-US" xlink:label="lab_cgnx_CustomerContractsLiabilityCurrentRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Contracts Liability, Current</link:label>
    <link:label id="lab_cgnx_CustomerContractsLiabilityCurrentRollForward_label_en-US" xlink:label="lab_cgnx_CustomerContractsLiabilityCurrentRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Contracts Liability Current [Roll Forward]</link:label>
    <link:label id="lab_cgnx_CustomerContractsLiabilityCurrentRollForward_documentation_en-US" xlink:label="lab_cgnx_CustomerContractsLiabilityCurrentRollForward" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Contracts Liability Current [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsLiabilityCurrentRollForward" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsLiabilityCurrentRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward" xlink:to="lab_cgnx_CustomerContractsLiabilityCurrentRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_af693686-d5e4-47ed-91e7-1124f0a0e766_periodStartLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning balance outstanding, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_c35f93f1-1ad7-4a7c-8909-06577e1972ea_periodEndLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Ending balance outstanding, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_EuropeMember_86c0864e-36a8-4cb4-acb7-6887d17f9c44_terseLabel_en-US" xlink:label="lab_srt_EuropeMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Europe [Member]</link:label>
    <link:label id="lab_srt_EuropeMember_0d0ebda9-f01c-42a9-9f61-8af895f66834_verboseLabel_en-US" xlink:label="lab_srt_EuropeMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Europe [Member]</link:label>
    <link:label id="lab_srt_EuropeMember_label_en-US" xlink:label="lab_srt_EuropeMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Europe [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_EuropeMember" xlink:to="lab_srt_EuropeMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityCurrentReportingStatus_94c79001-8aaf-454a-9434-74cdea58610e_terseLabel_en-US" xlink:label="lab_dei_EntityCurrentReportingStatus" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Current Reporting Status</link:label>
    <link:label id="lab_dei_EntityCurrentReportingStatus_label_en-US" xlink:label="lab_dei_EntityCurrentReportingStatus" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Current Reporting Status</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCurrentReportingStatus" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityCurrentReportingStatus"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityCurrentReportingStatus" xlink:to="lab_dei_EntityCurrentReportingStatus" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_13e886c9-c53f-4ba8-ae4d-11947c21ff49_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted-Average Grant Fair Value</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations_1d26965f-187f-4285-b386-7394be994e4d_totalLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax expense (benefit)</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateContinuingOperations" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_5d811e9b-0df7-40ac-8b27-bccd1faa8186_negatedLabel_en-US" xlink:label="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amortization of discounts or premiums on investments</link:label>
    <link:label id="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_label_en-US" xlink:label="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accretion (Amortization) of Discounts and Premiums, Investments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:to="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_ba6d81dd-eb25-4bbe-9de3-f29e93af51f7_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_GainLossOnSaleOfPropertyPlantEquipment" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gain (Loss) on Disposition of Property Plant Equipment</link:label>
    <link:label id="lab_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_label_en-US" xlink:label="lab_us-gaap_GainLossOnSaleOfPropertyPlantEquipment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gain (Loss) on Disposition of Property Plant Equipment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GainLossOnSaleOfPropertyPlantEquipment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment" xlink:to="lab_us-gaap_GainLossOnSaleOfPropertyPlantEquipment" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SovereignDebtSecuritiesMember_ef0988fc-fe2b-4656-9c37-7d14fdf02052_terseLabel_en-US" xlink:label="lab_us-gaap_SovereignDebtSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sovereign Bonds [Member]</link:label>
    <link:label id="lab_us-gaap_SovereignDebtSecuritiesMember_label_en-US" xlink:label="lab_us-gaap_SovereignDebtSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sovereign Debt Securities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SovereignDebtSecuritiesMember" xlink:to="lab_us-gaap_SovereignDebtSecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardNameDomain_a48f58f2-bef8-43f5-a083-d35e1c5b8cf7_terseLabel_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward, Name [Domain]</link:label>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardNameDomain_label_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward, Name [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TaxCreditCarryforwardNameDomain" xlink:to="lab_us-gaap_TaxCreditCarryforwardNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_country_US_aa706878-5110-4ea1-b3f8-138239681e06_terseLabel_en-US" xlink:label="lab_country_US" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">United States [Member]</link:label>
    <link:label id="lab_country_US_label_en-US" xlink:label="lab_country_US" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">UNITED STATES</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_country_US" xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_US"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_country_US" xlink:to="lab_country_US" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherInventoryPurchasedGoods_4ae96105-7c5c-4ff7-8fbf-66b7cc1034fd_terseLabel_en-US" xlink:label="lab_us-gaap_OtherInventoryPurchasedGoods" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Inventory, Purchased Goods, Gross</link:label>
    <link:label id="lab_us-gaap_OtherInventoryPurchasedGoods_label_en-US" xlink:label="lab_us-gaap_OtherInventoryPurchasedGoods" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Inventory, Purchased Goods, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherInventoryPurchasedGoods" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherInventoryPurchasedGoods"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherInventoryPurchasedGoods" xlink:to="lab_us-gaap_OtherInventoryPurchasedGoods" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LeasesAbstract_acf532bf-5fc5-4fee-b257-2e488008bf0c_terseLabel_en-US" xlink:label="lab_us-gaap_LeasesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">New Accounting Pronouncements or Change in Accounting Principle [Table]</link:label>
    <link:label id="lab_us-gaap_LeasesAbstract_label_en-US" xlink:label="lab_us-gaap_LeasesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Leases [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeasesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LeasesAbstract" xlink:to="lab_us-gaap_LeasesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_HUF_430d4571-867a-47e6-b9cc-22d729e5406a_terseLabel_en-US" xlink:label="lab_currency_HUF" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Hungarian Forint [Member]</link:label>
    <link:label id="lab_currency_HUF_label_en-US" xlink:label="lab_currency_HUF" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Hungary, Forint</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_HUF" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_HUF"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_HUF" xlink:to="lab_currency_HUF" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxPolicyTextBlock_f5470168-0fe1-46a1-8010-c8e3591af2bf_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Taxes</link:label>
    <link:label id="lab_us-gaap_IncomeTaxPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_IncomeTaxPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxPolicyTextBlock" xlink:to="lab_us-gaap_IncomeTaxPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_09e318f9-261e-44eb-8b9c-5778b9085ee6_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) [Line Items]</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss) [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressPostalZipCode_8dc2e1d2-14a7-4798-a436-49084de30cc2_terseLabel_en-US" xlink:label="lab_dei_EntityAddressPostalZipCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:label id="lab_dei_EntityAddressPostalZipCode_label_en-US" xlink:label="lab_dei_EntityAddressPostalZipCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, Postal Zip Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressPostalZipCode" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityAddressPostalZipCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressPostalZipCode" xlink:to="lab_dei_EntityAddressPostalZipCode" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock_1f57c02e-8d6e-4cc2-b943-c5b5034c0543_terseLabel_en-US" xlink:label="lab_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentrations of Risk</link:label>
    <link:label id="lab_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock_label_en-US" xlink:label="lab_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentrations Of Risk Policy [Policy Text Block]</link:label>
    <link:label id="lab_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock_documentation_en-US" xlink:label="lab_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentrations of Risk.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock" xlink:href="cgnx-20211231.xsd#cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock" xlink:to="lab_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_83983383-50d3-4c73-b085-39ba6858a52d_terseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Diluted (in shares)</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_e75db321-6ce8-4124-b30a-a9847a27282d_totalLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Diluted weighted-average common and common-equivalent shares outstanding</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_label_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted Average Number of Shares Outstanding, Diluted</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:to="lab_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_6c5cbcb6-ac9a-43a8-84ff-bbdfe023f86b_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Domestic income from continuing operations before taxes</link:label>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_label_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income (Loss) from Continuing Operations before Income Taxes, Domestic</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:to="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxDisclosureTextBlock_71d5abcf-1afb-45c7-96c1-92e9d5e3af67_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes</link:label>
    <link:label id="lab_us-gaap_IncomeTaxDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_IncomeTaxDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Tax Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxDisclosureTextBlock" xlink:to="lab_us-gaap_IncomeTaxDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_72fa6dba-a720-4fe6-9d0a-0dd9622150a8_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of Stock Option Activity</link:label>
    <link:label id="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Option, Activity [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfOneYear_c0c84f58-64e3-4180-a509-2d2aeb26d042_terseLabel_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfOneYear" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company contributions vest at end of one year</link:label>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfOneYear_label_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfOneYear" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company Contributions Vest At End Of One Year</link:label>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfOneYear_documentation_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfOneYear" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company Contributions Vest At End Of One Year</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfOneYear" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfOneYear"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CompanyContributionsVestAtEndOfOneYear" xlink:to="lab_cgnx_CompanyContributionsVestAtEndOfOneYear" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementOfCashFlowsAbstract_79a18dbd-2ea1-4605-8c18-655e03fa33b6_terseLabel_en-US" xlink:label="lab_us-gaap_StatementOfCashFlowsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Cash Flows [Abstract]</link:label>
    <link:label id="lab_us-gaap_StatementOfCashFlowsAbstract_label_en-US" xlink:label="lab_us-gaap_StatementOfCashFlowsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Cash Flows [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfCashFlowsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfCashFlowsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract" xlink:to="lab_us-gaap_StatementOfCashFlowsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber_d3db1de7-839b-4c47-850e-8c4dddbfacbc_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Options vested or expected to vest</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Exercisable, Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ForeignCurrencyGainLossMember_1ee940f6-30f7-48fa-bc0a-1788f22340e7_terseLabel_en-US" xlink:label="lab_us-gaap_ForeignCurrencyGainLossMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign currency gain (loss)</link:label>
    <link:label id="lab_us-gaap_ForeignCurrencyGainLossMember_label_en-US" xlink:label="lab_us-gaap_ForeignCurrencyGainLossMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Currency Gain (Loss) [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyGainLossMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyGainLossMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ForeignCurrencyGainLossMember" xlink:to="lab_us-gaap_ForeignCurrencyGainLossMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ClassOfStockLineItems_0233249e-0311-4208-992e-2b2c16fbd2e3_terseLabel_en-US" xlink:label="lab_us-gaap_ClassOfStockLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Class of Stock [Line Items]</link:label>
    <link:label id="lab_us-gaap_ClassOfStockLineItems_label_en-US" xlink:label="lab_us-gaap_ClassOfStockLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Class of Stock [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ClassOfStockLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ClassOfStockLineItems" xlink:to="lab_us-gaap_ClassOfStockLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NondesignatedMember_10449221-7cd0-481a-a832-452b9507fbc3_terseLabel_en-US" xlink:label="lab_us-gaap_NondesignatedMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Not Designated as Hedging Instrument [Member]</link:label>
    <link:label id="lab_us-gaap_NondesignatedMember_label_en-US" xlink:label="lab_us-gaap_NondesignatedMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Not Designated as Hedging Instrument [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NondesignatedMember" xlink:to="lab_us-gaap_NondesignatedMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2345be54-2b5d-4d70-9dfb-ebdf1daa9487_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressAddressLine1_cc06aefa-a310-4698-abdd-e96d4301c288_terseLabel_en-US" xlink:label="lab_dei_EntityAddressAddressLine1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:label id="lab_dei_EntityAddressAddressLine1_label_en-US" xlink:label="lab_dei_EntityAddressAddressLine1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, Address Line One</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressAddressLine1" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityAddressAddressLine1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressAddressLine1" xlink:to="lab_dei_EntityAddressAddressLine1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_55edf4de-9956-4e38-aa3b-06c2c9b2c985_negatedLabel_en-US" xlink:label="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Less: accumulated depreciation</link:label>
    <link:label id="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_label_en-US" xlink:label="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:to="lab_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_34d5ea72-a38f-475e-80e5-ac19aa813b89_totalLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net change related to available-for-sale investments</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Available-for-sale Securities Adjustment, Net of Tax, Portion Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" xlink:to="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_6c086d55-ab5e-4d83-88a9-338b772507eb_terseLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash flows from operating activities:</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Operating Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="lab_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConsolidationPolicyTextBlock_748c6e84-8750-4c55-bb97-15b50f4f1f29_terseLabel_en-US" xlink:label="lab_us-gaap_ConsolidationPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basis of Consolidation</link:label>
    <link:label id="lab_us-gaap_ConsolidationPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_ConsolidationPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Consolidation, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConsolidationPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConsolidationPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConsolidationPolicyTextBlock" xlink:to="lab_us-gaap_ConsolidationPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityShellCompany_9a980ee1-ea52-411c-9cc9-6e3a989123be_terseLabel_en-US" xlink:label="lab_dei_EntityShellCompany" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Shell Company</link:label>
    <link:label id="lab_dei_EntityShellCompany_label_en-US" xlink:label="lab_dei_EntityShellCompany" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Shell Company</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityShellCompany" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityShellCompany"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityShellCompany" xlink:to="lab_dei_EntityShellCompany" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_01ee9375-714b-4a72-9fbc-4f989d263a16_terseLabel_en-US" xlink:label="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchase order outstanding</link:label>
    <link:label id="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_label_en-US" xlink:label="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchase Commitment, Remaining Minimum Amount Committed</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:to="lab_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_824ee809-c401-412e-a3fa-bed11c699613_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Expected term (in years)</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Fair Value Assumptions, Expected Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesCurrent_ef578b62-b7a0-4b83-a3f2-ea5f3062f5b7_totalLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total current liabilities</link:label>
    <link:label id="lab_us-gaap_LiabilitiesCurrent_label_en-US" xlink:label="lab_us-gaap_LiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesCurrent" xlink:to="lab_us-gaap_LiabilitiesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent_35d24f44-3b62-429f-9542-b0e4b2e4e283_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Global workforce reduction</link:label>
    <link:label id="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent_label_en-US" xlink:label="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring and Related Cost, Number of Positions Eliminated, Inception to Date Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent" xlink:to="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_RevenuePaymentTerms_2a090f58-c9b9-4801-af0d-dac575ea50fe_terseLabel_en-US" xlink:label="lab_cgnx_RevenuePaymentTerms" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, payment terms</link:label>
    <link:label id="lab_cgnx_RevenuePaymentTerms_label_en-US" xlink:label="lab_cgnx_RevenuePaymentTerms" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Payment Terms</link:label>
    <link:label id="lab_cgnx_RevenuePaymentTerms_documentation_en-US" xlink:label="lab_cgnx_RevenuePaymentTerms" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue, Payment Terms</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RevenuePaymentTerms" xlink:href="cgnx-20211231.xsd#cgnx_RevenuePaymentTerms"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_RevenuePaymentTerms" xlink:to="lab_cgnx_RevenuePaymentTerms" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_VoteEntitledForEachCommonShareOutstanding_93ee7afd-df6a-47ca-8974-ba2cd2fbf510_terseLabel_en-US" xlink:label="lab_cgnx_VoteEntitledForEachCommonShareOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vote entitled for each common share outstanding</link:label>
    <link:label id="lab_cgnx_VoteEntitledForEachCommonShareOutstanding_label_en-US" xlink:label="lab_cgnx_VoteEntitledForEachCommonShareOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vote Entitled For Each Common Share Outstanding</link:label>
    <link:label id="lab_cgnx_VoteEntitledForEachCommonShareOutstanding_documentation_en-US" xlink:label="lab_cgnx_VoteEntitledForEachCommonShareOutstanding" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vote entitled for each common share outstanding.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_VoteEntitledForEachCommonShareOutstanding" xlink:href="cgnx-20211231.xsd#cgnx_VoteEntitledForEachCommonShareOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_VoteEntitledForEachCommonShareOutstanding" xlink:to="lab_cgnx_VoteEntitledForEachCommonShareOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent_bdb7269f-0931-4358-9fb5-1c61e4d7d63a_terseLabel_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Percent of employee contribution</link:label>
    <link:label id="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent_label_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Defined Contribution Plan, Employer Matching Contribution, Percent of Employees' Gross Pay</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent" xlink:to="lab_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_14e57216-c8cb-408e-b6fd-3b1d09f686d9_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Options vested or expected to vest, aggregate intrinsic value</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Outstanding, Aggregate Intrinsic Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_CurrentFiscalYearEndDate_a45b95f7-83cb-4c5c-a154-e8aea649d36f_terseLabel_en-US" xlink:label="lab_dei_CurrentFiscalYearEndDate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Fiscal Year End Date</link:label>
    <link:label id="lab_dei_CurrentFiscalYearEndDate_label_en-US" xlink:label="lab_dei_CurrentFiscalYearEndDate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Fiscal Year End Date</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CurrentFiscalYearEndDate" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_CurrentFiscalYearEndDate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_CurrentFiscalYearEndDate" xlink:to="lab_dei_CurrentFiscalYearEndDate" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_f59e4633-8928-4a50-ba57-086db591a32e_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments, Gain (Loss) [Table]</link:label>
    <link:label id="lab_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_label_en-US" xlink:label="lab_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments, Gain (Loss) [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable" xlink:to="lab_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementTable_5de0ef01-f0b3-44f6-b486-e9ecf463d20f_terseLabel_en-US" xlink:label="lab_us-gaap_StatementTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement [Table]</link:label>
    <link:label id="lab_us-gaap_StatementTable_label_en-US" xlink:label="lab_us-gaap_StatementTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementTable" xlink:to="lab_us-gaap_StatementTable" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_SualabCo.Ltd.Member_594907ca-42c9-4506-92ac-221d412f2f42_terseLabel_en-US" xlink:label="lab_cgnx_SualabCo.Ltd.Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sualab Co., Ltd. [Member]</link:label>
    <link:label id="lab_cgnx_SualabCo.Ltd.Member_label_en-US" xlink:label="lab_cgnx_SualabCo.Ltd.Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sualab Co., Ltd. [Member]</link:label>
    <link:label id="lab_cgnx_SualabCo.Ltd.Member_documentation_en-US" xlink:label="lab_cgnx_SualabCo.Ltd.Member" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Sualab Co., Ltd. [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_SualabCo.Ltd.Member" xlink:to="lab_cgnx_SualabCo.Ltd.Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_c037f1e3-e03a-4baf-b279-090906271a50_terseLabel_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">New Accounting Pronouncements, Policy</link:label>
    <link:label id="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">New Accounting Pronouncements, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:to="lab_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AgencyBondsMember_2835f048-7c05-4571-a21b-c614fd68b40c_terseLabel_en-US" xlink:label="lab_cgnx_AgencyBondsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Agency Bonds [Member]</link:label>
    <link:label id="lab_cgnx_AgencyBondsMember_label_en-US" xlink:label="lab_cgnx_AgencyBondsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Agency Bonds [Member]</link:label>
    <link:label id="lab_cgnx_AgencyBondsMember_documentation_en-US" xlink:label="lab_cgnx_AgencyBondsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Agency bond.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AgencyBondsMember" xlink:to="lab_cgnx_AgencyBondsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_RangeAxis_b324ec16-1c06-450d-b7ff-20ae899f14cc_terseLabel_en-US" xlink:label="lab_srt_RangeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Range [Axis]</link:label>
    <link:label id="lab_srt_RangeAxis_label_en-US" xlink:label="lab_srt_RangeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statistical Measurement [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_RangeAxis" xlink:to="lab_srt_RangeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TradeAndOtherAccountsReceivablePolicy_97c22cab-6048-4050-9c5c-024e951725ea_terseLabel_en-US" xlink:label="lab_us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable</link:label>
    <link:label id="lab_us-gaap_TradeAndOtherAccountsReceivablePolicy_label_en-US" xlink:label="lab_us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:to="lab_us-gaap_TradeAndOtherAccountsReceivablePolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventMember_843e7763-3a7d-4086-a066-d29d1250e733_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event [Member]</link:label>
    <link:label id="lab_us-gaap_SubsequentEventMember_label_en-US" xlink:label="lab_us-gaap_SubsequentEventMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventMember" xlink:to="lab_us-gaap_SubsequentEventMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_66f4b45e-bf82-41d8-afc1-7707b2540604_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign net operating losses</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Operating Loss Carryforwards, Foreign</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign" xlink:to="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsNet_4ede4e35-d655-48eb-961e-52b21cb6d880_totalLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Carrying Value</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsNet_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsNet" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Goodwill_5163d722-ac69-4d8c-959b-19cb45ba728b_terseLabel_en-US" xlink:label="lab_us-gaap_Goodwill" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill</link:label>
    <link:label id="lab_us-gaap_Goodwill_2b714969-cf5e-46ac-bfa9-3911ebf6c7df_periodStartLabel_en-US" xlink:label="lab_us-gaap_Goodwill" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill, Beginning Balance</link:label>
    <link:label id="lab_us-gaap_Goodwill_82a11fc9-bc43-4a4b-be08-6f9c202f440b_periodEndLabel_en-US" xlink:label="lab_us-gaap_Goodwill" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill, Ending Balance</link:label>
    <link:label id="lab_us-gaap_Goodwill_label_en-US" xlink:label="lab_us-gaap_Goodwill" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Goodwill" xlink:to="lab_us-gaap_Goodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsForProceedsFromPreviousAcquisition_bed2c333-ef96-4d6c-8756-f54b3f018fe5_terseLabel_en-US" xlink:label="lab_us-gaap_PaymentsForProceedsFromPreviousAcquisition" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Credit to goodwill</link:label>
    <link:label id="lab_us-gaap_PaymentsForProceedsFromPreviousAcquisition_label_en-US" xlink:label="lab_us-gaap_PaymentsForProceedsFromPreviousAcquisition" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments for (Proceeds from) Previous Acquisition</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForProceedsFromPreviousAcquisition"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition" xlink:to="lab_us-gaap_PaymentsForProceedsFromPreviousAcquisition" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_78fbd9d1-e9a1-44dd-b94c-35fd80a05dcd_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign tax rate differential</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_7074b58c-cc96-4e43-a923-097d6a975309_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign tax rate differential</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss_08decc35-bb71-449d-8d14-a2f8d440a9da_negatedLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrealized Losses, Less than 12 months</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Continuous Unrealized Loss Position, Less than 12 Months, Accumulated Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfGoodwillTextBlock_1bf9faec-1e25-4f1e-9273-4992458992ca_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfGoodwillTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Changes in the Carrying Value of Goodwill</link:label>
    <link:label id="lab_us-gaap_ScheduleOfGoodwillTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfGoodwillTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Goodwill [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfGoodwillTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfGoodwillTextBlock" xlink:to="lab_us-gaap_ScheduleOfGoodwillTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_620ce40a-1ba8-4677-93e6-17816db9d0a0_terseLabel_en-US" xlink:label="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Adjustments to reconcile net income to net cash provided by operating activities:</link:label>
    <link:label id="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Adjustments to Reconcile Net Income (Loss) to Cash Provided by (Used in) Operating Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:to="lab_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventTypeAxis_2d470974-2c96-43c0-9688-68810999426a_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event Type [Axis]</link:label>
    <link:label id="lab_us-gaap_SubsequentEventTypeAxis_label_en-US" xlink:label="lab_us-gaap_SubsequentEventTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventTypeAxis" xlink:to="lab_us-gaap_SubsequentEventTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock_12ddb949-e557-4b4f-b452-1de219a064a0_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Derivative Instruments in Statement of Financial Position, Fair Value</link:label>
    <link:label id="lab_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Derivative Instruments in Statement of Financial Position, Fair Value [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock" xlink:to="lab_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss_fb61d826-e2b1-4235-beee-5d640d5991b3_negatedLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrealized Losses, Greater than 12 Months</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Continuous Unrealized Loss Position, 12 Months or Longer, Accumulated Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent_ae675724-9332-4b28-8e40-1636d1fd4b6e_terseLabel_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum contribution by company expressed as percentage of employee pre-tax salary</link:label>
    <link:label id="lab_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent_label_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:to="lab_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefit_a3c05e22-4cd4-4b13-bdf3-22323ffe31c3_totalLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred income tax expense (benefit), Total</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_DeferredIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_21b06d73-6fa6-4752-a0a8-ff12d00c4a96_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Options vested or expected to vest, weighted-average remaining contractual term (in years)</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Outstanding, Weighted Average Remaining Contractual Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1_8650b16e-43a1-43d2-9e63-65bb177e1ea9_terseLabel_en-US" xlink:label="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase of authorized common stock</link:label>
    <link:label id="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1_label_en-US" xlink:label="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchase Program, Authorized Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:to="lab_us-gaap_StockRepurchaseProgramAuthorizedAmount1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_HedgingDesignationDomain_d2ca94a7-da24-4c31-aa1f-b3427673239a_terseLabel_en-US" xlink:label="lab_us-gaap_HedgingDesignationDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Hedging Designation [Domain]</link:label>
    <link:label id="lab_us-gaap_HedgingDesignationDomain_label_en-US" xlink:label="lab_us-gaap_HedgingDesignationDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Hedging Designation [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_HedgingDesignationDomain" xlink:to="lab_us-gaap_HedgingDesignationDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_StateResearchAndExperimentationMember_ea043a2d-b446-4b01-83a1-8f4f318aae24_terseLabel_en-US" xlink:label="lab_cgnx_StateResearchAndExperimentationMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State Research And Experimentation [Member]</link:label>
    <link:label id="lab_cgnx_StateResearchAndExperimentationMember_label_en-US" xlink:label="lab_cgnx_StateResearchAndExperimentationMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State Research And Experimentation [Member]</link:label>
    <link:label id="lab_cgnx_StateResearchAndExperimentationMember_documentation_en-US" xlink:label="lab_cgnx_StateResearchAndExperimentationMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State research and experimentation.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StateResearchAndExperimentationMember" xlink:href="cgnx-20211231.xsd#cgnx_StateResearchAndExperimentationMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_StateResearchAndExperimentationMember" xlink:to="lab_cgnx_StateResearchAndExperimentationMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_e1f26c33-45c8-4f7b-b3ac-755e4d1c3f40_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax expense at U.S. federal statutory corporate tax rate</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_79516a70-51a8-47d0-830c-745de4c6d787_verboseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax rate</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerSharePolicyTextBlock_497540f1-62cb-433e-a3aa-71b99936efa0_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerSharePolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Income Per Share</link:label>
    <link:label id="lab_us-gaap_EarningsPerSharePolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_EarningsPerSharePolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerSharePolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerSharePolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerSharePolicyTextBlock" xlink:to="lab_us-gaap_EarningsPerSharePolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_a33eaaab-f4c8-4306-b545-69d289a4bc24_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Measurements, Fair Value Hierarchy [Domain]</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_label_en-US" xlink:label="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Hierarchy and NAV [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:to="lab_us-gaap_FairValueMeasurementsFairValueHierarchyDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetIncomeLoss_3170674a-cdfa-4481-a867-3ff76cae8cac_totalLabel_en-US" xlink:label="lab_us-gaap_NetIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net income</link:label>
    <link:label id="lab_us-gaap_NetIncomeLoss_263deb1c-42be-4061-bf30-c1e6217a391c_terseLabel_en-US" xlink:label="lab_us-gaap_NetIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net income</link:label>
    <link:label id="lab_us-gaap_NetIncomeLoss_4dd70987-fa2e-4d9e-a7dd-1e308acb5d55_verboseLabel_en-US" xlink:label="lab_us-gaap_NetIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net income</link:label>
    <link:label id="lab_us-gaap_NetIncomeLoss_label_en-US" xlink:label="lab_us-gaap_NetIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Income (Loss) Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetIncomeLoss" xlink:to="lab_us-gaap_NetIncomeLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseRightOfUseAsset_fa804e51-6dca-4302-bfdb-bc71b84d3ac3_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseRightOfUseAsset" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease assets</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseRightOfUseAsset_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseRightOfUseAsset" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Right-of-Use Asset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseRightOfUseAsset" xlink:to="lab_us-gaap_OperatingLeaseRightOfUseAsset" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock_d1e6aa0d-36b2-4fbd-b307-fd936e511510_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Notional Amounts of Outstanding Derivative Positions</link:label>
    <link:label id="lab_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Notional Amounts of Outstanding Derivative Positions [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock_81e06881-3213-499d-be5a-9f10d7519d64_terseLabel_en-US" xlink:label="lab_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Components of Cash, Cash Equivalents and Investments</link:label>
    <link:label id="lab_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock_label_en-US" xlink:label="lab_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Components Of Cash Cash Equivalents And Investments Table [Table Text Block]</link:label>
    <link:label id="lab_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock_documentation_en-US" xlink:label="lab_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Components of cash cash equivalents and investments.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" xlink:href="cgnx-20211231.xsd#cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" xlink:to="lab_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeStatementLocationAxis_afe0c176-4406-4597-ab91-f2e0a0dec379_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement Location [Axis]</link:label>
    <link:label id="lab_us-gaap_IncomeStatementLocationAxis_ef621eb4-a5b6-468c-9e35-217895b5933f_verboseLabel_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationAxis" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Employee Service Share-Based Compensation, Allocation of Recognized Period Costs, by Report Line [Axis]</link:label>
    <link:label id="lab_us-gaap_IncomeStatementLocationAxis_label_en-US" xlink:label="lab_us-gaap_IncomeStatementLocationAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Statement Location [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeStatementLocationAxis" xlink:to="lab_us-gaap_IncomeStatementLocationAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_3c54d510-7ce3-4242-86da-0e017e4e1f68_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Amortization</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_e66f6991-e2f4-4c21-8324-fabba45845ee_verboseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated amortization</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets, Accumulated Amortization</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_RangeMember_428c4d73-5103-4ff2-9d67-1661174e2955_terseLabel_en-US" xlink:label="lab_srt_RangeMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Range [Domain]</link:label>
    <link:label id="lab_srt_RangeMember_label_en-US" xlink:label="lab_srt_RangeMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statistical Measurement [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_RangeMember" xlink:to="lab_srt_RangeMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OffsettingAssetsTableTextBlock_bbb7c89c-89b9-4403-9443-254f8749a6a1_terseLabel_en-US" xlink:label="lab_us-gaap_OffsettingAssetsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Offsetting Assets</link:label>
    <link:label id="lab_us-gaap_OffsettingAssetsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_OffsettingAssetsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Offsetting Assets [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OffsettingAssetsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OffsettingAssetsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OffsettingAssetsTableTextBlock" xlink:to="lab_us-gaap_OffsettingAssetsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityIncorporationStateCountryCode_8c1aaf93-e4c8-4b3a-8681-131802e22e5c_terseLabel_en-US" xlink:label="lab_dei_EntityIncorporationStateCountryCode" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:label id="lab_dei_EntityIncorporationStateCountryCode_label_en-US" xlink:label="lab_dei_EntityIncorporationStateCountryCode" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Incorporation, State or Country Code</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityIncorporationStateCountryCode" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityIncorporationStateCountryCode"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityIncorporationStateCountryCode" xlink:to="lab_dei_EntityIncorporationStateCountryCode" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerAbstract_d4863d07-7cfb-40bc-b62e-12d836fbda49_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer [Abstract]</link:label>
    <link:label id="lab_us-gaap_RevenueFromContractWithCustomerAbstract_label_en-US" xlink:label="lab_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue from Contract with Customer [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:to="lab_us-gaap_RevenueFromContractWithCustomerAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalCommonStock_377398f7-6423-4028-8869-9b8a6ea991b7_terseLabel_en-US" xlink:label="lab_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additional paid-in capital</link:label>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalCommonStock_label_en-US" xlink:label="lab_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Additional Paid in Capital, Common Stock</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:to="lab_us-gaap_AdditionalPaidInCapitalCommonStock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_49ffdea4-8389-4af5-be95-0f82cc50e040_terseLabel_en-US" xlink:label="lab_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible asset impairment charges</link:label>
    <link:label id="lab_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_label_en-US" xlink:label="lab_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Impairment of Intangible Assets (Excluding Goodwill)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill" xlink:to="lab_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OneTimeTerminationBenefitsMember_0bc208d5-6216-4cee-83a7-acd8ade4cd07_terseLabel_en-US" xlink:label="lab_us-gaap_OneTimeTerminationBenefitsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">One-time Termination Benefits [Member]</link:label>
    <link:label id="lab_us-gaap_OneTimeTerminationBenefitsMember_label_en-US" xlink:label="lab_us-gaap_OneTimeTerminationBenefitsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">One-time Termination Benefits [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OneTimeTerminationBenefitsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OneTimeTerminationBenefitsMember" xlink:to="lab_us-gaap_OneTimeTerminationBenefitsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringCostAndReserveAxis_132ea6da-8173-4e93-9ec2-30021e33e56b_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringCostAndReserveAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Type [Axis]</link:label>
    <link:label id="lab_us-gaap_RestructuringCostAndReserveAxis_label_en-US" xlink:label="lab_us-gaap_RestructuringCostAndReserveAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis" xlink:to="lab_us-gaap_RestructuringCostAndReserveAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherAssetsNoncurrent_8bb9a85f-0a83-48e3-87bb-dd913bcfbdb5_terseLabel_en-US" xlink:label="lab_us-gaap_OtherAssetsNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other assets</link:label>
    <link:label id="lab_us-gaap_OtherAssetsNoncurrent_label_en-US" xlink:label="lab_us-gaap_OtherAssetsNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Assets, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherAssetsNoncurrent" xlink:to="lab_us-gaap_OtherAssetsNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_2493f126-78b6-48d2-b753-c3efe272e549_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Expected dividend yield</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Fair Value Assumptions, Expected Dividend Rate</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CompensationAndRetirementDisclosureAbstract_b457781b-cd50-453c-9fc8-79addec0b60a_terseLabel_en-US" xlink:label="lab_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retirement Benefits [Abstract]</link:label>
    <link:label id="lab_us-gaap_CompensationAndRetirementDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retirement Benefits [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CompensationAndRetirementDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:to="lab_us-gaap_CompensationAndRetirementDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_fd9a00d6-ed92-4c92-a396-beb16e72a92f_terseLabel_en-US" xlink:label="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Estimated forfeiture rate for unvested options for all non-senior management</link:label>
    <link:label id="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_label_en-US" xlink:label="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Estimated Forfeiture Rate For Unvested Options For All Non Senior Management</link:label>
    <link:label id="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_documentation_en-US" xlink:label="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Estimated forfeiture rate for unvested options for all non-senior management.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" xlink:href="cgnx-20211231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" xlink:to="lab_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InProcessResearchAndDevelopmentMember_6c766210-bb3d-4695-a11e-225dbec0ebc8_terseLabel_en-US" xlink:label="lab_us-gaap_InProcessResearchAndDevelopmentMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">In Process Research and Development [Member]</link:label>
    <link:label id="lab_us-gaap_InProcessResearchAndDevelopmentMember_label_en-US" xlink:label="lab_us-gaap_InProcessResearchAndDevelopmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">In Process Research and Development [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InProcessResearchAndDevelopmentMember" xlink:to="lab_us-gaap_InProcessResearchAndDevelopmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityFileNumber_61697655-131c-49ac-8ece-1c9ffaa41414_terseLabel_en-US" xlink:label="lab_dei_EntityFileNumber" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity File Number</link:label>
    <link:label id="lab_dei_EntityFileNumber_label_en-US" xlink:label="lab_dei_EntityFileNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity File Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFileNumber" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityFileNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityFileNumber" xlink:to="lab_dei_EntityFileNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_TWD_5f978e16-2b46-4acd-ad0b-28f7184c5126_terseLabel_en-US" xlink:label="lab_currency_TWD" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Taiwanese Dollar [Member]</link:label>
    <link:label id="lab_currency_TWD_label_en-US" xlink:label="lab_currency_TWD" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Taiwan, New Dollars</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_TWD" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_TWD"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_TWD" xlink:to="lab_currency_TWD" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_d0321a9f-4aa4-427c-9c04-8feca74e246e_terseLabel_en-US" xlink:label="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:label id="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_label_en-US" xlink:label="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">APIC, Share-based Payment Arrangement, Increase for Cost Recognition</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:to="lab_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod_257475cb-f661-4277-a7b6-bb7c6ebf3c84_negatedLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Forfeited or expired</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures and Expirations in Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems_fbd9e923-1a5e-4a12-bf40-ca0baf1cf5bd_terseLabel_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Line Items]</link:label>
    <link:label id="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems_label_en-US" xlink:label="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:to="lab_srt_ValuationAndQualifyingAccountsDisclosureLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock_aaa6767c-5803-40c3-b753-5373e947572f_terseLabel_en-US" xlink:label="lab_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, and Investments</link:label>
    <link:label id="lab_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock_label_en-US" xlink:label="lab_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investments in Debt and Equity Instruments, Cash and Cash Equivalents, Unrealized and Realized Gains (Losses) [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock" xlink:to="lab_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockValueOutstanding_de2e5ef8-7507-45fc-9303-c53018f4dec0_terseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockValueOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, $.01 par value - Authorized: 400 shares in 2021 and 2020, respectively, no shares issued and outstanding</link:label>
    <link:label id="lab_us-gaap_PreferredStockValueOutstanding_label_en-US" xlink:label="lab_us-gaap_PreferredStockValueOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Value, Outstanding</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockValueOutstanding" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockValueOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockValueOutstanding" xlink:to="lab_us-gaap_PreferredStockValueOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BuildingMember_2a6ae73b-c41f-4c09-b634-0c99cea9c463_terseLabel_en-US" xlink:label="lab_us-gaap_BuildingMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Building [Member]</link:label>
    <link:label id="lab_us-gaap_BuildingMember_label_en-US" xlink:label="lab_us-gaap_BuildingMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Building [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BuildingMember" xlink:to="lab_us-gaap_BuildingMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_HardwareAndSoftwareMember_d8ec7412-8e1f-4d7e-96d7-38892da5ff76_terseLabel_en-US" xlink:label="lab_cgnx_HardwareAndSoftwareMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Computer Hardware And Software [Member]</link:label>
    <link:label id="lab_cgnx_HardwareAndSoftwareMember_label_en-US" xlink:label="lab_cgnx_HardwareAndSoftwareMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Hardware And Software [Member]</link:label>
    <link:label id="lab_cgnx_HardwareAndSoftwareMember_documentation_en-US" xlink:label="lab_cgnx_HardwareAndSoftwareMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Hardware and software.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_HardwareAndSoftwareMember" xlink:href="cgnx-20211231.xsd#cgnx_HardwareAndSoftwareMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_HardwareAndSoftwareMember" xlink:to="lab_cgnx_HardwareAndSoftwareMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_3110d645-9e57-4acd-8c6c-f42280204077_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Granted, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period, Weighted Average Grant Date Fair Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MunicipalBondsMember_b93f472d-cbde-4e22-8726-4417bbd54204_terseLabel_en-US" xlink:label="lab_us-gaap_MunicipalBondsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Municipal Bonds [Member]</link:label>
    <link:label id="lab_us-gaap_MunicipalBondsMember_label_en-US" xlink:label="lab_us-gaap_MunicipalBondsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Municipal Bonds [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MunicipalBondsMember" xlink:to="lab_us-gaap_MunicipalBondsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_9d145153-a0a5-406e-aaa0-a1ad4ec6184c_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net unrealized gain (loss), net of tax of $(2,206), $981, and $515 in 2021, 2020, and 2019, respectively</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, after Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_382eb12a-db4f-4f27-89cf-b2859cd32926_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Bonuses, commissions, and other compensation</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Other</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" xlink:to="lab_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_OtherGeographicAreaMember_07595842-3a02-483f-8ed5-6e20353b8497_terseLabel_en-US" xlink:label="lab_cgnx_OtherGeographicAreaMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other [Member]</link:label>
    <link:label id="lab_cgnx_OtherGeographicAreaMember_label_en-US" xlink:label="lab_cgnx_OtherGeographicAreaMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Geographic Area [Member]</link:label>
    <link:label id="lab_cgnx_OtherGeographicAreaMember_documentation_en-US" xlink:label="lab_cgnx_OtherGeographicAreaMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Geographic Area [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherGeographicAreaMember" xlink:href="cgnx-20211231.xsd#cgnx_OtherGeographicAreaMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_OtherGeographicAreaMember" xlink:to="lab_cgnx_OtherGeographicAreaMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareRepurchaseProgramDomain_50fb1114-0f21-4bdd-b154-70ce39420fbc_terseLabel_en-US" xlink:label="lab_us-gaap_ShareRepurchaseProgramDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share Repurchase Program [Domain]</link:label>
    <link:label id="lab_us-gaap_ShareRepurchaseProgramDomain_label_en-US" xlink:label="lab_us-gaap_ShareRepurchaseProgramDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share Repurchase Program [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareRepurchaseProgramDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain" xlink:to="lab_us-gaap_ShareRepurchaseProgramDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetsAbstract_d4b1c614-e268-47be-a6eb-31b883d3c5ec_terseLabel_en-US" xlink:label="lab_us-gaap_AssetsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">ASSETS</link:label>
    <link:label id="lab_us-gaap_AssetsAbstract_label_en-US" xlink:label="lab_us-gaap_AssetsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetsAbstract" xlink:to="lab_us-gaap_AssetsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LandMember_149ae3ae-8aa2-4b74-b274-e8a17105d531_terseLabel_en-US" xlink:label="lab_us-gaap_LandMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Land [Member]</link:label>
    <link:label id="lab_us-gaap_LandMember_label_en-US" xlink:label="lab_us-gaap_LandMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Land [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LandMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LandMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LandMember" xlink:to="lab_us-gaap_LandMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_9ec1349d-526f-4d2f-8038-bd4d83f18439_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Options vested or expected to vest, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Outstanding, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum_4db900e8-95dd-4eeb-8a06-0a629cf81534_terseLabel_en-US" xlink:label="lab_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective maturity of investments</link:label>
    <link:label id="lab_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum_label_en-US" xlink:label="lab_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available-for-sale Securities, Debt Maturities, Effective Term, Maximum</link:label>
    <link:label id="lab_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum_documentation_en-US" xlink:label="lab_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available-for-sale Securities, Debt Maturities, Effective Term, Maximum</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" xlink:href="cgnx-20211231.xsd#cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" xlink:to="lab_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock_bbaded0d-3836-40e5-8ca5-f743f73788de_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments</link:label>
    <link:label id="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments and Hedging Activities Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:to="lab_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_2be7369b-9667-43f1-97a1-d9688f13ab7d_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Federal and state tax credit carryforwards</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Operating Loss Carryforwards, Domestic</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic" xlink:to="lab_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_6776db42-66e8-4b61-89f9-1ccdb225bca0_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Granted</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Grants in Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskPercentage1_f1239721-2e27-4b83-8b2b-fe7f45d7dac1_verboseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskPercentage1" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum percentage of revenue accountability</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskPercentage1_d2a5178a-198b-4185-ab1b-4abf7143222c_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskPercentage1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk, Percentage</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskPercentage1_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskPercentage1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk, Percentage</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskPercentage1" xlink:to="lab_us-gaap_ConcentrationRiskPercentage1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_126ac4da-c800-4dba-a8e3-b42b48679d66_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant, and Equipment</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_73417985-2380-4043-b3d3-2d63cc934a04_terseLabel_en-US" xlink:label="lab_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net proceeds from issuance of common stock under stock plans</link:label>
    <link:label id="lab_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_label_en-US" xlink:label="lab_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Proceeds, Issuance of Shares, Share-based Payment Arrangement, Including Option Exercised</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:to="lab_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_925ba40f-1899-401b-bb46-2717141c87ba_periodStartLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning balance outstanding</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_da62821b-5b46-400f-ab58-5c1034115e89_periodEndLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Ending balance outstanding</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_b057a76c-744f-4049-8a1b-f07bd5a48590_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid expenses and other current assets</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Prepaid Expense and Other Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:to="lab_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdvertisingCostsPolicyTextBlock_665a803f-52a1-4d4d-9a2d-50a6377bfc7e_terseLabel_en-US" xlink:label="lab_us-gaap_AdvertisingCostsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Advertising Costs</link:label>
    <link:label id="lab_us-gaap_AdvertisingCostsPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_AdvertisingCostsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Advertising Cost [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdvertisingCostsPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdvertisingCostsPolicyTextBlock" xlink:to="lab_us-gaap_AdvertisingCostsPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_fc907807-3d44-4930-aaf1-ae521ffb6d35_terseLabel_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies</link:label>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingenciesDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:to="lab_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_c7bc81eb-6664-4b52-a7b9-63bbfd20b513_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Line Items]</link:label>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_label_en-US" xlink:label="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems" xlink:to="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_dcfa6e45-3147-401e-9db4-bb322ecb92ab_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Constituents of Deferred Tax Assets</link:label>
    <link:label id="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Deferred Tax Assets and Liabilities [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EnShapeGmbHAbstract_4ac45e81-9ee7-4c34-9202-bde46bcce826_terseLabel_en-US" xlink:label="lab_cgnx_EnShapeGmbHAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">EnShape GmbH [Abstract]</link:label>
    <link:label id="lab_cgnx_EnShapeGmbHAbstract_label_en-US" xlink:label="lab_cgnx_EnShapeGmbHAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">EnShape GmbH [Abstract]</link:label>
    <link:label id="lab_cgnx_EnShapeGmbHAbstract_documentation_en-US" xlink:label="lab_cgnx_EnShapeGmbHAbstract" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">EnShape GmbH</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EnShapeGmbHAbstract" xlink:href="cgnx-20211231.xsd#cgnx_EnShapeGmbHAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_EnShapeGmbHAbstract" xlink:to="lab_cgnx_EnShapeGmbHAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InvestmentIncomeNonoperating_b7d8938a-adfe-4614-bd11-7a6318505b15_terseLabel_en-US" xlink:label="lab_us-gaap_InvestmentIncomeNonoperating" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investment income</link:label>
    <link:label id="lab_us-gaap_InvestmentIncomeNonoperating_label_en-US" xlink:label="lab_us-gaap_InvestmentIncomeNonoperating" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investment Income, Nonoperating</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNonoperating" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentIncomeNonoperating"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InvestmentIncomeNonoperating" xlink:to="lab_us-gaap_InvestmentIncomeNonoperating" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_6c53a4ac-c53a-4a76-8f96-8bda13f74ee8_terseLabel_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies Disclosure [Abstract]</link:label>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:to="lab_us-gaap_CommitmentsAndContingenciesDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardTable_09c8cc9b-45b1-4f4b-a2f4-ba224be4cdf0_terseLabel_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward [Table]</link:label>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardTable_label_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable" xlink:to="lab_us-gaap_TaxCreditCarryforwardTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery_c79a9e21-e535-4a30-b2f3-04f2f4395860_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Decreases to the allowance for credit losses</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss, Recovery</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GuaranteesAbstract_e4b21c02-f775-4946-9a3b-4b30c081c52f_terseLabel_en-US" xlink:label="lab_us-gaap_GuaranteesAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Guarantees [Abstract]</link:label>
    <link:label id="lab_us-gaap_GuaranteesAbstract_label_en-US" xlink:label="lab_us-gaap_GuaranteesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Guarantees [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GuaranteesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GuaranteesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GuaranteesAbstract" xlink:to="lab_us-gaap_GuaranteesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_54b09cb4-0bfb-48e6-820e-2fa5deb540ad_terseLabel_en-US" xlink:label="lab_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Indefinite-lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:label id="lab_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_label_en-US" xlink:label="lab_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Indefinite-lived Intangible Assets, Major Class Name [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:to="lab_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_6cf8129a-3129-4600-a3d6-e4465f198b54_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2024</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year Three</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_36e76c02-ab3c-4a2a-81e5-11db63d99e9e_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Thereafter</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Asset, Expected Amortization, after Year Five</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringReserveTranslationAdjustment_c09a2b60-6c20-43d5-aed0-d013f379df76_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringReserveTranslationAdjustment" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign exchange rate changes</link:label>
    <link:label id="lab_us-gaap_RestructuringReserveTranslationAdjustment_label_en-US" xlink:label="lab_us-gaap_RestructuringReserveTranslationAdjustment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Reserve, Foreign Currency Translation Gain (Loss)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveTranslationAdjustment" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveTranslationAdjustment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringReserveTranslationAdjustment" xlink:to="lab_us-gaap_RestructuringReserveTranslationAdjustment" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis_eefd488d-e0a9-47ac-88ab-d00ea98dbb6f_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_452e734c-a55f-4b15-8c53-6342ea72b47e_terseLabel_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contingencies</link:label>
    <link:label id="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingenciesPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:to="lab_us-gaap_CommitmentsAndContingenciesPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DisaggregationOfRevenueTableTextBlock_19b4fdc9-a944-4e2f-a2dd-7d0111ef8303_terseLabel_en-US" xlink:label="lab_us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disaggregation of Revenue</link:label>
    <link:label id="lab_us-gaap_DisaggregationOfRevenueTableTextBlock_label_en-US" xlink:label="lab_us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disaggregation of Revenue [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:to="lab_us-gaap_DisaggregationOfRevenueTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockOptionPlanExpense_05446b35-97d4-4209-9b48-34cddd8d51d1_terseLabel_en-US" xlink:label="lab_us-gaap_StockOptionPlanExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:label id="lab_us-gaap_StockOptionPlanExpense_label_en-US" xlink:label="lab_us-gaap_StockOptionPlanExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock or Unit Option Plan Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockOptionPlanExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockOptionPlanExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockOptionPlanExpense" xlink:to="lab_us-gaap_StockOptionPlanExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DefinedContributionPlanCostRecognized_c7ee1549-4f03-4562-af9f-f88d0312c69d_terseLabel_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanCostRecognized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company contributions to employee savings plan</link:label>
    <link:label id="lab_us-gaap_DefinedContributionPlanCostRecognized_label_en-US" xlink:label="lab_us-gaap_DefinedContributionPlanCostRecognized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Defined Contribution Plan, Cost</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanCostRecognized" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DefinedContributionPlanCostRecognized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DefinedContributionPlanCostRecognized" xlink:to="lab_us-gaap_DefinedContributionPlanCostRecognized" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_5be70024-9027-422a-9a6b-6b9a0c729c85_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available-for-sale investments:</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Available-for-sale Securities Adjustment, Net of Tax, Portion Attributable to Parent [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract" xlink:to="lab_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_2dc3f1ed-65c3-40aa-8681-7550ed911a3e_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock_dc4a4d93-b2ab-4341-93be-df2ad78c85c9_terseLabel_en-US" xlink:label="lab_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nonvested Restricted Stock Shares Activity [Table Text Block]</link:label>
    <link:label id="lab_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Nonvested Restricted Stock Shares Activity [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock" xlink:to="lab_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_6d197d30-6175-49e1-baaa-b2ae85aec57e_terseLabel_en-US" xlink:label="lab_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maturities of forward of contracts</link:label>
    <link:label id="lab_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_label_en-US" xlink:label="lab_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum Remaining Maturity of Foreign Currency Derivatives</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1" xlink:to="lab_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeasePayments_4e984ed0-1dc9-4492-9bfa-111b7c13c802_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeasePayments" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease payments</link:label>
    <link:label id="lab_us-gaap_OperatingLeasePayments_label_en-US" xlink:label="lab_us-gaap_OperatingLeasePayments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Payments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasePayments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeasePayments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeasePayments" xlink:to="lab_us-gaap_OperatingLeasePayments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_82f91982-12ab-49ee-ac0e-1329acc2ebb3_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete tax benefit related to employee stock option exercises</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_34ce6589-21a2-4c62-af11-795d020a1619_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete tax benefit related to employee stock options</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Expense (Benefit), Share-based Payment Arrangement, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated_ac831795-a54b-4da4-9f5a-69a90b5d8f7c_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of positions eliminated</link:label>
    <link:label id="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated_label_en-US" xlink:label="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring and Related Cost, Number of Positions Eliminated</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated" xlink:to="lab_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationConsiderationTransferred1_873c8cd9-eadd-4e6d-8425-8f3e1561ba80_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationConsiderationTransferred1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchase price</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationConsiderationTransferred1_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationConsiderationTransferred1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combination, Consideration Transferred</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationConsiderationTransferred1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationConsiderationTransferred1" xlink:to="lab_us-gaap_BusinessCombinationConsiderationTransferred1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProvisionForDoubtfulAccounts_28e853ae-2128-427f-be24-e1f823d25b34_terseLabel_en-US" xlink:label="lab_us-gaap_ProvisionForDoubtfulAccounts" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increases to the allowance for credit losses</link:label>
    <link:label id="lab_us-gaap_ProvisionForDoubtfulAccounts_label_en-US" xlink:label="lab_us-gaap_ProvisionForDoubtfulAccounts" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, Credit Loss Expense (Reversal)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProvisionForDoubtfulAccounts" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProvisionForDoubtfulAccounts"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProvisionForDoubtfulAccounts" xlink:to="lab_us-gaap_ProvisionForDoubtfulAccounts" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_9f1bab4e-80e8-4bc0-af61-3034ee2769c0_terseLabel_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_label_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_documentation_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" xlink:to="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillRollForward_407d5dea-c9e0-438c-b7a9-05524a861d69_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_GoodwillRollForward_label_en-US" xlink:label="lab_us-gaap_GoodwillRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillRollForward" xlink:to="lab_us-gaap_GoodwillRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue_3d7e2ab8-456f-49d0-b14d-5ffc682e47ba_terseLabel_en-US" xlink:label="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Exercisable, aggregate intrinsic value</link:label>
    <link:label id="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue_label_en-US" xlink:label="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share Based Compensation Arrangement By Share Based Payment Award Options Exercisable Aggregate Intrinsic Value</link:label>
    <link:label id="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue_documentation_en-US" xlink:label="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share based compensation arrangement by share based payment award options exercisable aggregate intrinsic value.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" xlink:href="cgnx-20211231.xsd#cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" xlink:to="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_93c5338c-12ad-40c6-a0df-a04095b58754_terseLabel_en-US" xlink:label="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reconciliation of Unrecognized Tax Benefits, Excluding Amounts Pertaining to Examined Tax Returns [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_label_en-US" xlink:label="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reconciliation of Unrecognized Tax Benefits, Excluding Amounts Pertaining to Examined Tax Returns [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:to="lab_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_SouthboroughMassachusettsMember_f004e00e-ad7d-4a0c-8ea4-541f1ae972cd_terseLabel_en-US" xlink:label="lab_cgnx_SouthboroughMassachusettsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Southborough, Massachusetts</link:label>
    <link:label id="lab_cgnx_SouthboroughMassachusettsMember_label_en-US" xlink:label="lab_cgnx_SouthboroughMassachusettsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Southborough, Massachusetts [Member]</link:label>
    <link:label id="lab_cgnx_SouthboroughMassachusettsMember_documentation_en-US" xlink:label="lab_cgnx_SouthboroughMassachusettsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Southborough, Massachusetts</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SouthboroughMassachusettsMember" xlink:href="cgnx-20211231.xsd#cgnx_SouthboroughMassachusettsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_SouthboroughMassachusettsMember" xlink:to="lab_cgnx_SouthboroughMassachusettsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesAndStockholdersEquity_3516e3e2-78ac-45f8-91c0-65da00d9ae67_totalLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesAndStockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total liabilities and shareholders' equity</link:label>
    <link:label id="lab_us-gaap_LiabilitiesAndStockholdersEquity_label_en-US" xlink:label="lab_us-gaap_LiabilitiesAndStockholdersEquity" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities and Equity</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquity" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquity" xlink:to="lab_us-gaap_LiabilitiesAndStockholdersEquity" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_a3022f82-cf31-492b-80c7-ad713dd9c3e3_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Other Adjustments, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherAccruedLiabilitiesCurrent_fbbf3eb9-b734-4b36-a83e-da30561b7b8e_terseLabel_en-US" xlink:label="lab_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other</link:label>
    <link:label id="lab_us-gaap_OtherAccruedLiabilitiesCurrent_label_en-US" xlink:label="lab_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Accrued Liabilities, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAccruedLiabilitiesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:to="lab_us-gaap_OtherAccruedLiabilitiesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_AmericasMember_f3692a35-630b-4291-8bc6-40826b164c43_terseLabel_en-US" xlink:label="lab_srt_AmericasMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Americas [Member]</link:label>
    <link:label id="lab_srt_AmericasMember_label_en-US" xlink:label="lab_srt_AmericasMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Americas [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_AmericasMember" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_AmericasMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_AmericasMember" xlink:to="lab_srt_AmericasMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityCurrent_1d0f4746-0c17-40b0-8186-4b5e9b3e4360_terseLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred revenue and customer deposits</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityCurrent_0edb6e5f-ad3e-4404-9088-17e9a59498f2_periodStartLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning balance</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityCurrent_8d1cf19d-8e6a-4096-b80b-f428e1995051_periodEndLabel_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">End balance</link:label>
    <link:label id="lab_us-gaap_ContractWithCustomerLiabilityCurrent_label_en-US" xlink:label="lab_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Liability, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractWithCustomerLiabilityCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:to="lab_us-gaap_ContractWithCustomerLiabilityCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_554434e0-2431-4c98-ad0b-66c352fdc784_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2026</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year Five</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_57b59823-d151-4f30-a06b-b829388b9450_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Exercised, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangements by Share-based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeLeaseDescriptionTable_c195ece9-8e4e-4e3d-ad1e-a99395979487_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeLeaseDescriptionTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Lease, Description [Table]</link:label>
    <link:label id="lab_us-gaap_LesseeLeaseDescriptionTable_label_en-US" xlink:label="lab_us-gaap_LesseeLeaseDescriptionTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Lease, Description [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeaseDescriptionTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeLeaseDescriptionTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeLeaseDescriptionTable" xlink:to="lab_us-gaap_LesseeLeaseDescriptionTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskLineItems_b6a446b4-a240-41ae-8787-0af56ce2a0c2_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk [Line Items]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskLineItems_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskLineItems" xlink:to="lab_us-gaap_ConcentrationRiskLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeLineItems_6a74dcf7-81dd-44b6-b7d9-da52f23b14c8_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative [Line Items]</link:label>
    <link:label id="lab_us-gaap_DerivativeLineItems_label_en-US" xlink:label="lab_us-gaap_DerivativeLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeLineItems" xlink:to="lab_us-gaap_DerivativeLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringReserveRollForward_dba1afa5-2b73-40c3-a770-55b74f64be3d_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringReserveRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Reserve [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_RestructuringReserveRollForward_label_en-US" xlink:label="lab_us-gaap_RestructuringReserveRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Reserve [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringReserveRollForward" xlink:to="lab_us-gaap_RestructuringReserveRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_f73b5e4a-c0ed-4998-ab63-985db450f549_terseLabel_en-US" xlink:label="lab_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Economic hedge forward contracts</link:label>
    <link:label id="lab_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_label_en-US" xlink:label="lab_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Currency Contract, Asset, Fair Value Disclosure</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyContractAssetFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure" xlink:to="lab_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareTextBlock_79e10c6a-90cc-4638-b4f6-4d8abcca1c23_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted Average Shares</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareTextBlock_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareTextBlock" xlink:to="lab_us-gaap_EarningsPerShareTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseImpairmentLoss_a686f457-d378-4745-800f-6529ada54a9a_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseImpairmentLoss" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Impairment Loss</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseImpairmentLoss_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseImpairmentLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Impairment Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseImpairmentLoss" xlink:to="lab_us-gaap_OperatingLeaseImpairmentLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DiscreteTaxItemsDomain_0bf00902-2cdd-4013-a405-792c59c6a820_terseLabel_en-US" xlink:label="lab_cgnx_DiscreteTaxItemsDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Items [Domain]</link:label>
    <link:label id="lab_cgnx_DiscreteTaxItemsDomain_label_en-US" xlink:label="lab_cgnx_DiscreteTaxItemsDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Items [Domain]</link:label>
    <link:label id="lab_cgnx_DiscreteTaxItemsDomain_documentation_en-US" xlink:label="lab_cgnx_DiscreteTaxItemsDomain" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Items</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsDomain" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxItemsDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DiscreteTaxItemsDomain" xlink:to="lab_cgnx_DiscreteTaxItemsDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountingChangesAndErrorCorrectionsAbstract_13cd54c3-a75c-4a2a-86e1-5ba600645e1a_terseLabel_en-US" xlink:label="lab_us-gaap_AccountingChangesAndErrorCorrectionsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounting Changes and Error Corrections [Abstract]</link:label>
    <link:label id="lab_us-gaap_AccountingChangesAndErrorCorrectionsAbstract_label_en-US" xlink:label="lab_us-gaap_AccountingChangesAndErrorCorrectionsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounting Changes and Error Corrections [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingChangesAndErrorCorrectionsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingChangesAndErrorCorrectionsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountingChangesAndErrorCorrectionsAbstract" xlink:to="lab_us-gaap_AccountingChangesAndErrorCorrectionsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_MinimumMember_41185c07-1a6f-425a-8336-64a1e0798686_terseLabel_en-US" xlink:label="lab_srt_MinimumMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum [Member]</link:label>
    <link:label id="lab_srt_MinimumMember_label_en-US" xlink:label="lab_srt_MinimumMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_MinimumMember" xlink:to="lab_srt_MinimumMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_d42adbc4-646b-442b-9653-e1b2d13bc8e2_negatedLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Other Operating Assets and Liabilities, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:to="lab_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized_2d5ea881-8f1d-4ece-a33a-44fa89dad518_negatedTerseLabel_en-US" xlink:label="lab_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Recognition of revenue deferred in prior period</link:label>
    <link:label id="lab_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized_label_en-US" xlink:label="lab_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Liability, Current And Prior Period Revenue Recognized</link:label>
    <link:label id="lab_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized_documentation_en-US" xlink:label="lab_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract with Customer, Liability, Current And Prior Period Revenue Recognized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" xlink:href="cgnx-20211231.xsd#cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" xlink:to="lab_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GrossProfit_a0c72284-d686-41d6-9318-d1237906b0b4_totalLabel_en-US" xlink:label="lab_us-gaap_GrossProfit" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross margin</link:label>
    <link:label id="lab_us-gaap_GrossProfit_label_en-US" xlink:label="lab_us-gaap_GrossProfit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross Profit</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GrossProfit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GrossProfit" xlink:to="lab_us-gaap_GrossProfit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_b105bbf0-1513-4a7f-82f4-1f6f8796ee50_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2023</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, Year Two</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_59cbd786-ddae-400c-8232-7561c33b94af_terseLabel_en-US" xlink:label="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effect of foreign exchange rate changes on cash and cash equivalents</link:label>
    <link:label id="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_label_en-US" xlink:label="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effect of Exchange Rate on Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:to="lab_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_c8ee318b-f4a4-4ae6-9f9f-c95aa62f710e_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Revenues from External Customers and Long-Lived Assets [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Revenues from External Customers and Long-Lived Assets [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:to="lab_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SellingGeneralAndAdministrativeExpense_45e4503c-238e-4d21-9e72-a171df7cb7f6_terseLabel_en-US" xlink:label="lab_us-gaap_SellingGeneralAndAdministrativeExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Selling, general, and administrative expenses</link:label>
    <link:label id="lab_us-gaap_SellingGeneralAndAdministrativeExpense_label_en-US" xlink:label="lab_us-gaap_SellingGeneralAndAdministrativeExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Selling, General and Administrative Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingGeneralAndAdministrativeExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SellingGeneralAndAdministrativeExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SellingGeneralAndAdministrativeExpense" xlink:to="lab_us-gaap_SellingGeneralAndAdministrativeExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice_9e1ded63-5fa9-4123-8c59-6a1692fce456_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Forfeited or expired, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures and Expirations in Period, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_7b6bfb80-1f48-4e60-b9fc-1d9eb06c0082_terseLabel_en-US" xlink:label="lab_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Indefinite-lived Intangible Assets [Axis]</link:label>
    <link:label id="lab_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_label_en-US" xlink:label="lab_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Indefinite-lived Intangible Assets [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="lab_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockSharesAuthorized_558dd2f9-cc54-4d4d-86e6-6b0e88e77281_verboseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, shares authorized</link:label>
    <link:label id="lab_us-gaap_PreferredStockSharesAuthorized_1ffc2c45-e6a7-4f35-af3f-65d2a5cef4f1_terseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Authorized shares</link:label>
    <link:label id="lab_us-gaap_PreferredStockSharesAuthorized_label_en-US" xlink:label="lab_us-gaap_PreferredStockSharesAuthorized" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Shares Authorized</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockSharesAuthorized" xlink:to="lab_us-gaap_PreferredStockSharesAuthorized" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger_ab01fbe6-1859-4b00-a349-ae77f95d89a9_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Greater than 12 Months</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Continuous Unrealized Loss Position, 12 Months or Longer</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_TreasuryBillsFairValueDisclosure_3df6922d-a895-4df0-abc6-b8f1db54d519_terseLabel_en-US" xlink:label="lab_cgnx_TreasuryBillsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Treasury bills</link:label>
    <link:label id="lab_cgnx_TreasuryBillsFairValueDisclosure_label_en-US" xlink:label="lab_cgnx_TreasuryBillsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Treasury Bills Fair Value Disclosure</link:label>
    <link:label id="lab_cgnx_TreasuryBillsFairValueDisclosure_documentation_en-US" xlink:label="lab_cgnx_TreasuryBillsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Treasury bills fair value disclosure.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TreasuryBillsFairValueDisclosure" xlink:href="cgnx-20211231.xsd#cgnx_TreasuryBillsFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_TreasuryBillsFairValueDisclosure" xlink:to="lab_cgnx_TreasuryBillsFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ContractLiabilityForeignExchangeRateChanges_5b5e56ae-62e6-4d98-92b9-83558e116fda_terseLabel_en-US" xlink:label="lab_cgnx_ContractLiabilityForeignExchangeRateChanges" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign exchange rate changes</link:label>
    <link:label id="lab_cgnx_ContractLiabilityForeignExchangeRateChanges_label_en-US" xlink:label="lab_cgnx_ContractLiabilityForeignExchangeRateChanges" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract Liability Foreign Exchange Rate Changes</link:label>
    <link:label id="lab_cgnx_ContractLiabilityForeignExchangeRateChanges_documentation_en-US" xlink:label="lab_cgnx_ContractLiabilityForeignExchangeRateChanges" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contract Liability Foreign Exchange Rate Changes</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractLiabilityForeignExchangeRateChanges" xlink:href="cgnx-20211231.xsd#cgnx_ContractLiabilityForeignExchangeRateChanges"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ContractLiabilityForeignExchangeRateChanges" xlink:to="lab_cgnx_ContractLiabilityForeignExchangeRateChanges" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenueRecognitionPolicyTextBlock_c98ac4d9-5752-42f2-8ca8-c0cd11d5a054_terseLabel_en-US" xlink:label="lab_us-gaap_RevenueRecognitionPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue Recognition</link:label>
    <link:label id="lab_us-gaap_RevenueRecognitionPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_RevenueRecognitionPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenue [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRecognitionPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenueRecognitionPolicyTextBlock" xlink:to="lab_us-gaap_RevenueRecognitionPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_eef7416a-e47b-47d9-8664-c33ebcea683f_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business acquisitions</link:label>
    <link:label id="lab_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_label_en-US" xlink:label="lab_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments to Acquire Businesses, Net of Cash Acquired</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:to="lab_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherRestructuringMember_759649a7-7453-40c6-8b7a-9b0448b543bd_terseLabel_en-US" xlink:label="lab_us-gaap_OtherRestructuringMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Restructuring [Member]</link:label>
    <link:label id="lab_us-gaap_OtherRestructuringMember_label_en-US" xlink:label="lab_us-gaap_OtherRestructuringMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Restructuring [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherRestructuringMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherRestructuringMember" xlink:to="lab_us-gaap_OtherRestructuringMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_3665e736-5a95-4e8c-b72c-874a861d8d98_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Constituents of Provision for Income Taxes</link:label>
    <link:label id="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock_c95ed802-c57a-4994-99a9-3085058c21c8_terseLabel_en-US" xlink:label="lab_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-Based Compensation</link:label>
    <link:label id="lab_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock_label_en-US" xlink:label="lab_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:to="lab_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueInputsLevel3Member_7d952185-a92e-402a-852d-30efe7638719_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel3Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unobservable Inputs (Level 3)</link:label>
    <link:label id="lab_us-gaap_FairValueInputsLevel3Member_label_en-US" xlink:label="lab_us-gaap_FairValueInputsLevel3Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Inputs, Level 3 [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel3Member" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel3Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueInputsLevel3Member" xlink:to="lab_us-gaap_FairValueInputsLevel3Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsOfDividendsCommonStock_dd064324-65bb-4565-833a-b73dc67e556a_negatedLabel_en-US" xlink:label="lab_us-gaap_PaymentsOfDividendsCommonStock" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payment of dividends</link:label>
    <link:label id="lab_us-gaap_PaymentsOfDividendsCommonStock_label_en-US" xlink:label="lab_us-gaap_PaymentsOfDividendsCommonStock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments of Ordinary Dividends, Common Stock</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividendsCommonStock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsOfDividendsCommonStock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsOfDividendsCommonStock" xlink:to="lab_us-gaap_PaymentsOfDividendsCommonStock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeLeasesPolicyTextBlock_40eae93c-4edb-4322-873d-c5c7578cf757_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeLeasesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Leases</link:label>
    <link:label id="lab_us-gaap_LesseeLeasesPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_LesseeLeasesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Leases [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeasesPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeLeasesPolicyTextBlock" xlink:to="lab_us-gaap_LesseeLeasesPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_86587937-47bf-4b1f-b94f-dbe178b5538e_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net unrealized losses on available-for-sale investments, net of tax</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">AOCI, Debt Securities, Available-for-sale, Adjustment, after Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NumberOfReportableSegments_5d559c9d-49e8-4c88-b52a-a38ee6faae65_terseLabel_en-US" xlink:label="lab_us-gaap_NumberOfReportableSegments" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of reportable segments</link:label>
    <link:label id="lab_us-gaap_NumberOfReportableSegments_label_en-US" xlink:label="lab_us-gaap_NumberOfReportableSegments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Number of Reportable Segments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NumberOfReportableSegments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NumberOfReportableSegments" xlink:to="lab_us-gaap_NumberOfReportableSegments" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AccruedExpensesMember_47a7cd31-563e-4820-8054-0a4e706d4945_terseLabel_en-US" xlink:label="lab_cgnx_AccruedExpensesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Expenses [Member]</link:label>
    <link:label id="lab_cgnx_AccruedExpensesMember_label_en-US" xlink:label="lab_cgnx_AccruedExpensesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Expenses [Member]</link:label>
    <link:label id="lab_cgnx_AccruedExpensesMember_documentation_en-US" xlink:label="lab_cgnx_AccruedExpensesMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued expenses.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccruedExpensesMember" xlink:href="cgnx-20211231.xsd#cgnx_AccruedExpensesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AccruedExpensesMember" xlink:to="lab_cgnx_AccruedExpensesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_aad6c698-d7e9-4de0-94ac-bf32f20a8ac1_terseLabel_en-US" xlink:label="lab_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign currency gain (loss)</link:label>
    <link:label id="lab_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_label_en-US" xlink:label="lab_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Currency Transaction Gain (Loss), before Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyTransactionGainLossBeforeTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax" xlink:to="lab_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DisaggregationOfRevenueLineItems_b90a6770-289e-4120-a6ae-b160e9211991_terseLabel_en-US" xlink:label="lab_us-gaap_DisaggregationOfRevenueLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disaggregation of Revenue [Line Items]</link:label>
    <link:label id="lab_us-gaap_DisaggregationOfRevenueLineItems_label_en-US" xlink:label="lab_us-gaap_DisaggregationOfRevenueLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disaggregation of Revenue [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems" xlink:to="lab_us-gaap_DisaggregationOfRevenueLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PerformanceSharesMember_cf8fcdcd-e72b-4ca5-86b2-f1b06bb59457_terseLabel_en-US" xlink:label="lab_us-gaap_PerformanceSharesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance Shares [Member]</link:label>
    <link:label id="lab_us-gaap_PerformanceSharesMember_label_en-US" xlink:label="lab_us-gaap_PerformanceSharesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Performance Shares [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PerformanceSharesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PerformanceSharesMember" xlink:to="lab_us-gaap_PerformanceSharesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommitmentsAndContingencies_13bf5ea2-3b5f-4cc5-b7b0-8754d46d7d0d_terseLabel_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingencies" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and contingencies (Note 11)</link:label>
    <link:label id="lab_us-gaap_CommitmentsAndContingencies_label_en-US" xlink:label="lab_us-gaap_CommitmentsAndContingencies" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Commitments and Contingencies</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingencies" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingencies"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommitmentsAndContingencies" xlink:to="lab_us-gaap_CommitmentsAndContingencies" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventTable_a0208b8a-de8e-4497-be14-9346473d8292_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event [Table]</link:label>
    <link:label id="lab_us-gaap_SubsequentEventTable_label_en-US" xlink:label="lab_us-gaap_SubsequentEventTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventTable" xlink:to="lab_us-gaap_SubsequentEventTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_203f79e7-8d6e-4cb6-ae4c-59418cf38a7b_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated other comprehensive loss, net of tax</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss), Net of Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityEmergingGrowthCompany_f04b1140-ab91-4579-a965-106609a8df59_terseLabel_en-US" xlink:label="lab_dei_EntityEmergingGrowthCompany" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Small Business</link:label>
    <link:label id="lab_dei_EntityEmergingGrowthCompany_label_en-US" xlink:label="lab_dei_EntityEmergingGrowthCompany" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Emerging Growth Company</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityEmergingGrowthCompany" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityEmergingGrowthCompany"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityEmergingGrowthCompany" xlink:to="lab_dei_EntityEmergingGrowthCompany" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedIncomeTaxesNoncurrent_f78e4523-4319-4282-bc1c-8adeb4b95522_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedIncomeTaxesNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Non-current accrued income taxes</link:label>
    <link:label id="lab_us-gaap_AccruedIncomeTaxesNoncurrent_label_en-US" xlink:label="lab_us-gaap_AccruedIncomeTaxesNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Income Taxes, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedIncomeTaxesNoncurrent" xlink:to="lab_us-gaap_AccruedIncomeTaxesNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestrictedStockMember_8e097720-87c4-4efc-a733-01ed859acd72_terseLabel_en-US" xlink:label="lab_us-gaap_RestrictedStockMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restricted Stock [Member]</link:label>
    <link:label id="lab_us-gaap_RestrictedStockMember_label_en-US" xlink:label="lab_us-gaap_RestrictedStockMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restricted Stock [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestrictedStockMember" xlink:to="lab_us-gaap_RestrictedStockMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AuditorName_714e6b40-e730-45cf-8bd5-2646c3825492_terseLabel_en-US" xlink:label="lab_dei_AuditorName" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Name</link:label>
    <link:label id="lab_dei_AuditorName_label_en-US" xlink:label="lab_dei_AuditorName" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Name</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorName" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AuditorName"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AuditorName" xlink:to="lab_dei_AuditorName" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_CoverAbstract_67e90474-8848-4ee4-9332-97fd0e313a81_terseLabel_en-US" xlink:label="lab_dei_CoverAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cover [Abstract]</link:label>
    <link:label id="lab_dei_CoverAbstract_label_en-US" xlink:label="lab_dei_CoverAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cover [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CoverAbstract" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_CoverAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_CoverAbstract" xlink:to="lab_dei_CoverAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_471fe3cc-3f6f-42ce-8296-e7851de5212b_terseLabel_en-US" xlink:label="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenues from External Customers and Long-Lived Assets [Line Items]</link:label>
    <link:label id="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_label_en-US" xlink:label="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Revenues from External Customers and Long-Lived Assets [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:to="lab_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsPolicyTextBlock_3c6cae6d-b5a6-4141-93f8-e9ba875ea047_terseLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, and Investments</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:to="lab_us-gaap_CashAndCashEquivalentsPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock_87880dd2-9ce5-4230-afa8-95081d3af063_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross Unrealized Losses and Fair Value for Available-for-Sale Investments</link:label>
    <link:label id="lab_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Unrealized Loss on Investments [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_1c800273-dca3-459f-85f8-41cfae700526_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, Undiscounted Excess Amount</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, Undiscounted Excess Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Cash_6603ebb1-d4fc-4a9f-8efb-c95488a0ab4b_terseLabel_en-US" xlink:label="lab_us-gaap_Cash" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash</link:label>
    <link:label id="lab_us-gaap_Cash_label_en-US" xlink:label="lab_us-gaap_Cash" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Cash"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Cash" xlink:to="lab_us-gaap_Cash" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_6eeeb2eb-aa3c-44de-b542-0e7f75271b89_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax effect of unrealized gain (loss) on available-for-sale investments</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_f727393c-f4ed-4028-9d1b-94fe49111ab9_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax effect of unrealized gain on available-for-sale investments</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">OCI, Debt Securities, Available-for-Sale, Unrealized Holding Gain (Loss), before Adjustment, Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FinancialInstrumentAxis_82cc5359-b398-4f28-8261-bb6175492559_terseLabel_en-US" xlink:label="lab_us-gaap_FinancialInstrumentAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financial Instrument [Axis]</link:label>
    <link:label id="lab_us-gaap_FinancialInstrumentAxis_label_en-US" xlink:label="lab_us-gaap_FinancialInstrumentAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financial Instrument [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FinancialInstrumentAxis" xlink:to="lab_us-gaap_FinancialInstrumentAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsOfDividends_d141d668-549b-4870-9dad-2bdbff673c06_terseLabel_en-US" xlink:label="lab_us-gaap_PaymentsOfDividends" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments of dividends</link:label>
    <link:label id="lab_us-gaap_PaymentsOfDividends_label_en-US" xlink:label="lab_us-gaap_PaymentsOfDividends" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments of Dividends</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividends" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsOfDividends"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsOfDividends" xlink:to="lab_us-gaap_PaymentsOfDividends" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_b1356dee-f8e8-4da5-918c-547e74f82948_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Available-for-sale Securities [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Available-for-sale Securities [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable" xlink:to="lab_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedVacationCurrent_1024f3fb-46d1-4cbb-bf7f-8f046fe234e2_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedVacationCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vacation</link:label>
    <link:label id="lab_us-gaap_AccruedVacationCurrent_label_en-US" xlink:label="lab_us-gaap_AccruedVacationCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Vacation, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedVacationCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedVacationCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedVacationCurrent" xlink:to="lab_us-gaap_AccruedVacationCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_9dd67969-9951-4ca9-8016-46a3af9c0172_terseLabel_en-US" xlink:label="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current:</link:label>
    <link:label id="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_label_en-US" xlink:label="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Income Tax Expense (Benefit), Continuing Operations [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="lab_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CustomerContractsAndRelationshipsMember_191a8b09-558b-42c1-b20d-27c948220676_verboseLabel_en-US" xlink:label="lab_cgnx_CustomerContractsAndRelationshipsMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Relationships [Member]</link:label>
    <link:label id="lab_cgnx_CustomerContractsAndRelationshipsMember_7c4f425d-e25b-4253-aae3-f10e0f01aa82_terseLabel_en-US" xlink:label="lab_cgnx_CustomerContractsAndRelationshipsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Contracts And Relationships [Member]</link:label>
    <link:label id="lab_cgnx_CustomerContractsAndRelationshipsMember_label_en-US" xlink:label="lab_cgnx_CustomerContractsAndRelationshipsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Contracts And Relationships [Member]</link:label>
    <link:label id="lab_cgnx_CustomerContractsAndRelationshipsMember_documentation_en-US" xlink:label="lab_cgnx_CustomerContractsAndRelationshipsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer Contracts And Relationships [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CustomerContractsAndRelationshipsMember" xlink:to="lab_cgnx_CustomerContractsAndRelationshipsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsForRestructuring_916ea18c-13e7-418d-b264-c139481b14a2_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_PaymentsForRestructuring" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash payments</link:label>
    <link:label id="lab_us-gaap_PaymentsForRestructuring_label_en-US" xlink:label="lab_us-gaap_PaymentsForRestructuring" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments for Restructuring</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRestructuring" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRestructuring"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsForRestructuring" xlink:to="lab_us-gaap_PaymentsForRestructuring" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockMember_2815d077-f057-4528-a012-1df2af634966_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock [Member]</link:label>
    <link:label id="lab_us-gaap_CommonStockMember_label_en-US" xlink:label="lab_us-gaap_CommonStockMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockMember" xlink:to="lab_us-gaap_CommonStockMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_3cbe4508-cac5-4935-b14f-2aaf9a9fa88a_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign income from continuing operations before taxes</link:label>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_label_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income (Loss) from Continuing Operations before Income Taxes, Foreign</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:to="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BuildingImprovementsMember_242700cd-a39b-4521-aaa9-04c0d4ca364f_terseLabel_en-US" xlink:label="lab_us-gaap_BuildingImprovementsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Building Improvements [Member]</link:label>
    <link:label id="lab_us-gaap_BuildingImprovementsMember_label_en-US" xlink:label="lab_us-gaap_BuildingImprovementsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Building Improvements [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingImprovementsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BuildingImprovementsMember" xlink:to="lab_us-gaap_BuildingImprovementsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingIncomeLoss_db6f1f62-7fdf-4d28-bfe4-40c6d382ba95_totalLabel_en-US" xlink:label="lab_us-gaap_OperatingIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating income</link:label>
    <link:label id="lab_us-gaap_OperatingIncomeLoss_label_en-US" xlink:label="lab_us-gaap_OperatingIncomeLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Income (Loss)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingIncomeLoss" xlink:to="lab_us-gaap_OperatingIncomeLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityCurrent_ece908f2-feb6-4e09-800c-cb5622bc59aa_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating lease liabilities</link:label>
    <link:label id="lab_us-gaap_OperatingLeaseLiabilityCurrent_label_en-US" xlink:label="lab_us-gaap_OperatingLeaseLiabilityCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Operating Lease, Liability, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeaseLiabilityCurrent" xlink:to="lab_us-gaap_OperatingLeaseLiabilityCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_b82f7781-c3b0-422a-95b1-ef19633c0187_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross Unrealized Losses</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Accumulated Gross Unrealized Loss, before Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:to="lab_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_d98108b5-be91-4d5c-96ed-3293170aabeb_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2023</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Asset, Expected Amortization, Year Two</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_HedgingDesignationAxis_a010eb92-2206-4b4b-9b33-8feda3440305_terseLabel_en-US" xlink:label="lab_us-gaap_HedgingDesignationAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Hedging Designation [Axis]</link:label>
    <link:label id="lab_us-gaap_HedgingDesignationAxis_label_en-US" xlink:label="lab_us-gaap_HedgingDesignationAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Hedging Designation [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_HedgingDesignationAxis" xlink:to="lab_us-gaap_HedgingDesignationAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ChangeInAccountingEstimateTypeDomain_be1ebdd8-4e63-40d4-90dc-13b0580ea406_terseLabel_en-US" xlink:label="lab_us-gaap_ChangeInAccountingEstimateTypeDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in Accounting Estimate, Type [Domain]</link:label>
    <link:label id="lab_us-gaap_ChangeInAccountingEstimateTypeDomain_label_en-US" xlink:label="lab_us-gaap_ChangeInAccountingEstimateTypeDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in Accounting Estimate, Type [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateTypeDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateTypeDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ChangeInAccountingEstimateTypeDomain" xlink:to="lab_us-gaap_ChangeInAccountingEstimateTypeDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_958fd16c-9043-46c2-bde6-496869a0aaf6_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated other comprehensive loss consists of foreign currency translation adjustments, net of tax</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Income (Loss), Foreign Currency Translation Adjustment, Net of Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensation_9898a749-ff9d-4a84-b5ed-b6c6e02c2cc7_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense and the related income tax benefit recognized, credits</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensation_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Noncash Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensation" xlink:to="lab_us-gaap_ShareBasedCompensation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock_f8a5a560-523d-42e3-9ad8-293babec06b4_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Charges</link:label>
    <link:label id="lab_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring and Related Activities Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock" xlink:to="lab_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue_4dadc371-60f0-42d5-8ee5-a2911d723651_terseLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue_487d8171-1f95-4d13-8135-32b4cf8a48a4_totalLabel_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and cash equivalents</link:label>
    <link:label id="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue_label_en-US" xlink:label="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and Cash Equivalents, at Carrying Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:to="lab_us-gaap_CashAndCashEquivalentsAtCarryingValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Depreciation_ee725df0-ef25-48b6-b12a-e7b2f4b20923_terseLabel_en-US" xlink:label="lab_us-gaap_Depreciation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Depreciation of property, plant, and equipment</link:label>
    <link:label id="lab_us-gaap_Depreciation_label_en-US" xlink:label="lab_us-gaap_Depreciation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Depreciation</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Depreciation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Depreciation" xlink:to="lab_us-gaap_Depreciation" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_UnrecognizedTaxBenefitsGross_f0e2857b-393b-4a49-92c2-b16ffe38ad52_terseLabel_en-US" xlink:label="lab_cgnx_UnrecognizedTaxBenefitsGross" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Gross</link:label>
    <link:label id="lab_cgnx_UnrecognizedTaxBenefitsGross_label_en-US" xlink:label="lab_cgnx_UnrecognizedTaxBenefitsGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Gross</link:label>
    <link:label id="lab_cgnx_UnrecognizedTaxBenefitsGross_documentation_en-US" xlink:label="lab_cgnx_UnrecognizedTaxBenefitsGross" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_UnrecognizedTaxBenefitsGross" xlink:href="cgnx-20211231.xsd#cgnx_UnrecognizedTaxBenefitsGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_UnrecognizedTaxBenefitsGross" xlink:to="lab_cgnx_UnrecognizedTaxBenefitsGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_8fddd672-6360-4427-b415-11a66754524d_negatedLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in deferred income taxes</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Deferred Income Taxes</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInDeferredIncomeTaxes"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes" xlink:to="lab_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_7bbaee4e-0de6-4792-8fea-2cc8150bef91_terseLabel_en-US" xlink:label="lab_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Losses on currency swaps, net of gains on long-term intercompany loans</link:label>
    <link:label id="lab_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_label_en-US" xlink:label="lab_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Adjustment for Long-term Intercompany Transactions, Net of Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax" xlink:to="lab_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_0d1c9077-d001-48d3-957b-64c69108d7ea_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Changes in Warranty Obligations</link:label>
    <link:label id="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Product Warranty Liability [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities_9f6a5c9f-882c-4a8b-b65a-790eb8e4a004_terseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued expenses</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Accrued Liabilities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:to="lab_us-gaap_IncreaseDecreaseInAccruedLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal_d86756e9-cd96-4aec-8960-18033bd278e1_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increases to the allowance for credit losses</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Change in Present Value, Expense (Reversal)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualPayments_2199304c-13a5-42cc-8edb-eb8a57402180_negatedLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualPayments" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fulfillment of warranty obligations</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualPayments_label_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualPayments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard and Extended Product Warranty Accrual, Decrease for Payments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualPayments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrualPayments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductWarrantyAccrualPayments" xlink:to="lab_us-gaap_ProductWarrantyAccrualPayments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_b5e59781-7847-4170-a564-e95720b06600_negatedLabel_en-US" xlink:label="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Purchases of property, plant, and equipment</link:label>
    <link:label id="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_label_en-US" xlink:label="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments to Acquire Property, Plant, and Equipment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:to="lab_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Liabilities_4a507502-4f83-4abf-8d11-9d4729e7bd2b_totalLabel_en-US" xlink:label="lab_us-gaap_Liabilities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total liabilities</link:label>
    <link:label id="lab_us-gaap_Liabilities_label_en-US" xlink:label="lab_us-gaap_Liabilities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Liabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Liabilities" xlink:to="lab_us-gaap_Liabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_dce9245c-6810-4655-9f66-2823d7fcce3d_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2022</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Asset, Expected Amortization, Year One</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_da7187b7-416f-4f69-850d-6dcc492a7dd1_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Granted, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangements by Share-based Payment Award, Options, Grants in Period, Weighted Average Exercise Price</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_ca60f1b9-dcb1-493f-9ae9-4d00e481b449_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Outstanding, aggregate intrinsic value</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock_64be6f02-fb9d-4e3f-a345-b15bdafabb10_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Leases</link:label>
    <link:label id="lab_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessor, Operating Leases [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeasesOfLessorDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock" xlink:to="lab_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_f1555936-66d5-4989-9825-304e0f202751_terseLabel_en-US" xlink:label="lab_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Tax Expense - Transfer Price Adjustment [Member]</link:label>
    <link:label id="lab_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_label_en-US" xlink:label="lab_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Tax Expense - Transfer Price Adjustment [Member]</link:label>
    <link:label id="lab_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_documentation_en-US" xlink:label="lab_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Tax Expense - Transfer Price Adjustment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember" xlink:href="cgnx-20211231.xsd#cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember" xlink:to="lab_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockSharesIssued_ca2aec28-5c2a-4c39-86fe-3188dff3bfc6_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, shares issued</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesIssued_aea6ad91-7c88-4934-920d-1ea7e82f6280_periodStartLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning Balance, shares</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesIssued_a5b3c981-5d1c-43ca-b88a-316c08c7a2e5_periodEndLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance, shares</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesIssued_label_en-US" xlink:label="lab_us-gaap_CommonStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Shares, Issued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockSharesIssued" xlink:to="lab_us-gaap_CommonStockSharesIssued" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockSharesIssued_84402ae6-fdfd-4ef7-ba91-d96d665df7f1_terseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock, shares issued</link:label>
    <link:label id="lab_us-gaap_PreferredStockSharesIssued_label_en-US" xlink:label="lab_us-gaap_PreferredStockSharesIssued" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Shares Issued</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesIssued" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesIssued"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockSharesIssued" xlink:to="lab_us-gaap_PreferredStockSharesIssued" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressCityOrTown_7d4b831d-7732-4562-a760-5a8358befdf9_terseLabel_en-US" xlink:label="lab_dei_EntityAddressCityOrTown" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:label id="lab_dei_EntityAddressCityOrTown_label_en-US" xlink:label="lab_dei_EntityAddressCityOrTown" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Address, City or Town</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCityOrTown" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityAddressCityOrTown"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityAddressCityOrTown" xlink:to="lab_dei_EntityAddressCityOrTown" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss_a98ecaa4-2bbe-4562-a6d1-0f71431c0e0d_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross realized gains</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Realized Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BalanceSheetLocationAxis_ba5bf32e-f1d1-4524-80c3-a09f719978d8_terseLabel_en-US" xlink:label="lab_us-gaap_BalanceSheetLocationAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Location [Axis]</link:label>
    <link:label id="lab_us-gaap_BalanceSheetLocationAxis_label_en-US" xlink:label="lab_us-gaap_BalanceSheetLocationAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance Sheet Location [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BalanceSheetLocationAxis" xlink:to="lab_us-gaap_BalanceSheetLocationAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedLiabilitiesMember_b6eab36b-711b-43ce-8567-10413a19ab7e_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Liabilities [Member]</link:label>
    <link:label id="lab_us-gaap_AccruedLiabilitiesMember_label_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Liabilities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedLiabilitiesMember" xlink:to="lab_us-gaap_AccruedLiabilitiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueMeasurementFrequencyDomain_ffa25239-d3d9-411e-9def-5b0038b1495d_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementFrequencyDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Measurement Frequency [Domain]</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementFrequencyDomain_label_en-US" xlink:label="lab_us-gaap_FairValueMeasurementFrequencyDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Measurement Frequency [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain" xlink:to="lab_us-gaap_FairValueMeasurementFrequencyDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_d7befc2e-873b-44cb-a811-43aead8f6d73_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred:</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Income Tax Expense (Benefit), Continuing Operations [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:to="lab_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentDisposals_ca599f8c-2d47-4865-ae63-e78b4785729b_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentDisposals" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disposals in period</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentDisposals_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentDisposals" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Disposals</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentDisposals" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisposals"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentDisposals" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentDisposals" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RetainedEarningsAccumulatedDeficit_ea13b8ee-fe7e-4374-badf-b21ea3f97c1a_terseLabel_en-US" xlink:label="lab_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retained earnings</link:label>
    <link:label id="lab_us-gaap_RetainedEarningsAccumulatedDeficit_1cf962dd-55d4-4b6f-b6df-b41a26becd3c_verboseLabel_en-US" xlink:label="lab_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retained Earnings (Accumulated Deficit)</link:label>
    <link:label id="lab_us-gaap_RetainedEarningsAccumulatedDeficit_label_en-US" xlink:label="lab_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retained Earnings (Accumulated Deficit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:to="lab_us-gaap_RetainedEarningsAccumulatedDeficit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementOfStockholdersEquityAbstract_d69b8ebf-7876-4135-8440-a93afc707aeb_terseLabel_en-US" xlink:label="lab_us-gaap_StatementOfStockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Stockholders' Equity [Abstract]</link:label>
    <link:label id="lab_us-gaap_StatementOfStockholdersEquityAbstract_label_en-US" xlink:label="lab_us-gaap_StatementOfStockholdersEquityAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Stockholders' Equity [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfStockholdersEquityAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract" xlink:to="lab_us-gaap_StatementOfStockholdersEquityAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityFilerCategory_02920503-21c9-4222-8270-e34b2cd982b4_terseLabel_en-US" xlink:label="lab_dei_EntityFilerCategory" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Filer Category</link:label>
    <link:label id="lab_dei_EntityFilerCategory_label_en-US" xlink:label="lab_dei_EntityFilerCategory" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Filer Category</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFilerCategory" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityFilerCategory"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityFilerCategory" xlink:to="lab_dei_EntityFilerCategory" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_1122d65a-5189-4c25-80e4-14bc687d4b88_terseLabel_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete tax expense related to GILTI impact of change in tax structure</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_label_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Cuts and Jobs Act, Global Intangible Low Tax Income, Percent</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_documentation_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Cuts and Jobs Act, Global Intangible Low Tax Income, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" xlink:to="lab_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_70b057f9-2547-4ea9-9e84-78dd9ede1cf8_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Risk-free rate</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Fair Value Assumptions, Risk Free Interest Rate</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_StandardProductandServicesMember_c4a606df-adcb-4283-98d0-515e55021019_terseLabel_en-US" xlink:label="lab_cgnx_StandardProductandServicesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard products and services</link:label>
    <link:label id="lab_cgnx_StandardProductandServicesMember_label_en-US" xlink:label="lab_cgnx_StandardProductandServicesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard Product and Services [Member]</link:label>
    <link:label id="lab_cgnx_StandardProductandServicesMember_documentation_en-US" xlink:label="lab_cgnx_StandardProductandServicesMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard Product and Services [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StandardProductandServicesMember" xlink:href="cgnx-20211231.xsd#cgnx_StandardProductandServicesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_StandardProductandServicesMember" xlink:to="lab_cgnx_StandardProductandServicesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock_55d63fa6-c1f8-424f-8972-99bde4d4608c_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments, Gain (Loss)</link:label>
    <link:label id="lab_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Instruments, Gain (Loss) [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:to="lab_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_USTreasurySecuritiesMember_0dc633b4-f6ac-4b9f-a4c5-7dcec27f65e6_terseLabel_en-US" xlink:label="lab_us-gaap_USTreasurySecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Treasury Bills [Member]</link:label>
    <link:label id="lab_us-gaap_USTreasurySecuritiesMember_label_en-US" xlink:label="lab_us-gaap_USTreasurySecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">US Treasury Securities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_USTreasurySecuritiesMember" xlink:to="lab_us-gaap_USTreasurySecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskTable_5f921611-f2c0-47c3-ab9d-d5427ff504eb_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk [Table]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskTable_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskTable" xlink:to="lab_us-gaap_ConcentrationRiskTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTable_8635f068-acf6-46e5-bba0-5dcedd8cf5c9_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Change in Accounting Estimate [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Change in Accounting Estimate [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfChangeInAccountingEstimateTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable" xlink:to="lab_us-gaap_ScheduleOfChangeInAccountingEstimateTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryDisclosureAbstract_e5393c12-dcaa-4196-9cd8-a0ca18614475_terseLabel_en-US" xlink:label="lab_us-gaap_InventoryDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory Disclosure [Abstract]</link:label>
    <link:label id="lab_us-gaap_InventoryDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_InventoryDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryDisclosureAbstract" xlink:to="lab_us-gaap_InventoryDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock_a387e94a-8485-463f-a8a8-1f6afea01ea9_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation</link:label>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock_label_en-US" xlink:label="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock" xlink:to="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_NoncurrentDeferredTaxAssetsDeprecation_7497b91a-1019-4eb1-b2c1-96d929d5ad3f_terseLabel_en-US" xlink:label="lab_cgnx_NoncurrentDeferredTaxAssetsDeprecation" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Depreciation</link:label>
    <link:label id="lab_cgnx_NoncurrentDeferredTaxAssetsDeprecation_label_en-US" xlink:label="lab_cgnx_NoncurrentDeferredTaxAssetsDeprecation" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Noncurrent Deferred Tax Assets Deprecation</link:label>
    <link:label id="lab_cgnx_NoncurrentDeferredTaxAssetsDeprecation_documentation_en-US" xlink:label="lab_cgnx_NoncurrentDeferredTaxAssetsDeprecation" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Noncurrent deferred tax assets deprecation.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation" xlink:href="cgnx-20211231.xsd#cgnx_NoncurrentDeferredTaxAssetsDeprecation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation" xlink:to="lab_cgnx_NoncurrentDeferredTaxAssetsDeprecation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock_9f730e37-f3bf-43d3-9deb-864390f7f14c_terseLabel_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">New Pronouncements</link:label>
    <link:label id="lab_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock_label_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounting Standards Update and Change in Accounting Principle [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:to="lab_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_4931b564-6514-496a-b0b1-39f13e427d59_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets by Major Class [Axis]</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets by Major Class [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_24ade2c0-5347-46f4-ba22-f5c96eef178c_terseLabel_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">3-4 Years</link:label>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_label_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available For Sale Securities Debt Maturities After Three Years Before Four Years Fair Value</link:label>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_documentation_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available-for-sale securities, debt maturities after third year but before fourth year, fair value.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" xlink:to="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AmendmentFlag_c5e477de-7537-48d1-b734-b442e1d041c5_terseLabel_en-US" xlink:label="lab_dei_AmendmentFlag" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amendment Flag</link:label>
    <link:label id="lab_dei_AmendmentFlag_label_en-US" xlink:label="lab_dei_AmendmentFlag" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amendment Flag</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AmendmentFlag" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AmendmentFlag"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AmendmentFlag" xlink:to="lab_dei_AmendmentFlag" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementEquityComponentsAxis_d3f6bf99-3d6d-4797-b01f-82c844f7c50e_terseLabel_en-US" xlink:label="lab_us-gaap_StatementEquityComponentsAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Components [Axis]</link:label>
    <link:label id="lab_us-gaap_StatementEquityComponentsAxis_label_en-US" xlink:label="lab_us-gaap_StatementEquityComponentsAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equity Components [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementEquityComponentsAxis" xlink:to="lab_us-gaap_StatementEquityComponentsAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward_bb0f0cbb-0a2b-4f88-8045-876c358e3124_terseLabel_en-US" xlink:label="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward_label_en-US" xlink:label="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MovementInValuationAllowancesAndReservesRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:to="lab_us-gaap_MovementInValuationAllowancesAndReservesRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueDisclosuresAbstract_85f0785c-c4bb-4983-b927-ca96e7709b8a_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Disclosures [Abstract]</link:label>
    <link:label id="lab_us-gaap_FairValueDisclosuresAbstract_label_en-US" xlink:label="lab_us-gaap_FairValueDisclosuresAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Disclosures [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract" xlink:to="lab_us-gaap_FairValueDisclosuresAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_caae6946-c64e-4d4e-a896-59ecc49845d0_terseLabel_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Antidilutive Securities [Axis]</link:label>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_label_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Antidilutive Securities [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis" xlink:to="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskTypeDomain_3483f1c7-9c7a-4647-b4bb-d0a2578dfe0d_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskTypeDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Type [Domain]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskTypeDomain_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskTypeDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Type [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskTypeDomain" xlink:to="lab_us-gaap_ConcentrationRiskTypeDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_072c7248-697d-4c65-bc93-b1dbdf630d12_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Asset gross amount offset</link:label>
    <link:label id="lab_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_label_en-US" xlink:label="lab_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Asset, Collateral, Obligation to Return Cash, Offset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset" xlink:to="lab_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DisaggregationOfRevenueTable_5e6bfcbf-48e7-419f-b015-9327f096e889_terseLabel_en-US" xlink:label="lab_us-gaap_DisaggregationOfRevenueTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disaggregation of Revenue [Table]</link:label>
    <link:label id="lab_us-gaap_DisaggregationOfRevenueTable_label_en-US" xlink:label="lab_us-gaap_DisaggregationOfRevenueTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Disaggregation of Revenue [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable" xlink:to="lab_us-gaap_DisaggregationOfRevenueTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryNet_de6bddb2-d23c-4723-9f67-4dddb0e1f0a9_terseLabel_en-US" xlink:label="lab_us-gaap_InventoryNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventories</link:label>
    <link:label id="lab_us-gaap_InventoryNet_be77f710-d290-46c2-a6ae-d37ccd61df9c_totalLabel_en-US" xlink:label="lab_us-gaap_InventoryNet" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventories</link:label>
    <link:label id="lab_us-gaap_InventoryNet_label_en-US" xlink:label="lab_us-gaap_InventoryNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryNet" xlink:to="lab_us-gaap_InventoryNet" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_64b80b4b-4e61-4b95-86d7-c8a2ffc5ff34_terseLabel_en-US" xlink:label="lab_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum decrease in income tax expense due to release in reserves</link:label>
    <link:label id="lab_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_label_en-US" xlink:label="lab_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum Decrease In Income Tax Expense Due To Release In Reserves</link:label>
    <link:label id="lab_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_documentation_en-US" xlink:label="lab_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Maximum decrease in income tax expense due to release in reserves.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:href="cgnx-20211231.xsd#cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:to="lab_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod_49382a3d-f63d-48cd-bf19-a7199b03f624_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Granted</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Net of Forfeitures</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_36c8264f-9f72-4176-87a1-3a0495d53e57_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Federal</link:label>
    <link:label id="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Federal Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_b7fcfb6d-202d-4367-a775-42a06628648f_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</link:label>
    <link:label id="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_label_en-US" xlink:label="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:to="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StateAdministrationOfTaxationChinaMember_b6e23851-07bf-41ac-bd13-125a255b767e_terseLabel_en-US" xlink:label="lab_us-gaap_StateAdministrationOfTaxationChinaMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State Administration of Taxation, China [Member]</link:label>
    <link:label id="lab_us-gaap_StateAdministrationOfTaxationChinaMember_label_en-US" xlink:label="lab_us-gaap_StateAdministrationOfTaxationChinaMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">State Administration of Taxation, China [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StateAdministrationOfTaxationChinaMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StateAdministrationOfTaxationChinaMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StateAdministrationOfTaxationChinaMember" xlink:to="lab_us-gaap_StateAdministrationOfTaxationChinaMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_a9c081a6-171c-4794-ba63-4f7b13dced47_terseLabel_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Thereafter</link:label>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_label_en-US" xlink:label="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Lessee, Operating Lease, Liability, to be Paid, after Year Five</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:to="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_MXN_7309110c-85bd-4ab6-8bab-c389629a9552_terseLabel_en-US" xlink:label="lab_currency_MXN" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Mexican Peso [Member]</link:label>
    <link:label id="lab_currency_MXN_label_en-US" xlink:label="lab_currency_MXN" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Mexico, Pesos</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_MXN" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_MXN"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_MXN" xlink:to="lab_currency_MXN" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent_3c7708de-5250-44c7-80c2-435dfa934839_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss, Current</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ProductOrServiceAxis_db94c11b-6e6c-42ef-b650-4b82f7b70a64_terseLabel_en-US" xlink:label="lab_srt_ProductOrServiceAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product and Service [Axis]</link:label>
    <link:label id="lab_srt_ProductOrServiceAxis_label_en-US" xlink:label="lab_srt_ProductOrServiceAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product and Service [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductOrServiceAxis" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductOrServiceAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_ProductOrServiceAxis" xlink:to="lab_srt_ProductOrServiceAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_53fcc945-9fe2-4a3e-baf1-103099f84fa3_terseLabel_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, Allowance for Credit Loss [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_label_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, Allowance for Credit Loss [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward" xlink:to="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PreferredStockParOrStatedValuePerShare_18a58dff-34e5-479f-b7bd-b3b7559628e8_verboseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock par value, in dollars per share</link:label>
    <link:label id="lab_us-gaap_PreferredStockParOrStatedValuePerShare_d4a0bda3-e63b-47f4-8d8a-0c2773f2ea43_terseLabel_en-US" xlink:label="lab_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred stock par value (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_PreferredStockParOrStatedValuePerShare_label_en-US" xlink:label="lab_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Preferred Stock, Par or Stated Value Per Share</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:to="lab_us-gaap_PreferredStockParOrStatedValuePerShare" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityPublicFloat_a42d689d-ae9b-4dd6-8aae-3d035e373446_terseLabel_en-US" xlink:label="lab_dei_EntityPublicFloat" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Public Float</link:label>
    <link:label id="lab_dei_EntityPublicFloat_label_en-US" xlink:label="lab_dei_EntityPublicFloat" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Public Float</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityPublicFloat" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityPublicFloat"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityPublicFloat" xlink:to="lab_dei_EntityPublicFloat" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_5243b3d3-8ee9-4e9a-bd70-7e1b35512720_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross deferred tax assets:</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Net of Valuation Allowance, Noncurrent Classification [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract" xlink:to="lab_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_ae84d322-80fc-4582-8e19-b3e6c085f72a_terseLabel_en-US" xlink:label="lab_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized tax benefit shown as a reduction to noncurrent deferred tax assets</link:label>
    <link:label id="lab_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_label_en-US" xlink:label="lab_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized tax benefit shown as a reduction to noncurrent deferred tax assets</link:label>
    <link:label id="lab_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_documentation_en-US" xlink:label="lab_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized tax benefit shown as a reduction to noncurrent deferred tax assets as a result of net operating loss carryforward, a similar tax loss, or a tax credit carryforward.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" xlink:href="cgnx-20211231.xsd#cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" xlink:to="lab_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockRepurchasedDuringPeriodShares_04afbccc-c660-4d25-9ae4-32c99311aa69_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_StockRepurchasedDuringPeriodShares" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase of common stock, shares</link:label>
    <link:label id="lab_us-gaap_StockRepurchasedDuringPeriodShares_a8cece4f-7afd-4614-9efd-ca6e96335f59_verboseLabel_en-US" xlink:label="lab_us-gaap_StockRepurchasedDuringPeriodShares" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase of common stock, shares</link:label>
    <link:label id="lab_us-gaap_StockRepurchasedDuringPeriodShares_label_en-US" xlink:label="lab_us-gaap_StockRepurchasedDuringPeriodShares" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock Repurchased During Period, Shares</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodShares"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockRepurchasedDuringPeriodShares" xlink:to="lab_us-gaap_StockRepurchasedDuringPeriodShares" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_5a5b3b78-859f-4e7e-983c-2ba039bdfc1c_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign currency translation adjustments</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_ac5e9cc3-ff4e-486d-b3ef-538af01f4c35_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign currency translation adjustments, net of tax</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementLineItems_5856c94b-3bc5-4e1d-91d1-246f5df82079_terseLabel_en-US" xlink:label="lab_us-gaap_StatementLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement [Line Items]</link:label>
    <link:label id="lab_us-gaap_StatementLineItems_label_en-US" xlink:label="lab_us-gaap_StatementLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementLineItems" xlink:to="lab_us-gaap_StatementLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesDomain_7e2ff686-a3c3-4679-9fd2-4cf99556fb58_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesDomain_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_017afaeb-b15b-4e4b-a5f2-4d3ab9d47485_terseLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred revenue and customer deposits</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Contract with Customer, Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerLiability"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:to="lab_us-gaap_IncreaseDecreaseInContractWithCustomerLiability" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_4b0492c6-9c4c-4f5d-bb4a-e794d7786cb2_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Settlement, Foreign, Percent</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Tax Settlement, Foreign, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_4f246093-7f63-4628-b43d-4551e56c8f1c_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DomesticCountryMember_382eee92-55d8-4ef3-ba9f-7b44b245137d_terseLabel_en-US" xlink:label="lab_us-gaap_DomesticCountryMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Domestic Tax Authority [Member]</link:label>
    <link:label id="lab_us-gaap_DomesticCountryMember_label_en-US" xlink:label="lab_us-gaap_DomesticCountryMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Domestic Tax Authority [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DomesticCountryMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DomesticCountryMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DomesticCountryMember" xlink:to="lab_us-gaap_DomesticCountryMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductLiabilityContingencyTable_4d70de03-13bb-478e-96fd-e470021d28b5_terseLabel_en-US" xlink:label="lab_us-gaap_ProductLiabilityContingencyTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Liability Contingency [Table]</link:label>
    <link:label id="lab_us-gaap_ProductLiabilityContingencyTable_label_en-US" xlink:label="lab_us-gaap_ProductLiabilityContingencyTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Liability Contingency [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductLiabilityContingencyTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductLiabilityContingencyTable" xlink:to="lab_us-gaap_ProductLiabilityContingencyTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InternalUseSoftwarePolicy_f3b6ad81-81cd-448d-bb68-7a6558c3545c_terseLabel_en-US" xlink:label="lab_us-gaap_InternalUseSoftwarePolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Internal Use Software, Policy</link:label>
    <link:label id="lab_us-gaap_InternalUseSoftwarePolicy_label_en-US" xlink:label="lab_us-gaap_InternalUseSoftwarePolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Internal Use Software, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InternalUseSoftwarePolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InternalUseSoftwarePolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InternalUseSoftwarePolicy" xlink:to="lab_us-gaap_InternalUseSoftwarePolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtSecurities_f88133cb-f655-4b74-867f-9f2d0b7e0a01_terseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Total</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtSecurities_f242a3e7-6505-4ee1-b6a8-effddd0661cd_totalLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Total</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtSecurities_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:to="lab_us-gaap_AvailableForSaleSecuritiesDebtSecurities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_ca986faf-b294-42ba-93f1-695885304405_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Contingent consideration, high range</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Combination, Contingent Consideration Arrangements, Range of Outcomes, Value, High</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:to="lab_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy_3c5b7b95-638a-4165-b592-aa5d67945174_terseLabel_en-US" xlink:label="lab_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Costs Associated with Exit or Disposal Activity or Restructuring</link:label>
    <link:label id="lab_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy_label_en-US" xlink:label="lab_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Costs Associated with Exit or Disposal Activity or Restructuring [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy" xlink:to="lab_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrentAbstract_69b6c1b6-9c3c-4810-8fee-0e91f1c49aba_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Constituents of accrued expenses</link:label>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrentAbstract_label_en-US" xlink:label="lab_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Liabilities, Current [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesCurrentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:to="lab_us-gaap_AccruedLiabilitiesCurrentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis_e11cd391-153d-4af3-aad2-a51854812fb4_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment, Type [Axis]</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-Lived Tangible Asset [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentByTypeAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsValuationAllowance_aa78b6b6-1501-47fb-9f9f-600935e062f3_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred tax assets, valuation allowance</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsValuationAllowance_5bfc732d-f8c4-4cc1-9d0c-a00f6b9becdc_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Valuation allowance</link:label>
    <link:label id="lab_us-gaap_DeferredTaxAssetsValuationAllowance_label_en-US" xlink:label="lab_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Valuation Allowance</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:to="lab_us-gaap_DeferredTaxAssetsValuationAllowance" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_GreaterChinaMember_c0cb42c0-f8af-4ec0-a11e-b03b6d644259_terseLabel_en-US" xlink:label="lab_cgnx_GreaterChinaMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Greater China [Member]</link:label>
    <link:label id="lab_cgnx_GreaterChinaMember_8d650b10-9cb4-417f-b5a8-a49b598dc75d_verboseLabel_en-US" xlink:label="lab_cgnx_GreaterChinaMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Greater China [Member]</link:label>
    <link:label id="lab_cgnx_GreaterChinaMember_label_en-US" xlink:label="lab_cgnx_GreaterChinaMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Greater China [Member]</link:label>
    <link:label id="lab_cgnx_GreaterChinaMember_documentation_en-US" xlink:label="lab_cgnx_GreaterChinaMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Greater China [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember" xlink:href="cgnx-20211231.xsd#cgnx_GreaterChinaMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_GreaterChinaMember" xlink:to="lab_cgnx_GreaterChinaMember" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_MajorCustomersAxis_b0983718-e848-487e-ac18-cdd9b1907c10_terseLabel_en-US" xlink:label="lab_srt_MajorCustomersAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer [Axis]</link:label>
    <link:label id="lab_srt_MajorCustomersAxis_label_en-US" xlink:label="lab_srt_MajorCustomersAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MajorCustomersAxis" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MajorCustomersAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_MajorCustomersAxis" xlink:to="lab_srt_MajorCustomersAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfThreeYears_9453b6b6-deaf-4048-bea6-28046d4ecc12_terseLabel_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfThreeYears" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company contributions vest at end of three years</link:label>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfThreeYears_label_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfThreeYears" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company Contributions Vest At End Of Three Years</link:label>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfThreeYears_documentation_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfThreeYears" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company contributions vest at end of three years.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfThreeYears"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears" xlink:to="lab_cgnx_CompanyContributionsVestAtEndOfThreeYears" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringCostAndReserveLineItems_254b0b56-5d65-49d9-999e-43653a3c606d_terseLabel_en-US" xlink:label="lab_us-gaap_RestructuringCostAndReserveLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Cost and Reserve [Line Items]</link:label>
    <link:label id="lab_us-gaap_RestructuringCostAndReserveLineItems_label_en-US" xlink:label="lab_us-gaap_RestructuringCostAndReserveLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring Cost and Reserve [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems" xlink:to="lab_us-gaap_RestructuringCostAndReserveLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock_9ffa1308-2b85-415f-9c19-d36c1f189e86_terseLabel_en-US" xlink:label="lab_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Employee Savings Plan</link:label>
    <link:label id="lab_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Retirement Benefits [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:to="lab_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_31f66ccf-81ff-45c2-8a18-77a5da7b532a_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Business Acquisitions, by Acquisition [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Business Acquisitions, by Acquisition [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable" xlink:to="lab_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_DocumentAnnualReport_df573190-175b-4a36-8003-8550e2fbc415_terseLabel_en-US" xlink:label="lab_dei_DocumentAnnualReport" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Annual Report</link:label>
    <link:label id="lab_dei_DocumentAnnualReport_label_en-US" xlink:label="lab_dei_DocumentAnnualReport" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Document Annual Report</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentAnnualReport" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentAnnualReport"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_DocumentAnnualReport" xlink:to="lab_dei_DocumentAnnualReport" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock_a79dbee6-201f-4961-af48-e2553c007ca4_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-Based Compensation Expense</link:label>
    <link:label id="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:to="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_MoneyMarketFundsAtCarryingValue_7d2a4f39-5292-4499-bdc7-85279a6b1b50_terseLabel_en-US" xlink:label="lab_us-gaap_MoneyMarketFundsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Money market instruments</link:label>
    <link:label id="lab_us-gaap_MoneyMarketFundsAtCarryingValue_label_en-US" xlink:label="lab_us-gaap_MoneyMarketFundsAtCarryingValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Money Market Funds, at Carrying Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsAtCarryingValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_MoneyMarketFundsAtCarryingValue" xlink:to="lab_us-gaap_MoneyMarketFundsAtCarryingValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_9475f5e3-0fab-460e-85ee-fce9b708ab42_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other discrete tax events</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation,Other Reconciling Items, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Assets_53929f9c-bdd7-419a-87ca-03f843e34b8e_totalLabel_en-US" xlink:label="lab_us-gaap_Assets" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total assets</link:label>
    <link:label id="lab_us-gaap_Assets_label_en-US" xlink:label="lab_us-gaap_Assets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Assets" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Assets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_Assets" xlink:to="lab_us-gaap_Assets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_eb207ddf-e255-45a4-b731-ed12a686d288_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss [Roll Forward]</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss [Roll Forward]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan_6943d3ca-ae7e-4983-9cdf-082efca78b74_terseLabel_en-US" xlink:label="lab_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum age to be eligible to defined contribution plan</link:label>
    <link:label id="lab_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan_label_en-US" xlink:label="lab_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum Age To Be Eligible To Defined Contribution Plan</link:label>
    <link:label id="lab_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan_documentation_en-US" xlink:label="lab_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Minimum age to be eligible to defined contribution plan.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan" xlink:href="cgnx-20211231.xsd#cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan" xlink:to="lab_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_618ad7fe-8622-4aa0-b2e4-e7290e34de51_terseLabel_en-US" xlink:label="lab_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase in compensation expense due to revised estimated forfeiture rates</link:label>
    <link:label id="lab_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_label_en-US" xlink:label="lab_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) In Compensation Expense Due To Revised Estimated Forfeiture Rates</link:label>
    <link:label id="lab_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_documentation_en-US" xlink:label="lab_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (decrease) in compensation expense due to revised estimated forfeiture rates.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" xlink:href="cgnx-20211231.xsd#cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" xlink:to="lab_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_SegmentGeographicalDomain_8e77fe39-1756-4e26-8471-ea47f0e64a99_terseLabel_en-US" xlink:label="lab_srt_SegmentGeographicalDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Geographical [Domain]</link:label>
    <link:label id="lab_srt_SegmentGeographicalDomain_label_en-US" xlink:label="lab_srt_SegmentGeographicalDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Geographical [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_SegmentGeographicalDomain" xlink:to="lab_srt_SegmentGeographicalDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ResearchAndDevelopmentExpense_d1a103e9-8176-4d9e-ab88-a514702de5eb_terseLabel_en-US" xlink:label="lab_us-gaap_ResearchAndDevelopmentExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research, development, and engineering expenses</link:label>
    <link:label id="lab_us-gaap_ResearchAndDevelopmentExpense_label_en-US" xlink:label="lab_us-gaap_ResearchAndDevelopmentExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research and Development Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ResearchAndDevelopmentExpense" xlink:to="lab_us-gaap_ResearchAndDevelopmentExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfFourYears_eb86605d-61ab-4fa9-ad25-1f8a13816343_totalLabel_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfFourYears" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company contributions vest at end of four years</link:label>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfFourYears_label_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfFourYears" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company Contributions Vest At End Of Four Years</link:label>
    <link:label id="lab_cgnx_CompanyContributionsVestAtEndOfFourYears_documentation_en-US" xlink:label="lab_cgnx_CompanyContributionsVestAtEndOfFourYears" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Company contributions vest at end of four years.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfFourYears" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfFourYears"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CompanyContributionsVestAtEndOfFourYears" xlink:to="lab_cgnx_CompanyContributionsVestAtEndOfFourYears" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SignificantAccountingPoliciesTextBlock_56b9841c-9d75-4617-80d7-7b5f09ea45b3_terseLabel_en-US" xlink:label="lab_us-gaap_SignificantAccountingPoliciesTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Summary of Significant Accounting Policies</link:label>
    <link:label id="lab_us-gaap_SignificantAccountingPoliciesTextBlock_label_en-US" xlink:label="lab_us-gaap_SignificantAccountingPoliciesTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Significant Accounting Policies [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SignificantAccountingPoliciesTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SignificantAccountingPoliciesTextBlock" xlink:to="lab_us-gaap_SignificantAccountingPoliciesTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_AllCurrenciesDomain_4f337b41-75d7-4bd2-bc26-8181cb158ede_terseLabel_en-US" xlink:label="lab_currency_AllCurrenciesDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">All Currencies [Domain]</link:label>
    <link:label id="lab_currency_AllCurrenciesDomain_label_en-US" xlink:label="lab_currency_AllCurrenciesDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">All Currencies [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_AllCurrenciesDomain" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_AllCurrenciesDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_AllCurrenciesDomain" xlink:to="lab_currency_AllCurrenciesDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities_b8d30d29-344f-4dcc-9a5d-120cfaaa73f4_totalLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net cash provided by operating activities</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities_e581c0dd-5f51-40f1-a375-07f459e34d02_terseLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net cash provided by operating activities</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Operating Activities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:to="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_Customer1Member_99d246d4-32de-4eeb-9fd2-7600aad57d48_terseLabel_en-US" xlink:label="lab_cgnx_Customer1Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer 1 [Member]</link:label>
    <link:label id="lab_cgnx_Customer1Member_label_en-US" xlink:label="lab_cgnx_Customer1Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer 1 [Member]</link:label>
    <link:label id="lab_cgnx_Customer1Member_documentation_en-US" xlink:label="lab_cgnx_Customer1Member" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Customer 1</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer1Member" xlink:href="cgnx-20211231.xsd#cgnx_Customer1Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_Customer1Member" xlink:to="lab_cgnx_Customer1Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_84f39c65-1b66-44fe-bf5d-cd4922c85373_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Measurements, Recurring and Nonrecurring [Table]</link:label>
    <link:label id="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_label_en-US" xlink:label="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Recurring and Nonrecurring [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:to="lab_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FurnitureAndFixturesMember_7d4eb111-d54f-4a7e-8bca-106ac9685cc4_terseLabel_en-US" xlink:label="lab_us-gaap_FurnitureAndFixturesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Furniture and Fixtures [Member]</link:label>
    <link:label id="lab_us-gaap_FurnitureAndFixturesMember_label_en-US" xlink:label="lab_us-gaap_FurnitureAndFixturesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Furniture and Fixtures [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FurnitureAndFixturesMember" xlink:to="lab_us-gaap_FurnitureAndFixturesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SubsequentEventLineItems_7a309d6b-2669-47ee-b347-7a6f16e5308f_terseLabel_en-US" xlink:label="lab_us-gaap_SubsequentEventLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event [Line Items]</link:label>
    <link:label id="lab_us-gaap_SubsequentEventLineItems_label_en-US" xlink:label="lab_us-gaap_SubsequentEventLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Subsequent Event [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SubsequentEventLineItems" xlink:to="lab_us-gaap_SubsequentEventLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareBasicAbstract_bea8c73f-59c4-4e6c-9281-0f721e1a6575_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasicAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Income per weighted-average common and common-equivalent share:</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareBasicAbstract_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareBasicAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Basic [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasicAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasicAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract" xlink:to="lab_us-gaap_EarningsPerShareBasicAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardAxis_e0e542a2-3c40-40f5-9684-fa4ac21d635b_terseLabel_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward [Axis]</link:label>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardAxis_label_en-US" xlink:label="lab_us-gaap_TaxCreditCarryforwardAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Tax Credit Carryforward [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TaxCreditCarryforwardAxis" xlink:to="lab_us-gaap_TaxCreditCarryforwardAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_3d7b4751-4fee-4908-b495-f2889e619095_terseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basic (in shares)</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_271bce7f-d453-4f92-8fad-6b20065e462b_verboseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Basic weighted-average common shares outstanding</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_label_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted Average Number of Shares Outstanding, Basic</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:to="lab_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EarningsPerShareDiluted_f7d5ba84-bfa9-43f1-9c55-a034b4223bba_terseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareDiluted" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net income (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareDiluted_8a0d1bbc-c2a1-44f2-a56c-3e5751c969ca_verboseLabel_en-US" xlink:label="lab_us-gaap_EarningsPerShareDiluted" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Diluted net income (loss) per share (in dollars per share)</link:label>
    <link:label id="lab_us-gaap_EarningsPerShareDiluted_label_en-US" xlink:label="lab_us-gaap_EarningsPerShareDiluted" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Earnings Per Share, Diluted</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EarningsPerShareDiluted" xlink:to="lab_us-gaap_EarningsPerShareDiluted" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_8f648083-ba40-4e98-8996-ba859af488ca_terseLabel_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effect of dilutive stock options</link:label>
    <link:label id="lab_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_label_en-US" xlink:label="lab_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Weighted Average Number Diluted Shares Outstanding Adjustment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:to="lab_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxesPaidNet_5537d7aa-0c35-4ef8-aea4-018df83d3a43_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxesPaidNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income tax paid net</link:label>
    <link:label id="lab_us-gaap_IncomeTaxesPaidNet_label_en-US" xlink:label="lab_us-gaap_IncomeTaxesPaidNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Income Taxes Paid, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxesPaidNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxesPaidNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxesPaidNet" xlink:to="lab_us-gaap_IncomeTaxesPaidNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IntangibleAssetsFiniteLivedPolicy_cde171e3-b239-45f4-b0a4-97d0394ee007_terseLabel_en-US" xlink:label="lab_us-gaap_IntangibleAssetsFiniteLivedPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets</link:label>
    <link:label id="lab_us-gaap_IntangibleAssetsFiniteLivedPolicy_label_en-US" xlink:label="lab_us-gaap_IntangibleAssetsFiniteLivedPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets, Finite-Lived, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsFiniteLivedPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsFiniteLivedPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IntangibleAssetsFiniteLivedPolicy" xlink:to="lab_us-gaap_IntangibleAssetsFiniteLivedPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock_d2a70e30-f360-41d5-b9da-db9da84f04ad_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_8a3416ec-b072-4da7-a95f-b024a90421f2_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Restructuring and Related Costs [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Restructuring and Related Costs [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:to="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill_c292f292-b0ec-44ea-82a6-0fd47fb4d03d_terseLabel_en-US" xlink:label="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets, Net (Excluding Goodwill)</link:label>
    <link:label id="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill_label_en-US" xlink:label="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets, Net (Excluding Goodwill)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsNetExcludingGoodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:to="lab_us-gaap_IntangibleAssetsNetExcludingGoodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ComprehensiveIncomeNetOfTax_8a546bf3-11cd-43a6-b619-77786ebfd089_totalLabel_en-US" xlink:label="lab_us-gaap_ComprehensiveIncomeNetOfTax" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total comprehensive income</link:label>
    <link:label id="lab_us-gaap_ComprehensiveIncomeNetOfTax_label_en-US" xlink:label="lab_us-gaap_ComprehensiveIncomeNetOfTax" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Comprehensive Income (Loss), Net of Tax, Attributable to Parent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNetOfTax" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ComprehensiveIncomeNetOfTax" xlink:to="lab_us-gaap_ComprehensiveIncomeNetOfTax" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_88b0f4d7-5bcd-48ad-89d3-3ca55cea2c04_terseLabel_en-US" xlink:label="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Total fair values of stock options vested</link:label>
    <link:label id="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_label_en-US" xlink:label="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share Based Compensation Arrangement By Share Based Payment Award Options Vested Fair Value</link:label>
    <link:label id="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_documentation_en-US" xlink:label="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share based compensation arrangement by share based payment award options vested fair value.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" xlink:href="cgnx-20211231.xsd#cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" xlink:to="lab_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductLiabilityContingencyLineItems_28d2ec02-d372-4cad-a8c5-a0bd79f32cff_terseLabel_en-US" xlink:label="lab_us-gaap_ProductLiabilityContingencyLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Liability Contingency [Line Items]</link:label>
    <link:label id="lab_us-gaap_ProductLiabilityContingencyLineItems_label_en-US" xlink:label="lab_us-gaap_ProductLiabilityContingencyLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Liability Contingency [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductLiabilityContingencyLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductLiabilityContingencyLineItems" xlink:to="lab_us-gaap_ProductLiabilityContingencyLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxLiabilitiesNet_5c4d9a0a-65b7-46d6-b0d2-94dde51864bc_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred income taxes</link:label>
    <link:label id="lab_us-gaap_DeferredIncomeTaxLiabilitiesNet_label_en-US" xlink:label="lab_us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Income Tax Liabilities, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:to="lab_us-gaap_DeferredIncomeTaxLiabilitiesNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessAcquisitionAcquireeDomain_b1af0349-9d9b-4ee1-bd24-0ae3aec25a7e_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessAcquisitionAcquireeDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Acquisition, Acquiree [Domain]</link:label>
    <link:label id="lab_us-gaap_BusinessAcquisitionAcquireeDomain_label_en-US" xlink:label="lab_us-gaap_BusinessAcquisitionAcquireeDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Business Acquisition, Acquiree [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain" xlink:to="lab_us-gaap_BusinessAcquisitionAcquireeDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_ce227f4d-6785-41d2-a009-d0402c41726f_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Reconciliation of the United States Federal Statutory Corporate Tax Rate to the Company's Effective Tax Rate or Income Tax Provision</link:label>
    <link:label id="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsPayableCurrent_4a906d28-7543-4391-b9e1-1e8cc4fc5fea_terseLabel_en-US" xlink:label="lab_us-gaap_AccountsPayableCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts payable</link:label>
    <link:label id="lab_us-gaap_AccountsPayableCurrent_label_en-US" xlink:label="lab_us-gaap_AccountsPayableCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Payable, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsPayableCurrent" xlink:to="lab_us-gaap_AccountsPayableCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxAssetsForeignTaxStructureChange_949f442f-b42a-471a-9082-57bfbe2ff25e_terseLabel_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsForeignTaxStructureChange" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign tax structure deferred tax asset</link:label>
    <link:label id="lab_cgnx_DeferredTaxAssetsForeignTaxStructureChange_label_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsForeignTaxStructureChange" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Foreign Tax Structure Change</link:label>
    <link:label id="lab_cgnx_DeferredTaxAssetsForeignTaxStructureChange_documentation_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsForeignTaxStructureChange" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, Foreign Tax Structure Change</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsForeignTaxStructureChange"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange" xlink:to="lab_cgnx_DeferredTaxAssetsForeignTaxStructureChange" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_e8c88f67-e2c8-4eb4-8fb4-12a96396ee73_terseLabel_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete tax benefit related to change in tax structure</link:label>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_label_en-US" xlink:label="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Change in Enacted Tax Rate, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" xlink:to="lab_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CorporateBondsFairValueDisclosure_1d089139-a947-425d-b357-698e15092e4a_terseLabel_en-US" xlink:label="lab_cgnx_CorporateBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Corporate bonds</link:label>
    <link:label id="lab_cgnx_CorporateBondsFairValueDisclosure_label_en-US" xlink:label="lab_cgnx_CorporateBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Corporate Bonds Fair Value Disclosure</link:label>
    <link:label id="lab_cgnx_CorporateBondsFairValueDisclosure_documentation_en-US" xlink:label="lab_cgnx_CorporateBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Corporate bonds fair value disclosure.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CorporateBondsFairValueDisclosure" xlink:href="cgnx-20211231.xsd#cgnx_CorporateBondsFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CorporateBondsFairValueDisclosure" xlink:to="lab_cgnx_CorporateBondsFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock_0b9ca8c0-d86d-4d7f-a39a-d32b28d4b58d_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets and Liabilities Measured at Fair Value on a Recurring Basis</link:label>
    <link:label id="lab_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Fair Value, Assets and Liabilities Measured on Recurring Basis [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_CNY_31fcd683-7c79-474b-8eaa-119b5b3aaf6d_terseLabel_en-US" xlink:label="lab_currency_CNY" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">China, Yuan Renminbi</link:label>
    <link:label id="lab_currency_CNY_label_en-US" xlink:label="lab_currency_CNY" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">China, Yuan Renminbi</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_CNY" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_CNY"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_CNY" xlink:to="lab_currency_CNY" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember_3e3054f8-e60a-4fd6-a100-24f4dc367644_terseLabel_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accumulated Other Comprehensive Loss [Member]</link:label>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember_label_en-US" xlink:label="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">AOCI Attributable to Parent [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:to="lab_us-gaap_AccumulatedOtherComprehensiveIncomeMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInInventories_ee863e1a-73b9-4012-86ab-0fb163c8383e_negatedLabel_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInInventories" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventories</link:label>
    <link:label id="lab_us-gaap_IncreaseDecreaseInInventories_label_en-US" xlink:label="lab_us-gaap_IncreaseDecreaseInInventories" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Increase (Decrease) in Inventories</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInInventories" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInInventories"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncreaseDecreaseInInventories" xlink:to="lab_us-gaap_IncreaseDecreaseInInventories" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_IndemnificationProvisionsTextBlock_faff0828-f19b-4aa1-88ab-d4e1e9709521_terseLabel_en-US" xlink:label="lab_cgnx_IndemnificationProvisionsTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Indemnification Provisions</link:label>
    <link:label id="lab_cgnx_IndemnificationProvisionsTextBlock_label_en-US" xlink:label="lab_cgnx_IndemnificationProvisionsTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Indemnification Provisions [Text Block]</link:label>
    <link:label id="lab_cgnx_IndemnificationProvisionsTextBlock_documentation_en-US" xlink:label="lab_cgnx_IndemnificationProvisionsTextBlock" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Indemnification provisions are a potential liability whereby the Company indemnifies certain directors, officers, and employees (current or former) against expenses incurred by them in relation to specific legal proceedings. The company also indemnifies other parties for specific situations.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_IndemnificationProvisionsTextBlock" xlink:href="cgnx-20211231.xsd#cgnx_IndemnificationProvisionsTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_IndemnificationProvisionsTextBlock" xlink:to="lab_cgnx_IndemnificationProvisionsTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_CurrencytranslationadjustmentAbstract_ef65c55d-fc57-4b82-9934-af454bb5baba_terseLabel_en-US" xlink:label="lab_cgnx_CurrencytranslationadjustmentAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign currency translation adjustments:</link:label>
    <link:label id="lab_cgnx_CurrencytranslationadjustmentAbstract_label_en-US" xlink:label="lab_cgnx_CurrencytranslationadjustmentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Currency translation adjustment [Abstract]</link:label>
    <link:label id="lab_cgnx_CurrencytranslationadjustmentAbstract_documentation_en-US" xlink:label="lab_cgnx_CurrencytranslationadjustmentAbstract" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Currency translation adjustment [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CurrencytranslationadjustmentAbstract" xlink:href="cgnx-20211231.xsd#cgnx_CurrencytranslationadjustmentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CurrencytranslationadjustmentAbstract" xlink:to="lab_cgnx_CurrencytranslationadjustmentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock_a8602183-5e4f-4173-815e-00e1512a0283_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring and Related Costs</link:label>
    <link:label id="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring and Related Costs [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock" xlink:to="lab_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockSharesOutstanding_feb4825c-7852-48f2-b5f8-8e62da3893c0_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, shares outstanding</link:label>
    <link:label id="lab_us-gaap_CommonStockSharesOutstanding_label_en-US" xlink:label="lab_us-gaap_CommonStockSharesOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Shares, Outstanding</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockSharesOutstanding" xlink:to="lab_us-gaap_CommonStockSharesOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_RepurchaseProgramOctober2018Member_88c676ee-9b88-4007-9e91-f81d2c6cd616_terseLabel_en-US" xlink:label="lab_cgnx_RepurchaseProgramOctober2018Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase Program October 2018 [Member]</link:label>
    <link:label id="lab_cgnx_RepurchaseProgramOctober2018Member_label_en-US" xlink:label="lab_cgnx_RepurchaseProgramOctober2018Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase Program October 2018 [Member]</link:label>
    <link:label id="lab_cgnx_RepurchaseProgramOctober2018Member_documentation_en-US" xlink:label="lab_cgnx_RepurchaseProgramOctober2018Member" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchase Program October 2018 [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramOctober2018Member" xlink:href="cgnx-20211231.xsd#cgnx_RepurchaseProgramOctober2018Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_RepurchaseProgramOctober2018Member" xlink:to="lab_cgnx_RepurchaseProgramOctober2018Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LongTermInvestments_c68cdbcf-ed50-474a-b05b-e081d873003f_terseLabel_en-US" xlink:label="lab_us-gaap_LongTermInvestments" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Non-current investments, amortized cost of $587,981 and $390,417 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</link:label>
    <link:label id="lab_us-gaap_LongTermInvestments_ca122336-1a32-449f-8fa4-6e583da4da07_totalLabel_en-US" xlink:label="lab_us-gaap_LongTermInvestments" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Non-current investments</link:label>
    <link:label id="lab_us-gaap_LongTermInvestments_label_en-US" xlink:label="lab_us-gaap_LongTermInvestments" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-term Investments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LongTermInvestments" xlink:to="lab_us-gaap_LongTermInvestments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_0b99dc3d-2023-4ac6-9596-9fc39bc842a1_terseLabel_en-US" xlink:label="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financial Instruments [Domain]</link:label>
    <link:label id="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_label_en-US" xlink:label="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Financial Instruments [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:to="lab_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrual_1affd1fa-dc60-423e-a9fb-9bce6df58a45_periodStartLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrual" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning Balance</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrual_2a55bbdc-1c6e-4685-99c0-e61870707d9d_periodEndLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrual" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Ending Balance</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrual_label_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrual" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Standard and Extended Product Warranty Accrual</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrual" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrual"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductWarrantyAccrual" xlink:to="lab_us-gaap_ProductWarrantyAccrual" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent_9d947373-1e89-4ac8-8589-10119a456be1_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Amortized Cost</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Amortized Cost, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CostOfGoodsAndServicesSold_523e1922-1213-414c-a9df-7ca87b44d5e1_terseLabel_en-US" xlink:label="lab_us-gaap_CostOfGoodsAndServicesSold" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost of revenue</link:label>
    <link:label id="lab_us-gaap_CostOfGoodsAndServicesSold_label_en-US" xlink:label="lab_us-gaap_CostOfGoodsAndServicesSold" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cost of Goods and Services Sold</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfGoodsAndServicesSold" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CostOfGoodsAndServicesSold" xlink:to="lab_us-gaap_CostOfGoodsAndServicesSold" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestructuringAndRelatedActivitiesAbstract_label_en-US" xlink:label="lab_us-gaap_RestructuringAndRelatedActivitiesAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Restructuring and Related Activities [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract" xlink:to="lab_us-gaap_RestructuringAndRelatedActivitiesAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent_9e11c8a1-8d48-483b-b5e0-50d80020a314_terseLabel_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Warranty obligations</link:label>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent_label_en-US" xlink:label="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Warranty Accrual, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrualClassifiedCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:to="lab_us-gaap_ProductWarrantyAccrualClassifiedCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_b09a037b-fb05-4aba-b2ec-a369f9f4209c_terseLabel_en-US" xlink:label="lab_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in accounting policy</link:label>
    <link:label id="lab_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_label_en-US" xlink:label="lab_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in Global Intangible Low-Taxed Income [Member]</link:label>
    <link:label id="lab_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_documentation_en-US" xlink:label="lab_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Change in Global Intangible Low-Taxed Income [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember" xlink:href="cgnx-20211231.xsd#cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember" xlink:to="lab_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityCentralIndexKey_aca743ad-2686-41c4-b949-b482a9b40c6e_terseLabel_en-US" xlink:label="lab_dei_EntityCentralIndexKey" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:label id="lab_dei_EntityCentralIndexKey_label_en-US" xlink:label="lab_dei_EntityCentralIndexKey" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Entity Central Index Key</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCentralIndexKey" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityCentralIndexKey"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_EntityCentralIndexKey" xlink:to="lab_dei_EntityCentralIndexKey" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_215897b0-bf78-4bf2-981e-b70e308ef446_terseLabel_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]</link:label>
    <link:label id="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_label_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems" xlink:to="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions_3c8ecf32-ee16-4132-b4d0-83fb57ac09cb_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Decrease Resulting from Prior Period Tax Positions</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Decrease Resulting from Prior Period Tax Positions</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock_7fda0130-cd50-4b55-acfd-a2f7ba66da88_terseLabel_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant, and Equipment</link:label>
    <link:label id="lab_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Property, Plant and Equipment Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:to="lab_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_550f66df-3947-4381-a58e-75d4adbf3dfc_totalLabel_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross deferred tax assets</link:label>
    <link:label id="lab_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_label_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, With Jurisdictional Netting, Gross</link:label>
    <link:label id="lab_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_documentation_en-US" xlink:label="lab_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Deferred Tax Assets, With Jurisdictional Netting, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross" xlink:to="lab_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherLiabilitiesNoncurrent_888fe8ca-ace9-4846-b40e-558d5f3a9bf8_terseLabel_en-US" xlink:label="lab_us-gaap_OtherLiabilitiesNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other liabilities</link:label>
    <link:label id="lab_us-gaap_OtherLiabilitiesNoncurrent_label_en-US" xlink:label="lab_us-gaap_OtherLiabilitiesNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Other Liabilities, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherLiabilitiesNoncurrent" xlink:to="lab_us-gaap_OtherLiabilitiesNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_ca47331d-2c78-400d-a93b-c2fa105e8d65_terseLabel_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">4-5 Years</link:label>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_label_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available For Sale Securities Debt Maturities After Four Years Before Five Years Fair Value</link:label>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_documentation_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available-for-sale securities, debt maturities after fourth year but before fifth year, fair value.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" xlink:to="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_e46a2ad5-87d7-4f9a-85f9-fcb404fae2ec_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Employee Service Share-based Compensation, Allocation of Recognized Period Costs [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Expensed and Capitalized, Amount [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable" xlink:to="lab_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_TradingSymbol_0ec4d5a3-f6c7-47d0-9e8d-6d7fc8bc9468_terseLabel_en-US" xlink:label="lab_dei_TradingSymbol" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Trading Symbol</link:label>
    <link:label id="lab_dei_TradingSymbol_label_en-US" xlink:label="lab_dei_TradingSymbol" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Trading Symbol</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_TradingSymbol" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_TradingSymbol"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_TradingSymbol" xlink:to="lab_dei_TradingSymbol" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeAssets_66478381-a499-48f2-9312-686517f7cd87_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeAssets" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net amount of assets presented</link:label>
    <link:label id="lab_us-gaap_DerivativeAssets_a1827f45-e2d1-457b-bcf9-b9eac97927f8_totalLabel_en-US" xlink:label="lab_us-gaap_DerivativeAssets" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net amount of assets presented</link:label>
    <link:label id="lab_us-gaap_DerivativeAssets_label_en-US" xlink:label="lab_us-gaap_DerivativeAssets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Asset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeAssets" xlink:to="lab_us-gaap_DerivativeAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock_8c5cb6ba-6486-4550-8ef4-d40c0cba3138_terseLabel_en-US" xlink:label="lab_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Expenses</link:label>
    <link:label id="lab_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Payable and Accrued Liabilities Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock" xlink:to="lab_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_fe6449b4-ccca-47d8-976c-a321b6f4e6c2_negatedTotalLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" xlink:role="http://www.xbrl.org/2009/role/negatedTotalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrealized Losses</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Unrealized Loss Position, Accumulated Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EquipmentMember_f1629120-b516-46fd-87c0-72be477d2049_verboseLabel_en-US" xlink:label="lab_us-gaap_EquipmentMember" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Manufacturing Test Equipment [Member]</link:label>
    <link:label id="lab_us-gaap_EquipmentMember_label_en-US" xlink:label="lab_us-gaap_EquipmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Equipment [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquipmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_EquipmentMember" xlink:to="lab_us-gaap_EquipmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_a4bd23aa-afbe-4211-b87c-95590857fffa_terseLabel_en-US" xlink:label="lab_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Expense - Foreign Tax Filing Adjustments [Member]</link:label>
    <link:label id="lab_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_label_en-US" xlink:label="lab_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Expense - Foreign Tax Filing Adjustments [Member]</link:label>
    <link:label id="lab_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_documentation_en-US" xlink:label="lab_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete Tax Expense - Foreign Tax Filing Adjustments</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" xlink:to="lab_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_3ddab2d4-dad1-432c-b657-8f213d63fd8f_terseLabel_en-US" xlink:label="lab_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Tax Benefit - Gains Taxed Outside U.S. [Member]</link:label>
    <link:label id="lab_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_label_en-US" xlink:label="lab_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Tax Benefit - Gains Taxed Outside U.S. [Member]</link:label>
    <link:label id="lab_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_documentation_en-US" xlink:label="lab_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign Tax Benefit - Gains Taxed Outside U.S.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember" xlink:href="cgnx-20211231.xsd#cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember" xlink:to="lab_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfGoodwillTable_59e29f08-d0be-476b-ade9-ff4a1260c86b_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfGoodwillTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Goodwill [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfGoodwillTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfGoodwillTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Goodwill [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfGoodwillTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfGoodwillTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfGoodwillTable" xlink:to="lab_us-gaap_ScheduleOfGoodwillTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesFairValueDisclosureAbstract_a08463bb-3712-4f44-8b3e-a4c12bd3fe5a_terseLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesFairValueDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities:</link:label>
    <link:label id="lab_us-gaap_LiabilitiesFairValueDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_LiabilitiesFairValueDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities, Fair Value Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract" xlink:to="lab_us-gaap_LiabilitiesFairValueDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllocatedShareBasedCompensationExpense_43f0e6d6-6f92-4dc8-804a-73b3ba262172_verboseLabel_en-US" xlink:label="lab_us-gaap_AllocatedShareBasedCompensationExpense" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stock-based compensation expense</link:label>
    <link:label id="lab_us-gaap_AllocatedShareBasedCompensationExpense_label_en-US" xlink:label="lab_us-gaap_AllocatedShareBasedCompensationExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Payment Arrangement, Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AllocatedShareBasedCompensationExpense" xlink:to="lab_us-gaap_AllocatedShareBasedCompensationExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_682e28c9-7de6-45ec-8c9d-3400a2e404f2_terseLabel_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Exercisable, weighted-average remaining contractual term (in years)</link:label>
    <link:label id="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_label_en-US" xlink:label="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Weighted Average Remaining Contractual Term</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:to="lab_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IntangibleAssetsNetIncludingGoodwill_1b1b64fb-f402-494b-b113-dd54371c456c_terseLabel_en-US" xlink:label="lab_us-gaap_IntangibleAssetsNetIncludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets, Net (Including Goodwill)</link:label>
    <link:label id="lab_us-gaap_IntangibleAssetsNetIncludingGoodwill_label_en-US" xlink:label="lab_us-gaap_IntangibleAssetsNetIncludingGoodwill" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Intangible Assets, Net (Including Goodwill)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsNetIncludingGoodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill" xlink:to="lab_us-gaap_IntangibleAssetsNetIncludingGoodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ResearchMember_c080ef0a-7411-4d6b-8209-a49dd37a0c6e_terseLabel_en-US" xlink:label="lab_us-gaap_ResearchMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research Tax Credit Carryforward [Member]</link:label>
    <link:label id="lab_us-gaap_ResearchMember_label_en-US" xlink:label="lab_us-gaap_ResearchMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Research Tax Credit Carryforward [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ResearchMember" xlink:to="lab_us-gaap_ResearchMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LiabilitiesFairValueAdjustment_8f7069a1-a30d-4bc3-a5eb-11d6a939a9df_terseLabel_en-US" xlink:label="lab_us-gaap_LiabilitiesFairValueAdjustment" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair value adjustment</link:label>
    <link:label id="lab_us-gaap_LiabilitiesFairValueAdjustment_label_en-US" xlink:label="lab_us-gaap_LiabilitiesFairValueAdjustment" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Liabilities, Fair Value Adjustment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueAdjustment" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueAdjustment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LiabilitiesFairValueAdjustment" xlink:to="lab_us-gaap_LiabilitiesFairValueAdjustment" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent_daddf40d-bf95-4f5c-b95a-d446b9dad8e8_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss, Noncurrent</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock_0625fc5f-b7da-47f7-a72d-0b14dfc8e445_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Derivative Instruments, Effect on Other Comprehensive Income (Loss)</link:label>
    <link:label id="lab_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Derivative Instruments, Effect on Other Comprehensive Income (Loss) [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_18d5edb8-f5ac-45d7-acf5-05c5c7419c65_verboseLabel_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" xlink:role="http://www.xbrl.org/2003/role/verboseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete tax expense for migration of acquired intellectual property</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_a58cd394-3e60-4d0a-9239-e93ea04d0616_terseLabel_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Discrete tax expense related to migration of acquired IP</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_label_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_documentation_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" xlink:to="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InvestmentTypeCategorizationMember_ee08d153-5c21-42fb-aac4-faf27c20eee6_terseLabel_en-US" xlink:label="lab_us-gaap_InvestmentTypeCategorizationMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investment Type Categorization [Domain]</link:label>
    <link:label id="lab_us-gaap_InvestmentTypeCategorizationMember_label_en-US" xlink:label="lab_us-gaap_InvestmentTypeCategorizationMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Investments [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeCategorizationMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTypeCategorizationMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InvestmentTypeCategorizationMember" xlink:to="lab_us-gaap_InvestmentTypeCategorizationMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PayablesAndAccrualsAbstract_f9b8237b-7195-4b8e-b117-1620d2a3e1c0_terseLabel_en-US" xlink:label="lab_us-gaap_PayablesAndAccrualsAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payables and Accruals [Abstract]</link:label>
    <link:label id="lab_us-gaap_PayablesAndAccrualsAbstract_label_en-US" xlink:label="lab_us-gaap_PayablesAndAccrualsAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payables and Accruals [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PayablesAndAccrualsAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PayablesAndAccrualsAbstract" xlink:to="lab_us-gaap_PayablesAndAccrualsAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_f0f6ad6d-5cf5-4bf3-aa2c-b50b90bbf6df_periodStartLabel_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and cash equivalents at beginning of year</link:label>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_8794dcea-d194-4271-9802-0e1f5714216c_periodEndLabel_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash and cash equivalents at end of year</link:label>
    <link:label id="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_label_en-US" xlink:label="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:to="lab_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockParOrStatedValuePerShare_001f095a-8aca-4521-a34e-8d02ebc95683_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock par value, in dollars per share</link:label>
    <link:label id="lab_us-gaap_CommonStockParOrStatedValuePerShare_label_en-US" xlink:label="lab_us-gaap_CommonStockParOrStatedValuePerShare" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Par or Stated Value Per Share</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockParOrStatedValuePerShare" xlink:to="lab_us-gaap_CommonStockParOrStatedValuePerShare" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_2ec1fc16-7259-45c4-901f-983399063b27_periodStartLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Beginning balance</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_ab5177c1-2768-443e-980b-a217e1330b36_periodEndLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Ending balance</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-sale, Allowance for Credit Loss</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_6c3400d5-ac60-42bc-87c6-3047569f90ba_terseLabel_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2-3 Years</link:label>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_label_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available For Sale Securities Debt Maturities After Two Years Before Three Years Fair Value</link:label>
    <link:label id="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_documentation_en-US" xlink:label="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Available-for-sale securities, debt maturities after second year but before third year, fair value.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" xlink:to="lab_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetsCurrentAbstract_3ac22173-cc37-4f2b-ae24-3fb15f5248db_terseLabel_en-US" xlink:label="lab_us-gaap_AssetsCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current assets:</link:label>
    <link:label id="lab_us-gaap_AssetsCurrentAbstract_label_en-US" xlink:label="lab_us-gaap_AssetsCurrentAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Assets, Current [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrentAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrentAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetsCurrentAbstract" xlink:to="lab_us-gaap_AssetsCurrentAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_c9bf5900-9d1f-449d-8449-9092e7d3437b_terseLabel_en-US" xlink:label="lab_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Comprehensive Income [Abstract]</link:label>
    <link:label id="lab_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_label_en-US" xlink:label="lab_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Statement of Comprehensive Income [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:to="lab_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsGross_5f7a257b-0c6f-4c3c-a903-6aa105a18d4e_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsGross" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross Carrying Value</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsGross_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Assets, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsGross" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsGross" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsGross" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_GViVenturesInc.Member_30fe60b8-e81a-4e85-b311-d0fccfdfda24_terseLabel_en-US" xlink:label="lab_cgnx_GViVenturesInc.Member" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">GVi Ventures, Inc.</link:label>
    <link:label id="lab_cgnx_GViVenturesInc.Member_label_en-US" xlink:label="lab_cgnx_GViVenturesInc.Member" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">GVi Ventures, Inc. [Member]</link:label>
    <link:label id="lab_cgnx_GViVenturesInc.Member_documentation_en-US" xlink:label="lab_cgnx_GViVenturesInc.Member" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">GVi Ventures, Inc. [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member" xlink:href="cgnx-20211231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_GViVenturesInc.Member" xlink:to="lab_cgnx_GViVenturesInc.Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock_a52de723-aa79-477f-bb2f-347be288a2b3_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Amortized Intangible Assets</link:label>
    <link:label id="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_5127c3c9-1931-458a-8821-826df828ac9e_terseLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Issuance of common stock under stock option plans, shares</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_6d1e93f7-df68-47c3-a3ad-bc72735f9358_negatedLabel_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Exercised</link:label>
    <link:label id="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_label_en-US" xlink:label="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercises in Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:to="lab_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueMeasurementsRecurringMember_44caeee8-c914-48a1-b601-8aa0baf01f8f_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueMeasurementsRecurringMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Measurements, Recurring</link:label>
    <link:label id="lab_us-gaap_FairValueMeasurementsRecurringMember_label_en-US" xlink:label="lab_us-gaap_FairValueMeasurementsRecurringMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value, Recurring [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueMeasurementsRecurringMember" xlink:to="lab_us-gaap_FairValueMeasurementsRecurringMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_StockholdersEquityNoteDisclosureTextBlock_fec5ed9f-7d3e-4bb8-8564-5966a7a76f8a_terseLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Shareholders&#8217; Equity</link:label>
    <link:label id="lab_us-gaap_StockholdersEquityNoteDisclosureTextBlock_label_en-US" xlink:label="lab_us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Stockholders' Equity Note Disclosure [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquityNoteDisclosureTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:to="lab_us-gaap_StockholdersEquityNoteDisclosureTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs_d45f97f1-8dcf-49b8-9c54-5bc091539fb1_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs" xlink:role="http://www.xbrl.org/2009/role/negatedTerseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Write-offs, net of recoveries</link:label>
    <link:label id="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs_label_en-US" xlink:label="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accounts Receivable, Allowance for Credit Loss, Writeoff</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs" xlink:to="lab_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations_98155313-90a3-49a3-b752-9ba17404e78d_negatedLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:role="http://www.xbrl.org/2009/role/negatedLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations</link:label>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Unrecognized Tax Benefits, Reduction Resulting from Lapse of Applicable Statute of Limitations</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_d9c1b416-5075-4e04-a198-9b34b1fdbd96_terseLabel_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">2026</link:label>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_label_en-US" xlink:label="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Finite-Lived Intangible Asset, Expected Amortization, Year Five</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:to="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy_1870e993-5c47-4f1c-9c0d-5590e13f2547_terseLabel_en-US" xlink:label="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value Measurements</link:label>
    <link:label id="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy_label_en-US" xlink:label="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Fair Value of Financial Instruments, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueOfFinancialInstrumentsPolicy"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:to="lab_us-gaap_FairValueOfFinancialInstrumentsPolicy" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_AuditorFirmId_240572a5-a251-4ed9-b13c-f2883bbfd238_terseLabel_en-US" xlink:label="lab_dei_AuditorFirmId" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Firm ID</link:label>
    <link:label id="lab_dei_AuditorFirmId_label_en-US" xlink:label="lab_dei_AuditorFirmId" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Auditor Firm ID</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorFirmId" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AuditorFirmId"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_dei_AuditorFirmId" xlink:to="lab_dei_AuditorFirmId" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities_c6951816-9cc9-4094-9795-dcfa864ae662_totalLabel_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:role="http://www.xbrl.org/2003/role/totalLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net cash provided by (used in) investing activities</link:label>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities_label_en-US" xlink:label="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Net Cash Provided by (Used in) Investing Activities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:to="lab_us-gaap_NetCashProvidedByUsedInInvestingActivities" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_AgencyBondsFairValueDisclosure_b26dfee9-ca80-4879-b426-49c10a266496_terseLabel_en-US" xlink:label="lab_cgnx_AgencyBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Agency bonds</link:label>
    <link:label id="lab_cgnx_AgencyBondsFairValueDisclosure_label_en-US" xlink:label="lab_cgnx_AgencyBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Agency Bonds Fair Value Disclosure</link:label>
    <link:label id="lab_cgnx_AgencyBondsFairValueDisclosure_documentation_en-US" xlink:label="lab_cgnx_AgencyBondsFairValueDisclosure" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Agency bonds fair value disclosure.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsFairValueDisclosure" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsFairValueDisclosure"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AgencyBondsFairValueDisclosure" xlink:to="lab_cgnx_AgencyBondsFairValueDisclosure" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeAssetNotionalAmount_b51fea06-4d46-49b6-a9ff-626d142f18e3_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeAssetNotionalAmount" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Asset, Notional Amount</link:label>
    <link:label id="lab_us-gaap_DerivativeAssetNotionalAmount_label_en-US" xlink:label="lab_us-gaap_DerivativeAssetNotionalAmount" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Asset, Notional Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetNotionalAmount" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssetNotionalAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeAssetNotionalAmount" xlink:to="lab_us-gaap_DerivativeAssetNotionalAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_f2b61f96-3c57-4a27-8c04-cf7ed7f0ce28_terseLabel_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Vested, weighted-average exercise price</link:label>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_label_en-US" xlink:label="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Vested in Period, Weighted Average Grant Date Fair Value</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:to="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ClassOfStockDomain_4f74b0b8-073a-4004-80e8-8654ef01452b_terseLabel_en-US" xlink:label="lab_us-gaap_ClassOfStockDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Class of Stock [Domain]</link:label>
    <link:label id="lab_us-gaap_ClassOfStockDomain_label_en-US" xlink:label="lab_us-gaap_ClassOfStockDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Class of Stock [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockDomain" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ClassOfStockDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ClassOfStockDomain" xlink:to="lab_us-gaap_ClassOfStockDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PaymentsToAcquireBusinessesGross_e1f195b1-69f3-458d-b331-d9ff075077eb_terseLabel_en-US" xlink:label="lab_us-gaap_PaymentsToAcquireBusinessesGross" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cash paid in purchase price</link:label>
    <link:label id="lab_us-gaap_PaymentsToAcquireBusinessesGross_label_en-US" xlink:label="lab_us-gaap_PaymentsToAcquireBusinessesGross" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Payments to Acquire Businesses, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesGross" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PaymentsToAcquireBusinessesGross" xlink:to="lab_us-gaap_PaymentsToAcquireBusinessesGross" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ProductCostOfRevenueMember_b56e4f2a-2d52-4394-ae72-b70c9a41f5fe_terseLabel_en-US" xlink:label="lab_cgnx_ProductCostOfRevenueMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product cost of revenue [Member]</link:label>
    <link:label id="lab_cgnx_ProductCostOfRevenueMember_label_en-US" xlink:label="lab_cgnx_ProductCostOfRevenueMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Cost Of Revenue [Member]</link:label>
    <link:label id="lab_cgnx_ProductCostOfRevenueMember_documentation_en-US" xlink:label="lab_cgnx_ProductCostOfRevenueMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product cost of revenue.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductCostOfRevenueMember" xlink:href="cgnx-20211231.xsd#cgnx_ProductCostOfRevenueMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ProductCostOfRevenueMember" xlink:to="lab_cgnx_ProductCostOfRevenueMember" xlink:type="arc" order="1"/>
    <link:label id="lab_currency_EUR_e81dc2e5-dab8-4ec7-97f4-856a1bd5c54a_terseLabel_en-US" xlink:label="lab_currency_EUR" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Euro [Member]</link:label>
    <link:label id="lab_currency_EUR_label_en-US" xlink:label="lab_currency_EUR" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Euro Member Countries, Euro</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_currency_EUR" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_EUR"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_currency_EUR" xlink:to="lab_currency_EUR" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_e751ce2f-bbff-4493-89ec-7e9c42784b3c_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign exchange rate changes</link:label>
    <link:label id="lab_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_label_en-US" xlink:label="lab_us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Goodwill, Foreign Currency Translation Gain (Loss)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:to="lab_us-gaap_GoodwillForeignCurrencyTranslationGainLoss" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NoncurrentAssets_9b2b9565-d9ac-4b0e-941e-a23d882a748f_terseLabel_en-US" xlink:label="lab_us-gaap_NoncurrentAssets" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-lived assets</link:label>
    <link:label id="lab_us-gaap_NoncurrentAssets_label_en-US" xlink:label="lab_us-gaap_NoncurrentAssets" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Long-Lived Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncurrentAssets" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncurrentAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NoncurrentAssets" xlink:to="lab_us-gaap_NoncurrentAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ComputerHardwareAndSoftwareMember_1251c4ea-4f60-4eb7-b370-47a3edd6fc8a_terseLabel_en-US" xlink:label="lab_cgnx_ComputerHardwareAndSoftwareMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Computer Hardware and Software [Member]</link:label>
    <link:label id="lab_cgnx_ComputerHardwareAndSoftwareMember_label_en-US" xlink:label="lab_cgnx_ComputerHardwareAndSoftwareMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Computer Hardware And Software [Member]</link:label>
    <link:label id="lab_cgnx_ComputerHardwareAndSoftwareMember_documentation_en-US" xlink:label="lab_cgnx_ComputerHardwareAndSoftwareMember" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Computer Hardware and Software Member.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ComputerHardwareAndSoftwareMember" xlink:href="cgnx-20211231.xsd#cgnx_ComputerHardwareAndSoftwareMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ComputerHardwareAndSoftwareMember" xlink:to="lab_cgnx_ComputerHardwareAndSoftwareMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AssetBackedSecuritiesMember_3a719c98-84f1-4f66-b7e3-eaacd9755514_terseLabel_en-US" xlink:label="lab_us-gaap_AssetBackedSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Asset-Backed Securities [Member]</link:label>
    <link:label id="lab_us-gaap_AssetBackedSecuritiesMember_label_en-US" xlink:label="lab_us-gaap_AssetBackedSecuritiesMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Asset-backed Securities [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AssetBackedSecuritiesMember" xlink:to="lab_us-gaap_AssetBackedSecuritiesMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdvertisingExpense_d817965b-4046-435a-9d91-e0059322c34e_terseLabel_en-US" xlink:label="lab_us-gaap_AdvertisingExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Advertising costs</link:label>
    <link:label id="lab_us-gaap_AdvertisingExpense_label_en-US" xlink:label="lab_us-gaap_AdvertisingExpense" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Advertising Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdvertisingExpense" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdvertisingExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdvertisingExpense" xlink:to="lab_us-gaap_AdvertisingExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_e51966e2-33d1-4a6f-9cdb-bf9de0949eec_terseLabel_en-US" xlink:label="lab_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid Expenses and Other Current Assets [Member]</link:label>
    <link:label id="lab_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_label_en-US" xlink:label="lab_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Prepaid Expenses and Other Current Assets [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember" xlink:to="lab_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ProductWarrantyPeriod_0d9dc127-05d4-4361-b35e-dd0f02cccce7_terseLabel_en-US" xlink:label="lab_cgnx_ProductWarrantyPeriod" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Warranty Period</link:label>
    <link:label id="lab_cgnx_ProductWarrantyPeriod_label_en-US" xlink:label="lab_cgnx_ProductWarrantyPeriod" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product Warranty Period</link:label>
    <link:label id="lab_cgnx_ProductWarrantyPeriod_documentation_en-US" xlink:label="lab_cgnx_ProductWarrantyPeriod" xlink:role="http://www.xbrl.org/2003/role/documentation" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Product warranty period.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductWarrantyPeriod" xlink:href="cgnx-20211231.xsd#cgnx_ProductWarrantyPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_ProductWarrantyPeriod" xlink:to="lab_cgnx_ProductWarrantyPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeFairValueOfDerivativeLiability_a4b5a81d-cf55-456f-af96-f9916c84a6c1_terseLabel_en-US" xlink:label="lab_us-gaap_DerivativeFairValueOfDerivativeLiability" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Liability, Fair Value, Gross Liability</link:label>
    <link:label id="lab_us-gaap_DerivativeFairValueOfDerivativeLiability_label_en-US" xlink:label="lab_us-gaap_DerivativeFairValueOfDerivativeLiability" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Derivative Liability, Fair Value, Gross Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeLiability" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeFairValueOfDerivativeLiability"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DerivativeFairValueOfDerivativeLiability" xlink:to="lab_us-gaap_DerivativeFairValueOfDerivativeLiability" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesBalance_894de51f-0bf2-4343-8642-5dffc2087224_terseLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Amount</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesBalance_f39abc57-3e27-4765-8611-31a86b27bf00_periodStartLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:role="http://www.xbrl.org/2003/role/periodStartLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance&#160;at Beginning of Period</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesBalance_75e6135f-a62d-4d17-b9dd-61da2beb89ec_periodEndLabel_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:role="http://www.xbrl.org/2003/role/periodEndLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Balance&#160;at End of Period</link:label>
    <link:label id="lab_us-gaap_ValuationAllowancesAndReservesBalance_label_en-US" xlink:label="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">SEC Schedule, 12-09, Valuation Allowances and Reserves, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesBalance" xlink:to="lab_us-gaap_ValuationAllowancesAndReservesBalance" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedIncomeTaxesCurrent_dba6119a-f474-493b-b31b-1a3d05a95b59_terseLabel_en-US" xlink:label="lab_us-gaap_AccruedIncomeTaxesCurrent" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued income taxes</link:label>
    <link:label id="lab_us-gaap_AccruedIncomeTaxesCurrent_label_en-US" xlink:label="lab_us-gaap_AccruedIncomeTaxesCurrent" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Accrued Income Taxes, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesCurrent" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AccruedIncomeTaxesCurrent" xlink:to="lab_us-gaap_AccruedIncomeTaxesCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_InventoryPolicyTextBlock_5f11f9fc-5d7d-4d1c-969d-61262659715b_terseLabel_en-US" xlink:label="lab_us-gaap_InventoryPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventories</link:label>
    <link:label id="lab_us-gaap_InventoryPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_InventoryPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Inventory, Policy [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryPolicyTextBlock" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_InventoryPolicyTextBlock" xlink:to="lab_us-gaap_InventoryPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentForeignTaxExpenseBenefit_e3cb409b-b074-418d-81fb-43d121119994_terseLabel_en-US" xlink:label="lab_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Foreign</link:label>
    <link:label id="lab_us-gaap_CurrentForeignTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Current Foreign Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:to="lab_us-gaap_CurrentForeignTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CommonStockValueOutstanding_276300dd-10b4-495a-92d6-00906d747f12_terseLabel_en-US" xlink:label="lab_us-gaap_CommonStockValueOutstanding" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common stock, $.002 par value &#8211; Authorized: 300,000 shares in 2021 and 2020, respectively, issued and outstanding: 175,481 and 175,790 shares in 2021 and 2020, respectively</link:label>
    <link:label id="lab_us-gaap_CommonStockValueOutstanding_label_en-US" xlink:label="lab_us-gaap_CommonStockValueOutstanding" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Common Stock, Value, Outstanding</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockValueOutstanding" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockValueOutstanding"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CommonStockValueOutstanding" xlink:to="lab_us-gaap_CommonStockValueOutstanding" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DevelopedTechnologyRightsMember_74fbac7a-4f6b-43a5-854f-3894b2cbfe23_terseLabel_en-US" xlink:label="lab_us-gaap_DevelopedTechnologyRightsMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Completed Technologies [Member]</link:label>
    <link:label id="lab_us-gaap_DevelopedTechnologyRightsMember_label_en-US" xlink:label="lab_us-gaap_DevelopedTechnologyRightsMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Developed Technology Rights [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DevelopedTechnologyRightsMember" xlink:to="lab_us-gaap_DevelopedTechnologyRightsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_295d3235-624b-4704-afd7-f536c84418c7_terseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Less than 1 Year</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Debt Securities, Available-for-Sale, Fair Value, Maturity, Allocated and Single Maturity Date, Year One</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" xlink:to="lab_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskByBenchmarkAxis_6b066880-fe71-418e-b607-0ddc247872a6_terseLabel_en-US" xlink:label="lab_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Benchmark [Axis]</link:label>
    <link:label id="lab_us-gaap_ConcentrationRiskByBenchmarkAxis_label_en-US" xlink:label="lab_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Concentration Risk Benchmark [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:to="lab_us-gaap_ConcentrationRiskByBenchmarkAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_1455e978-3713-43a9-b0f3-b6b1f1f462a8_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets [Table]</link:label>
    <link:label id="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_label_en-US" xlink:label="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Schedule of Finite-Lived Intangible Assets [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:to="lab_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable" xlink:type="arc" order="1"/>
  </link:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>13
<FILENAME>cgnx-20211231_pre.xml
<DESCRIPTION>XBRL TAXONOMY EXTENSION PRESENTATION LINKBASE DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2022 Workiva-->
<!--r:4878a129-9b80-4a38-a303-2b34e8ac6131,g:f27b0d4b-0a26-4a3f-9754-6435629f6abe-->
<link:linkbase xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.xbrl.org/2003/linkbase http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd">
  <link:roleRef roleURI="http://cognex.com/role/CoverPage" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CoverPage"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CoverPage" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_CoverAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentType_d74dd10a-bad4-4493-a7f3-3fa77fe0d86b" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentType"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_DocumentType_d74dd10a-bad4-4493-a7f3-3fa77fe0d86b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentAnnualReport_dd3e7e3d-ab7c-416b-987f-485a8c728f5d" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentAnnualReport"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_DocumentAnnualReport_dd3e7e3d-ab7c-416b-987f-485a8c728f5d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentPeriodEndDate_ffac7fb0-7613-4731-9815-6a9dbf884dfd" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentPeriodEndDate"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_DocumentPeriodEndDate_ffac7fb0-7613-4731-9815-6a9dbf884dfd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentTransitionReport_928d6129-3a03-4b34-8f5f-4e523e265921" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentTransitionReport"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_DocumentTransitionReport_928d6129-3a03-4b34-8f5f-4e523e265921" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFileNumber_6f172558-d507-4ad2-a5d6-b570406e9a39" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityFileNumber"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityFileNumber_6f172558-d507-4ad2-a5d6-b570406e9a39" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityRegistrantName_5033daff-29f1-45fc-9d68-f97476b705ad" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityRegistrantName"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityRegistrantName_5033daff-29f1-45fc-9d68-f97476b705ad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityIncorporationStateCountryCode_2b62fc85-fdd7-4803-a60a-58fa4a82c7e2" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityIncorporationStateCountryCode"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityIncorporationStateCountryCode_2b62fc85-fdd7-4803-a60a-58fa4a82c7e2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityTaxIdentificationNumber_427e4330-4b8f-476c-b5f6-2df36960f015" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityTaxIdentificationNumber"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityTaxIdentificationNumber_427e4330-4b8f-476c-b5f6-2df36960f015" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressAddressLine1_c1c1f637-7469-4b7b-94a9-627747e7a01f" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityAddressAddressLine1"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityAddressAddressLine1_c1c1f637-7469-4b7b-94a9-627747e7a01f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCityOrTown_afa012a1-fcdc-4387-8465-0b6b6c1090c3" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityAddressCityOrTown"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityAddressCityOrTown_afa012a1-fcdc-4387-8465-0b6b6c1090c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressStateOrProvince_be8fcf6b-0422-4665-82f3-a57c6223a1fd" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityAddressStateOrProvince"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityAddressStateOrProvince_be8fcf6b-0422-4665-82f3-a57c6223a1fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressPostalZipCode_6b3fe973-8289-4de7-8085-e2cd5c8628e2" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityAddressPostalZipCode"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityAddressPostalZipCode_6b3fe973-8289-4de7-8085-e2cd5c8628e2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CityAreaCode_3c9e19b6-9dc4-4e84-894a-e899af3c4415" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_CityAreaCode"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_CityAreaCode_3c9e19b6-9dc4-4e84-894a-e899af3c4415" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_LocalPhoneNumber_ea95bcb5-77f9-4355-9c2b-d6c12ef9e743" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_LocalPhoneNumber"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_LocalPhoneNumber_ea95bcb5-77f9-4355-9c2b-d6c12ef9e743" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_Security12bTitle_4e39f896-2f7c-4318-a880-afbf682ab706" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_Security12bTitle"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_Security12bTitle_4e39f896-2f7c-4318-a880-afbf682ab706" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_TradingSymbol_308e3872-9b72-47f1-83bd-5b98d028e4ef" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_TradingSymbol"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_TradingSymbol_308e3872-9b72-47f1-83bd-5b98d028e4ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SecurityExchangeName_c267f4e8-0418-4501-af63-e9af2496399c" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_SecurityExchangeName"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_SecurityExchangeName_c267f4e8-0418-4501-af63-e9af2496399c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityWellKnownSeasonedIssuer_44cd0de7-953b-4b56-a30f-60894370aadb" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityWellKnownSeasonedIssuer"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityWellKnownSeasonedIssuer_44cd0de7-953b-4b56-a30f-60894370aadb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityVoluntaryFilers_378a7a36-6383-4fbf-8f22-f70ed7e4728c" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityVoluntaryFilers"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityVoluntaryFilers_378a7a36-6383-4fbf-8f22-f70ed7e4728c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCurrentReportingStatus_04b91512-f907-4b31-8832-78c0de8ab8bc" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityCurrentReportingStatus"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityCurrentReportingStatus_04b91512-f907-4b31-8832-78c0de8ab8bc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityInteractiveDataCurrent_586f5b11-4463-4e2f-a043-d2bd5cfbe291" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityInteractiveDataCurrent"/>
    <link:presentationArc order="21" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityInteractiveDataCurrent_586f5b11-4463-4e2f-a043-d2bd5cfbe291" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFilerCategory_c06b4c14-4b6d-494c-8942-39b039e1a4bb" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityFilerCategory"/>
    <link:presentationArc order="22" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityFilerCategory_c06b4c14-4b6d-494c-8942-39b039e1a4bb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntitySmallBusiness_b480946e-6765-4c66-bd65-6259af8f1b85" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntitySmallBusiness"/>
    <link:presentationArc order="23" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntitySmallBusiness_b480946e-6765-4c66-bd65-6259af8f1b85" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityEmergingGrowthCompany_016aa42c-516f-4cd6-8658-56a0fdc26869" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityEmergingGrowthCompany"/>
    <link:presentationArc order="24" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityEmergingGrowthCompany_016aa42c-516f-4cd6-8658-56a0fdc26869" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_IcfrAuditorAttestationFlag_98c478df-d900-424c-bb43-e80c4f09af52" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_IcfrAuditorAttestationFlag"/>
    <link:presentationArc order="25" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_IcfrAuditorAttestationFlag_98c478df-d900-424c-bb43-e80c4f09af52" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityShellCompany_01360065-005b-4c9c-a1ad-ac55bae60b2f" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityShellCompany"/>
    <link:presentationArc order="26" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityShellCompany_01360065-005b-4c9c-a1ad-ac55bae60b2f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityPublicFloat_9b0885b3-f4e0-4fbd-8a3e-dc61622383b8" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityPublicFloat"/>
    <link:presentationArc order="27" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityPublicFloat_9b0885b3-f4e0-4fbd-8a3e-dc61622383b8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCommonStockSharesOutstanding_d0018a2a-4bd1-4336-8d63-228b8878d379" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <link:presentationArc order="28" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityCommonStockSharesOutstanding_d0018a2a-4bd1-4336-8d63-228b8878d379" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCentralIndexKey_94f03bd4-f442-4211-96e2-8b1d1a709a35" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_EntityCentralIndexKey"/>
    <link:presentationArc order="29" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_EntityCentralIndexKey_94f03bd4-f442-4211-96e2-8b1d1a709a35" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CurrentFiscalYearEndDate_a443f3ed-f1ba-485d-a832-96281c603779" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_CurrentFiscalYearEndDate"/>
    <link:presentationArc order="30" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_CurrentFiscalYearEndDate_a443f3ed-f1ba-485d-a832-96281c603779" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalYearFocus_fe121617-829c-480e-962d-5a0b42265392" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentFiscalYearFocus"/>
    <link:presentationArc order="31" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_DocumentFiscalYearFocus_fe121617-829c-480e-962d-5a0b42265392" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalPeriodFocus_466297e4-bd3d-485d-aeec-7d626ee224af" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_DocumentFiscalPeriodFocus"/>
    <link:presentationArc order="32" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_DocumentFiscalPeriodFocus_466297e4-bd3d-485d-aeec-7d626ee224af" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AmendmentFlag_4235d394-8bf0-4706-97c0-d6d0a667a872" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AmendmentFlag"/>
    <link:presentationArc order="33" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_6d735a7f-c41e-4387-99bd-88cc3b45b7a5" xlink:to="loc_dei_AmendmentFlag_4235d394-8bf0-4706-97c0-d6d0a667a872" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/AuditInformation" xlink:type="simple" xlink:href="cgnx-20211231.xsd#AuditInformation"/>
  <link:presentationLink xlink:role="http://cognex.com/role/AuditInformation" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorLineItems_8ee90ec0-d7cb-4627-99c0-702a1eeef721" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AuditorLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorName_5985eb65-bd94-4aa9-8b50-0dd8e0a6b3e7" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AuditorName"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_AuditorLineItems_8ee90ec0-d7cb-4627-99c0-702a1eeef721" xlink:to="loc_dei_AuditorName_5985eb65-bd94-4aa9-8b50-0dd8e0a6b3e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorLocation_c9c2cf0b-ad88-4c44-b283-85fb4a082d0a" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AuditorLocation"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_AuditorLineItems_8ee90ec0-d7cb-4627-99c0-702a1eeef721" xlink:to="loc_dei_AuditorLocation_c9c2cf0b-ad88-4c44-b283-85fb4a082d0a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AuditorFirmId_b2bf422b-eb10-4e18-9c14-263e9c0f71ee" xlink:href="https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd#dei_AuditorFirmId"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_AuditorLineItems_8ee90ec0-d7cb-4627-99c0-702a1eeef721" xlink:to="loc_dei_AuditorFirmId_b2bf422b-eb10-4e18-9c14-263e9c0f71ee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFOPERATIONS"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0d8fa827-72d2-4520-9372-8751661bb321" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0d8fa827-72d2-4520-9372-8751661bb321" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfGoodsAndServicesSold_bc3f7238-0cec-45a0-a0a4-01fc6a0ae7f2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostOfGoodsAndServicesSold"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_CostOfGoodsAndServicesSold_bc3f7238-0cec-45a0-a0a4-01fc6a0ae7f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_afdf27c3-9625-4861-bac4-ba8637098085" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GrossProfit"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_GrossProfit_afdf27c3-9625-4861-bac4-ba8637098085" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpense_c78b7432-7ec7-464e-a42d-6462a281810e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpense"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpense_c78b7432-7ec7-464e-a42d-6462a281810e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingGeneralAndAdministrativeExpense_b92b0602-1ac2-41bd-a182-38f3a5320ef1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SellingGeneralAndAdministrativeExpense"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_SellingGeneralAndAdministrativeExpense_b92b0602-1ac2-41bd-a182-38f3a5320ef1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_dd1e71c4-43dd-4a3e-90c6-f4c50dc9c6d3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_RestructuringCharges_dd1e71c4-43dd-4a3e-90c6-f4c50dc9c6d3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_e1ce200c-3ed5-43c2-8726-87526ef205fc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_e1ce200c-3ed5-43c2-8726-87526ef205fc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_3d201f22-b0cf-4e12-bd71-3d40762ec3e3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_OperatingIncomeLoss_3d201f22-b0cf-4e12-bd71-3d40762ec3e3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_a5e1e3e0-47bf-4a43-9df2-c03b158e0cd4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyTransactionGainLossBeforeTax"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_a5e1e3e0-47bf-4a43-9df2-c03b158e0cd4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNonoperating_846bdead-d075-4fea-a171-b68ba8413c45" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentIncomeNonoperating"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_InvestmentIncomeNonoperating_846bdead-d075-4fea-a171-b68ba8413c45" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense_6ee86cc6-3d72-4c89-a90f-43fe48260a2a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherNonoperatingIncomeExpense"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_OtherNonoperatingIncomeExpense_6ee86cc6-3d72-4c89-a90f-43fe48260a2a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_35a4199b-5eb4-4615-9b6d-4b3c45375276" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_35a4199b-5eb4-4615-9b6d-4b3c45375276" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_ef308ced-a984-4961-ad91-8bd15c141e0b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_ef308ced-a984-4961-ad91-8bd15c141e0b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_8396586b-e2af-4fdb-b8bd-f50efa50ab88" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_NetIncomeLoss_8396586b-e2af-4fdb-b8bd-f50efa50ab88" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasicAbstract_270e8242-1aae-4bd4-861b-8cffcc5e0371" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasicAbstract"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_EarningsPerShareBasicAbstract_270e8242-1aae-4bd4-861b-8cffcc5e0371" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_8cf67fb9-3054-4326-8dfd-1e4c3aa1eb6a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareBasicAbstract_270e8242-1aae-4bd4-861b-8cffcc5e0371" xlink:to="loc_us-gaap_EarningsPerShareBasic_8cf67fb9-3054-4326-8dfd-1e4c3aa1eb6a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDilutedAbstract_aed29299-f5bd-4bed-9327-eea366c0f078" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDilutedAbstract"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_EarningsPerShareDilutedAbstract_aed29299-f5bd-4bed-9327-eea366c0f078" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_975b5328-2c22-4953-8e03-6891774ce3b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareDilutedAbstract_aed29299-f5bd-4bed-9327-eea366c0f078" xlink:to="loc_us-gaap_EarningsPerShareDiluted_975b5328-2c22-4953-8e03-6891774ce3b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract_70b5e6bb-4ebe-4e64-a669-5e2b13427ed9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract_70b5e6bb-4ebe-4e64-a669-5e2b13427ed9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_2b134c6e-0187-46dc-a93d-366079b3e68a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract_70b5e6bb-4ebe-4e64-a669-5e2b13427ed9" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_2b134c6e-0187-46dc-a93d-366079b3e68a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_eecd707e-cfaa-4089-992e-08bf872b35f1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract_70b5e6bb-4ebe-4e64-a669-5e2b13427ed9" xlink:to="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_eecd707e-cfaa-4089-992e-08bf872b35f1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareCashPaid_32738731-7c81-475a-8a63-42ad10b860c6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockDividendsPerShareCashPaid"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_619f65ed-ac00-41f8-adff-7379fa3bd1d3" xlink:to="loc_us-gaap_CommonStockDividendsPerShareCashPaid_32738731-7c81-475a-8a63-42ad10b860c6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_fa772bbc-3cd0-446e-92f5-02fcf67a7bb4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_5095922a-eda4-403a-ae25-14926fcffda0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_fa772bbc-3cd0-446e-92f5-02fcf67a7bb4" xlink:to="loc_us-gaap_NetIncomeLoss_5095922a-eda4-403a-ae25-14926fcffda0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_e149ab01-56a5-4655-b91c-470fbb45538f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_fa772bbc-3cd0-446e-92f5-02fcf67a7bb4" xlink:to="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_e149ab01-56a5-4655-b91c-470fbb45538f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_0db3c195-370c-4bd5-92c3-c2c554571222" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_e149ab01-56a5-4655-b91c-470fbb45538f" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_0db3c195-370c-4bd5-92c3-c2c554571222" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8e11349b-2fb8-4e56-b308-b83ab814a7ea" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_e149ab01-56a5-4655-b91c-470fbb45538f" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8e11349b-2fb8-4e56-b308-b83ab814a7ea" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_a8364bf6-e50d-450f-9c5e-cac269125db7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_e149ab01-56a5-4655-b91c-470fbb45538f" xlink:to="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_a8364bf6-e50d-450f-9c5e-cac269125db7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CurrencytranslationadjustmentAbstract_4d3cd5bb-7f56-46f7-8692-21e183517068" xlink:href="cgnx-20211231.xsd#cgnx_CurrencytranslationadjustmentAbstract"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_fa772bbc-3cd0-446e-92f5-02fcf67a7bb4" xlink:to="loc_cgnx_CurrencytranslationadjustmentAbstract_4d3cd5bb-7f56-46f7-8692-21e183517068" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_5706c9ef-f43a-4cac-83f4-2e0a656ce4cb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CurrencytranslationadjustmentAbstract_4d3cd5bb-7f56-46f7-8692-21e183517068" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_5706c9ef-f43a-4cac-83f4-2e0a656ce4cb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_885f492b-7687-48b8-9fcc-ceba5abc7de6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CurrencytranslationadjustmentAbstract_4d3cd5bb-7f56-46f7-8692-21e183517068" xlink:to="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_885f492b-7687-48b8-9fcc-ceba5abc7de6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_abd7e0c3-6661-4fc2-8160-42748496551a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_fa772bbc-3cd0-446e-92f5-02fcf67a7bb4" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_abd7e0c3-6661-4fc2-8160-42748496551a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNetOfTax_7af71e20-5cfe-485b-810d-f4987a16e62c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_fa772bbc-3cd0-446e-92f5-02fcf67a7bb4" xlink:to="loc_us-gaap_ComprehensiveIncomeNetOfTax_7af71e20-5cfe-485b-810d-f4987a16e62c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_6888bad9-b046-448b-8077-cacf202d4f88" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_8d154cbf-cb18-4066-9720-47326f7ff504" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_6888bad9-b046-448b-8077-cacf202d4f88" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_8d154cbf-cb18-4066-9720-47326f7ff504" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDBALANCESHEETS"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfFinancialPositionAbstract_6e2099fe-3fc8-4d64-8bc1-163b8c5fdda7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_6e2099fe-3fc8-4d64-8bc1-163b8c5fdda7" xlink:to="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrentAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_2fca00c3-0369-48ba-8a0f-7fc3cec1a760" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_2fca00c3-0369-48ba-8a0f-7fc3cec1a760" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_ac3cb5e3-e6e9-4b7f-877c-37599061c5eb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_ac3cb5e3-e6e9-4b7f-877c-37599061c5eb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent_e2ab9196-affd-49d0-8111-eb45076e0818" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableNetCurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:to="loc_us-gaap_AccountsReceivableNetCurrent_e2ab9196-affd-49d0-8111-eb45076e0818" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnbilledReceivablesCurrent_32205505-56c5-462d-b5f7-224ac5d2f9a9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnbilledReceivablesCurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:to="loc_us-gaap_UnbilledReceivablesCurrent_32205505-56c5-462d-b5f7-224ac5d2f9a9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_ccd2f936-e2c1-4819-b467-cebbcc9073e5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:to="loc_us-gaap_InventoryNet_ccd2f936-e2c1-4819-b467-cebbcc9073e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_177b8c1f-eded-4578-9f44-d2335c1aa0c6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpenseAndOtherAssetsCurrent"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:to="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_177b8c1f-eded-4578-9f44-d2335c1aa0c6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_6105103b-ff32-44d7-ae42-8c017ea7a200" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsCurrent"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsCurrentAbstract_37b52c60-9a93-4f88-aee6-a9e37eba9b65" xlink:to="loc_us-gaap_AssetsCurrent_6105103b-ff32-44d7-ae42-8c017ea7a200" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_f8bebdf0-4e70-4a90-ad4f-9da7bfc942c3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_LongTermInvestments_f8bebdf0-4e70-4a90-ad4f-9da7bfc942c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_ff10787c-9da5-4b7c-a127-6f97d1bd0268" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_ff10787c-9da5-4b7c-a127-6f97d1bd0268" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset_aadd0a2d-9c64-48fc-a489-3afa35fa626d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_OperatingLeaseRightOfUseAsset_aadd0a2d-9c64-48fc-a489-3afa35fa626d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_7b2f540a-0c89-4fa4-8634-8f4bc8ce228f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_Goodwill_7b2f540a-0c89-4fa4-8634-8f4bc8ce228f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_d03103bf-7832-462b-a5dd-f7a17ef1a7d6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsNetExcludingGoodwill"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_d03103bf-7832-462b-a5dd-f7a17ef1a7d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxAssetsNet_2ed8840a-f3d8-4a1e-9f02-dfca97c12bfd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxAssetsNet"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_DeferredIncomeTaxAssetsNet_2ed8840a-f3d8-4a1e-9f02-dfca97c12bfd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_34d89ab1-4860-4b30-9167-38ba070eae2d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAssetsNoncurrent"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_OtherAssetsNoncurrent_34d89ab1-4860-4b30-9167-38ba070eae2d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Assets_cce0edd0-9e39-4901-99e3-6c926746fc9b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Assets"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsAbstract_15de562d-8309-4c9d-8e8b-8d566605c896" xlink:to="loc_us-gaap_Assets_cce0edd0-9e39-4901-99e3-6c926746fc9b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquityAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_6e2099fe-3fc8-4d64-8bc1-163b8c5fdda7" xlink:to="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrentAbstract_b3394185-f885-414e-996a-06dc3b5c2b84" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrentAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_LiabilitiesCurrentAbstract_b3394185-f885-414e-996a-06dc3b5c2b84" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableCurrent_83fb5d63-c8e7-404e-a1c7-bd834991966c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableCurrent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_b3394185-f885-414e-996a-06dc3b5c2b84" xlink:to="loc_us-gaap_AccountsPayableCurrent_83fb5d63-c8e7-404e-a1c7-bd834991966c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_cdd62d0a-beff-451c-aac0-5699f940d934" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_b3394185-f885-414e-996a-06dc3b5c2b84" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_cdd62d0a-beff-451c-aac0-5699f940d934" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesCurrent_f7715bc3-b8c8-4f3e-9467-2b230a16980b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesCurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_b3394185-f885-414e-996a-06dc3b5c2b84" xlink:to="loc_us-gaap_AccruedIncomeTaxesCurrent_f7715bc3-b8c8-4f3e-9467-2b230a16980b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_179cf837-3618-4499-b795-c4232ae576e6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractWithCustomerLiabilityCurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_b3394185-f885-414e-996a-06dc3b5c2b84" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_179cf837-3618-4499-b795-c4232ae576e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_c3eca1f5-22fe-4db6-a4c8-205d69342e43" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_b3394185-f885-414e-996a-06dc3b5c2b84" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_c3eca1f5-22fe-4db6-a4c8-205d69342e43" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_df639632-89c1-48ce-ba6c-8c0013f0ec89" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesCurrentAbstract_b3394185-f885-414e-996a-06dc3b5c2b84" xlink:to="loc_us-gaap_LiabilitiesCurrent_df639632-89c1-48ce-ba6c-8c0013f0ec89" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_c927f7ed-96a0-4a3a-a9eb-a977401cbec3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_c927f7ed-96a0-4a3a-a9eb-a977401cbec3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet_22a2e1ca-6686-414d-b649-a35a47f607f2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilitiesNet"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet_22a2e1ca-6686-414d-b649-a35a47f607f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_46ddb723-4968-4593-8923-21e5757a4f2a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilityForUncertainTaxPositionsNoncurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_46ddb723-4968-4593-8923-21e5757a4f2a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesNoncurrent_ab0786d6-f0b9-4feb-bd4c-1fb1a86452ff" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedIncomeTaxesNoncurrent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_AccruedIncomeTaxesNoncurrent_ab0786d6-f0b9-4feb-bd4c-1fb1a86452ff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent_7bfc6fb7-7eb7-49db-a2aa-03d7a142d815" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherLiabilitiesNoncurrent"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_OtherLiabilitiesNoncurrent_7bfc6fb7-7eb7-49db-a2aa-03d7a142d815" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_e466a8ce-0a9e-4c4f-98c2-38928cad44ae" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Liabilities"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_Liabilities_e466a8ce-0a9e-4c4f-98c2-38928cad44ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingencies_0ba36293-3791-4be9-903c-9077d733c41a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingencies"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_CommitmentsAndContingencies_0ba36293-3791-4be9-903c-9077d733c41a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityAbstract_af17b6f3-00ba-4113-9b8b-7ec9996d579d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquityAbstract"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_StockholdersEquityAbstract_af17b6f3-00ba-4113-9b8b-7ec9996d579d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockValueOutstanding_ce7db629-4bfc-4059-aa20-a40872262c6f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockValueOutstanding"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_af17b6f3-00ba-4113-9b8b-7ec9996d579d" xlink:to="loc_us-gaap_PreferredStockValueOutstanding_ce7db629-4bfc-4059-aa20-a40872262c6f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockValueOutstanding_3dcc0253-e713-4ca6-9e68-ba8b9eb0b234" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockValueOutstanding"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_af17b6f3-00ba-4113-9b8b-7ec9996d579d" xlink:to="loc_us-gaap_CommonStockValueOutstanding_3dcc0253-e713-4ca6-9e68-ba8b9eb0b234" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalCommonStock_5a28a725-ef22-4730-af06-50d31195282f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalCommonStock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_af17b6f3-00ba-4113-9b8b-7ec9996d579d" xlink:to="loc_us-gaap_AdditionalPaidInCapitalCommonStock_5a28a725-ef22-4730-af06-50d31195282f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_6d153d0a-238a-433e-bcf8-a178265564b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_af17b6f3-00ba-4113-9b8b-7ec9996d579d" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_6d153d0a-238a-433e-bcf8-a178265564b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_0b8ad236-1254-4ace-a6ce-f6e70ad31cd2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_af17b6f3-00ba-4113-9b8b-7ec9996d579d" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_0b8ad236-1254-4ace-a6ce-f6e70ad31cd2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_944e7ef4-81f1-46a6-a902-9e5c61d960a5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StockholdersEquityAbstract_af17b6f3-00ba-4113-9b8b-7ec9996d579d" xlink:to="loc_us-gaap_StockholdersEquity_944e7ef4-81f1-46a6-a902-9e5c61d960a5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquity_752dd4bd-9232-4555-b123-a7af763ef1ef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_c2ae0bb1-5512-4e9d-9fcf-e4d384d1539e" xlink:to="loc_us-gaap_LiabilitiesAndStockholdersEquity_752dd4bd-9232-4555-b123-a7af763ef1ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDBALANCESHEETSParenthetical"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_9a1cbac5-4f99-4287-b27b-78336c4ea2a7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_9a1cbac5-4f99-4287-b27b-78336c4ea2a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent_799572b6-e54b-4a3e-8c0f-ba3cad856f30" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent_799572b6-e54b-4a3e-8c0f-ba3cad856f30" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent_a73cb39c-8f93-48bb-badc-48d15de8e968" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent_a73cb39c-8f93-48bb-badc-48d15de8e968" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare_be0339b0-4021-4331-bea6-752792347adc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_PreferredStockParOrStatedValuePerShare_be0339b0-4021-4331-bea6-752792347adc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_a8988f63-2d07-41e9-b848-5592d2972263" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_a8988f63-2d07-41e9-b848-5592d2972263" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesIssued_d6666c54-614b-47a1-8249-050d59a40895" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesIssued"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_PreferredStockSharesIssued_d6666c54-614b-47a1-8249-050d59a40895" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesOutstanding_9fcb0d7a-27f6-4db9-9b56-1a221948784d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesOutstanding"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_PreferredStockSharesOutstanding_9fcb0d7a-27f6-4db9-9b56-1a221948784d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_a960116c-b35b-4239-91c8-8c2c5c9069a3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_a960116c-b35b-4239-91c8-8c2c5c9069a3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized_4594b2d5-a940-49b6-9b5e-a3d6af7dabc6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesAuthorized"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_CommonStockSharesAuthorized_4594b2d5-a940-49b6-9b5e-a3d6af7dabc6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_d23d73af-8695-409d-be62-ddd1f44bd21c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_CommonStockSharesIssued_d23d73af-8695-409d-be62-ddd1f44bd21c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding_083c1c23-6363-4bc5-91b5-fba812c9b2ca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_CommonStockSharesOutstanding_083c1c23-6363-4bc5-91b5-fba812c9b2ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent_0b8bb8fb-1588-44a0-ab43-2712589c9589" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent_0b8bb8fb-1588-44a0-ab43-2712589c9589" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent_9c409911-503b-4e71-9672-65b7e5e1b82f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_7a87373e-3d5e-4ffd-ae3c-c29cbd012c02" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent_9c409911-503b-4e71-9672-65b7e5e1b82f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFCASHFLOWS"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfCashFlowsAbstract_d1739c38-69de-4da7-b3bc-74137c954dcd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfCashFlowsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_0888b6a5-7f67-4e63-befd-33ffdb53789e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d1739c38-69de-4da7-b3bc-74137c954dcd" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_0888b6a5-7f67-4e63-befd-33ffdb53789e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_d6bb29b2-ad0c-4367-aa15-9d8909a2e5b8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_0888b6a5-7f67-4e63-befd-33ffdb53789e" xlink:to="loc_us-gaap_NetIncomeLoss_d6bb29b2-ad0c-4367-aa15-9d8909a2e5b8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_0888b6a5-7f67-4e63-befd-33ffdb53789e" xlink:to="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockOptionPlanExpense_9f63ace2-67d4-4477-9d47-a23e26ad82df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockOptionPlanExpense"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_StockOptionPlanExpense_9f63ace2-67d4-4477-9d47-a23e26ad82df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation_a9051cef-309d-40ba-9efb-94b6e13f153b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Depreciation"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_Depreciation_a9051cef-309d-40ba-9efb-94b6e13f153b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_f5c23e9e-24d1-42eb-b0c0-54cdc50a0db9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GainLossOnSaleOfPropertyPlantEquipment"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_f5c23e9e-24d1-42eb-b0c0-54cdc50a0db9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AmortizationOfIntangibleAssets_cf1df871-9116-43f8-8430-3d0201c4752b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AmortizationOfIntangibleAssets"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_AmortizationOfIntangibleAssets_cf1df871-9116-43f8-8430-3d0201c4752b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_331954c4-2d5d-41e9-9e91-b58ccd4b47d6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_331954c4-2d5d-41e9-9e91-b58ccd4b47d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExcessAndObsoleteInventoryCharges_68c777b5-e5cf-46e6-b8c1-bcb2a08787ec" xlink:href="cgnx-20211231.xsd#cgnx_ExcessAndObsoleteInventoryCharges"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_cgnx_ExcessAndObsoleteInventoryCharges_68c777b5-e5cf-46e6-b8c1-bcb2a08787ec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_146770a8-7936-4a7b-b32c-bad4b5397e86" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_146770a8-7936-4a7b-b32c-bad4b5397e86" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_eb645214-7e7e-4ec5-af16-891a4d46c30e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_eb645214-7e7e-4ec5-af16-891a4d46c30e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfInvestments_30963fde-3194-4794-804a-8f56ff36ec56" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GainLossOnSaleOfInvestments"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_GainLossOnSaleOfInvestments_30963fde-3194-4794-804a-8f56ff36ec56" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_384fb3ae-8af0-4650-a883-5a4c21e49c80" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_384fb3ae-8af0-4650-a883-5a4c21e49c80" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_3c177593-34c8-4c31-82e6-9d1a4a1ba283" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInDeferredIncomeTaxes"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_3c177593-34c8-4c31-82e6-9d1a4a1ba283" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_05b2deb3-a30a-4c0f-a81d-2c132f3e6b33" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsReceivable"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_05b2deb3-a30a-4c0f-a81d-2c132f3e6b33" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_6e7376f0-9f15-4235-a60e-58d6b2dc34c8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerAsset"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_6e7376f0-9f15-4235-a60e-58d6b2dc34c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInInventories_3cbe4b60-48e4-43a4-ae9c-7ce5b106c33e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInInventories"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInInventories_3cbe4b60-48e4-43a4-ae9c-7ce5b106c33e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_11796143-4ec5-4fc2-829c-31d169745aac" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_11796143-4ec5-4fc2-829c-31d169745aac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsPayable_9f852ad9-0ba9-407f-8ce3-ee092f1e9820" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccountsPayable"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsPayable_9f852ad9-0ba9-407f-8ce3-ee092f1e9820" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_2529731d-2bbd-43da-bb7e-52f90fea0901" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedLiabilities"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_2529731d-2bbd-43da-bb7e-52f90fea0901" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_9731d188-430e-41c2-a1d6-ff18a91693f7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_9731d188-430e-41c2-a1d6-ff18a91693f7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_dca6b7fd-2ff0-43f6-92d3-c91391c26e61" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInContractWithCustomerLiability"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_dca6b7fd-2ff0-43f6-92d3-c91391c26e61" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_e3ee944d-976d-489b-9e60-df3d90b3d13c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_66b0d94c-34d4-4b7b-b2bf-bd5030adba1c" xlink:to="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_e3ee944d-976d-489b-9e60-df3d90b3d13c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_fd3d1c78-a42c-46d5-9ff2-c6c7d240ebda" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_0888b6a5-7f67-4e63-befd-33ffdb53789e" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_fd3d1c78-a42c-46d5-9ff2-c6c7d240ebda" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_4a43df14-d7b4-44f0-b7d0-646d196dc94a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d1739c38-69de-4da7-b3bc-74137c954dcd" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_4a43df14-d7b4-44f0-b7d0-646d196dc94a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireInvestments_f7ff60ad-081e-4e45-8acc-d617490f1427" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireInvestments"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_4a43df14-d7b4-44f0-b7d0-646d196dc94a" xlink:to="loc_us-gaap_PaymentsToAcquireInvestments_f7ff60ad-081e-4e45-8acc-d617490f1427" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_a1068fea-8dcb-4fb6-aa9f-52a4dc1b8d8a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_4a43df14-d7b4-44f0-b7d0-646d196dc94a" xlink:to="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_a1068fea-8dcb-4fb6-aa9f-52a4dc1b8d8a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_033ed039-0a2d-4ae5-b890-6e268a5b5212" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquirePropertyPlantAndEquipment"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_4a43df14-d7b4-44f0-b7d0-646d196dc94a" xlink:to="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_033ed039-0a2d-4ae5-b890-6e268a5b5212" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_4e7a83ab-3e3f-46fe-b2bc-5b2f9f86baf8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_4a43df14-d7b4-44f0-b7d0-646d196dc94a" xlink:to="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_4e7a83ab-3e3f-46fe-b2bc-5b2f9f86baf8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_9a9070ea-115f-4535-a3e1-84d22203b431" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_4a43df14-d7b4-44f0-b7d0-646d196dc94a" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_9a9070ea-115f-4535-a3e1-84d22203b431" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_21a0d4ea-1d03-4094-81c7-96f755a1fd88" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d1739c38-69de-4da7-b3bc-74137c954dcd" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_21a0d4ea-1d03-4094-81c7-96f755a1fd88" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_7b8ee263-8a36-4651-8429-10e462a14875" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_21a0d4ea-1d03-4094-81c7-96f755a1fd88" xlink:to="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_7b8ee263-8a36-4651-8429-10e462a14875" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRepurchaseOfCommonStock_33b720b4-18e1-4adf-a44e-8464d738888d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRepurchaseOfCommonStock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_21a0d4ea-1d03-4094-81c7-96f755a1fd88" xlink:to="loc_us-gaap_PaymentsForRepurchaseOfCommonStock_33b720b4-18e1-4adf-a44e-8464d738888d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividendsCommonStock_9fc460bc-8eaa-44e7-b242-4c1d20a823c6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsOfDividendsCommonStock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_21a0d4ea-1d03-4094-81c7-96f755a1fd88" xlink:to="loc_us-gaap_PaymentsOfDividendsCommonStock_9fc460bc-8eaa-44e7-b242-4c1d20a823c6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_7a686c3e-8b1a-4839-bce6-58bdd881f6ea" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_21a0d4ea-1d03-4094-81c7-96f755a1fd88" xlink:to="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_7a686c3e-8b1a-4839-bce6-58bdd881f6ea" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_d4285ea8-de63-4dc6-9064-7a0628e2838b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_21a0d4ea-1d03-4094-81c7-96f755a1fd88" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_d4285ea8-de63-4dc6-9064-7a0628e2838b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_52fe48fb-0505-42ce-9021-455d71775df6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d1739c38-69de-4da7-b3bc-74137c954dcd" xlink:to="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_52fe48fb-0505-42ce-9021-455d71775df6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_6327f4a3-8e94-488b-a773-16bdf7b7414f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d1739c38-69de-4da7-b3bc-74137c954dcd" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_6327f4a3-8e94-488b-a773-16bdf7b7414f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_05d9f976-727b-425d-8142-c41110121fcd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d1739c38-69de-4da7-b3bc-74137c954dcd" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_05d9f976-727b-425d-8142-c41110121fcd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_b7a7db56-1d6b-40ef-9ba3-b318a765fcf1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfCashFlowsAbstract_d1739c38-69de-4da7-b3bc-74137c954dcd" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_b7a7db56-1d6b-40ef-9ba3-b318a765fcf1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfStockholdersEquityAbstract_f8cb4fbe-6e88-4495-8efa-d7f96b5d0b17" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementTable_ee20f001-dd9a-4fb5-976b-eaff0d658a84" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract_f8cb4fbe-6e88-4495-8efa-d7f96b5d0b17" xlink:to="loc_us-gaap_StatementTable_ee20f001-dd9a-4fb5-976b-eaff0d658a84" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_c4ea665b-3de3-4d1e-8335-e5346294685f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementTable_ee20f001-dd9a-4fb5-976b-eaff0d658a84" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_c4ea665b-3de3-4d1e-8335-e5346294685f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_c4ea665b-3de3-4d1e-8335-e5346294685f" xlink:to="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_803d1183-1ace-4423-8578-92eb4a656c1f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:to="loc_us-gaap_CommonStockMember_803d1183-1ace-4423-8578-92eb4a656c1f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalMember_5282d070-b0d9-4e19-aaeb-7189e62482df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:to="loc_us-gaap_AdditionalPaidInCapitalMember_5282d070-b0d9-4e19-aaeb-7189e62482df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsMember_f9df86fa-40ab-4578-b0a5-9fdbbc57abf5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:to="loc_us-gaap_RetainedEarningsMember_f9df86fa-40ab-4578-b0a5-9fdbbc57abf5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_5442d186-4ff7-4870-8229-40ba7ca5923e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_cb3a2182-8599-409b-9ae6-ab5f4566bf41" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_5442d186-4ff7-4870-8229-40ba7ca5923e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementLineItems_e1d5965c-b3ff-4949-9386-756d7b797cd5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementTable_ee20f001-dd9a-4fb5-976b-eaff0d658a84" xlink:to="loc_us-gaap_StatementLineItems_e1d5965c-b3ff-4949-9386-756d7b797cd5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementLineItems_e1d5965c-b3ff-4949-9386-756d7b797cd5" xlink:to="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_647f290c-8112-4583-b0f7-833b09847e53" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockholdersEquity_647f290c-8112-4583-b0f7-833b09847e53" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_ce828d64-c2bf-4811-83e3-dfc651afd49f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_CommonStockSharesIssued_ce828d64-c2bf-4811-83e3-dfc651afd49f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_2d58bc51-5f3b-4e1e-b6f7-d3c5e9267b44" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_2d58bc51-5f3b-4e1e-b6f7-d3c5e9267b44" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_2c4296cb-96fd-41df-9d30-845d94a2ef0a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_2c4296cb-96fd-41df-9d30-845d94a2ef0a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue_087be51f-777b-43aa-a638-90de5135e5bd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodValue"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodValue_087be51f-777b-43aa-a638-90de5135e5bd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares_fd88e8af-b40e-4a28-ab46-8b96b0020db8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodShares"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodShares_fd88e8af-b40e-4a28-ab46-8b96b0020db8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_830cf2a0-c6b0-40c2-b6fc-4ef2f8ac429f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_830cf2a0-c6b0-40c2-b6fc-4ef2f8ac429f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsCommonStockCash_190db675-3800-417c-888c-c81bf47f0b7c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsCommonStockCash"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_DividendsCommonStockCash_190db675-3800-417c-888c-c81bf47f0b7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_7330dce2-e2e2-4238-9d93-8df605e676ad" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_NetIncomeLoss_7330dce2-e2e2-4238-9d93-8df605e676ad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_1871b640-ae18-4169-81b1-22ce87d70308" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_1871b640-ae18-4169-81b1-22ce87d70308" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_46620ea6-d3ec-4314-83dd-e6fab24abd78" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_46620ea6-d3ec-4314-83dd-e6fab24abd78" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_4db987d6-8d82-4103-ab21-5a200144dee8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_4db987d6-8d82-4103-ab21-5a200144dee8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_b8a3fd55-2e58-49e2-a8f5-74c14e412305" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_b8a3fd55-2e58-49e2-a8f5-74c14e412305" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_6c99ee62-cb2e-482e-8db7-ee568d284f80" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_StockholdersEquity_6c99ee62-cb2e-482e-8db7-ee568d284f80" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_1d7a4dc4-1e3f-46b9-aedb-f4010af7b755" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_3ef431df-d6dd-4201-9d40-436a4c164b56" xlink:to="loc_us-gaap_CommonStockSharesIssued_1d7a4dc4-1e3f-46b9-aedb-f4010af7b755" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementOfStockholdersEquityAbstract_c9385517-ca49-47b7-8019-57b24ace5a6e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_b6f1d9ad-8aae-4821-8d08-442965e6531e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract_c9385517-ca49-47b7-8019-57b24ace5a6e" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_b6f1d9ad-8aae-4821-8d08-442965e6531e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax_db41ef82-8300-4f04-aade-ff679b2b72ee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract_c9385517-ca49-47b7-8019-57b24ace5a6e" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax_db41ef82-8300-4f04-aade-ff679b2b72ee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPolicies" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPolicies"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPolicies" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_3417c620-bd1e-409f-a2e9-9bb74be2fe92" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SignificantAccountingPoliciesTextBlock_e9f350a9-ce0f-4a04-af72-ecb08a12217a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SignificantAccountingPoliciesTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_3417c620-bd1e-409f-a2e9-9bb74be2fe92" xlink:to="loc_us-gaap_SignificantAccountingPoliciesTextBlock_e9f350a9-ce0f-4a04-af72-ecb08a12217a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesPolicies"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NatureOfOperationsPolicyTextBlock_5358797d-e6b2-4066-8aa1-1501ca6eac12" xlink:href="cgnx-20211231.xsd#cgnx_NatureOfOperationsPolicyTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_cgnx_NatureOfOperationsPolicyTextBlock_5358797d-e6b2-4066-8aa1-1501ca6eac12" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UseOfEstimates_30713f26-5bdc-48b4-b90f-88e7353bfa79" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UseOfEstimates"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_UseOfEstimates_30713f26-5bdc-48b4-b90f-88e7353bfa79" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConsolidationPolicyTextBlock_a9a51a46-0bb2-4a0b-9c37-dea6049ec90d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConsolidationPolicyTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_ConsolidationPolicyTextBlock_a9a51a46-0bb2-4a0b-9c37-dea6049ec90d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock_215de52e-ea1a-465d-a4e1-8d722bb03b50" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock_215de52e-ea1a-465d-a4e1-8d722bb03b50" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy_89e3ab5b-0ba6-4fa1-acbf-6464e2c1093a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueOfFinancialInstrumentsPolicy"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy_89e3ab5b-0ba6-4fa1-acbf-6464e2c1093a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsPolicyTextBlock_39517209-1a29-4500-91f2-0461f7bd2ee1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsPolicyTextBlock"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_CashAndCashEquivalentsPolicyTextBlock_39517209-1a29-4500-91f2-0461f7bd2ee1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryPolicyTextBlock_ff33981b-3290-4b67-a727-298a065b2287" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryPolicyTextBlock"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_InventoryPolicyTextBlock_ff33981b-3290-4b67-a727-298a065b2287" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_7ff35a8d-3229-4fa8-9f85-348c827ac832" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_7ff35a8d-3229-4fa8-9f85-348c827ac832" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_0cecf70a-e900-431c-a977-8bd8ab43ef55" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_0cecf70a-e900-431c-a977-8bd8ab43ef55" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsFiniteLivedPolicy_11828584-a44c-4c8a-895a-552e523b862a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsFiniteLivedPolicy"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_IntangibleAssetsFiniteLivedPolicy_11828584-a44c-4c8a-895a-552e523b862a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StandardProductWarrantyPolicy_fab34d34-2dfb-441d-ae9f-b1fc87c60e3e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StandardProductWarrantyPolicy"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_StandardProductWarrantyPolicy_fab34d34-2dfb-441d-ae9f-b1fc87c60e3e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_cae0b7be-3c44-4fc8-b297-44093172c6e6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingenciesPolicyTextBlock"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_cae0b7be-3c44-4fc8-b297-44093172c6e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRecognitionPolicyTextBlock_2c9f1cd7-a855-493c-a92f-b85bb9449de5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_RevenueRecognitionPolicyTextBlock_2c9f1cd7-a855-493c-a92f-b85bb9449de5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock_d6754bea-d577-4a6a-b8e5-1d6ebf9ff6e1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock_d6754bea-d577-4a6a-b8e5-1d6ebf9ff6e1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdvertisingCostsPolicyTextBlock_6e612d75-f4ff-43a0-a650-18b03ef03428" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_AdvertisingCostsPolicyTextBlock_6e612d75-f4ff-43a0-a650-18b03ef03428" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_f2e28613-37b3-434b-b690-1a3f054e4622" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_f2e28613-37b3-434b-b690-1a3f054e4622" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxPolicyTextBlock_4f704d2c-67ff-4c08-9751-ae035bc31bcc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_IncomeTaxPolicyTextBlock_4f704d2c-67ff-4c08-9751-ae035bc31bcc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerSharePolicyTextBlock_fb60d9de-c7bd-4751-ab33-fe9b4f6fcac3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerSharePolicyTextBlock"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_EarningsPerSharePolicyTextBlock_fb60d9de-c7bd-4751-ab33-fe9b4f6fcac3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock_f7099c50-e52d-4a34-9926-c8af3d0ab0e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock_f7099c50-e52d-4a34-9926-c8af3d0ab0e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock_88d099cc-1ed7-40ad-98f7-7c89e5a57ebc" xlink:href="cgnx-20211231.xsd#cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock_88d099cc-1ed7-40ad-98f7-7c89e5a57ebc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativesPolicyTextBlock_f8eb5571-27aa-40db-83be-35a8ef54e0ab" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativesPolicyTextBlock"/>
    <link:presentationArc order="21" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_DerivativesPolicyTextBlock_f8eb5571-27aa-40db-83be-35a8ef54e0ab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsPolicy_3b48e628-c788-46c5-acf0-62816ba34f63" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationsPolicy"/>
    <link:presentationArc order="22" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_BusinessCombinationsPolicy_3b48e628-c788-46c5-acf0-62816ba34f63" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentPolicyTextBlock_870542f2-5a93-4433-aa8a-a830715a6c11" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentPolicyTextBlock"/>
    <link:presentationArc order="23" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_InvestmentPolicyTextBlock_870542f2-5a93-4433-aa8a-a830715a6c11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeasesPolicyTextBlock_bea7821d-f286-4c0b-adcb-65071dba58ec" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock"/>
    <link:presentationArc order="24" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_LesseeLeasesPolicyTextBlock_bea7821d-f286-4c0b-adcb-65071dba58ec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InternalUseSoftwarePolicy_bc83a413-1962-47b9-aa90-b6689780a4ca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InternalUseSoftwarePolicy"/>
    <link:presentationArc order="25" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_InternalUseSoftwarePolicy_bc83a413-1962-47b9-aa90-b6689780a4ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy_2e4b42c7-9a78-44f4-9afa-411f5b70954d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy"/>
    <link:presentationArc order="26" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy_2e4b42c7-9a78-44f4-9afa-411f5b70954d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TradeAndOtherAccountsReceivablePolicy_34c1e8e2-28f1-49de-823a-9ee27b572640" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy"/>
    <link:presentationArc order="27" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_8d572bab-4be1-47a0-9ddf-b62174162790" xlink:to="loc_us-gaap_TradeAndOtherAccountsReceivablePolicy_34c1e8e2-28f1-49de-823a-9ee27b572640" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_e328a9fe-23ad-4eb2-ad9c-0900c81f61bb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum_4e5e9371-9a78-40fa-8cb1-06ee428af5b0" xlink:href="cgnx-20211231.xsd#cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_e328a9fe-23ad-4eb2-ad9c-0900c81f61bb" xlink:to="loc_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum_4e5e9371-9a78-40fa-8cb1-06ee428af5b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MaximumInvestmentOfCompanyInPartnership_65e4d4d2-a895-4609-8c4f-5e5ac44be96d" xlink:href="cgnx-20211231.xsd#cgnx_MaximumInvestmentOfCompanyInPartnership"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_e328a9fe-23ad-4eb2-ad9c-0900c81f61bb" xlink:to="loc_cgnx_MaximumInvestmentOfCompanyInPartnership_65e4d4d2-a895-4609-8c4f-5e5ac44be96d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_e328a9fe-23ad-4eb2-ad9c-0900c81f61bb" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_1bfb63f5-ec6b-4313-9912-eae669e133bb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_1bfb63f5-ec6b-4313-9912-eae669e133bb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_1bfb63f5-ec6b-4313-9912-eae669e133bb" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember_95d61f03-f800-4540-b4ec-0bce5b948fc0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_us-gaap_BuildingMember_95d61f03-f800-4540-b4ec-0bce5b948fc0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember_ff689e48-94a4-4e15-a44e-f3eb5c29e517" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingImprovementsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_us-gaap_BuildingImprovementsMember_ff689e48-94a4-4e15-a44e-f3eb5c29e517" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ComputerHardwareAndSoftwareMember_674ed89a-29a3-463c-b129-9824fb664a8a" xlink:href="cgnx-20211231.xsd#cgnx_ComputerHardwareAndSoftwareMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_cgnx_ComputerHardwareAndSoftwareMember_674ed89a-29a3-463c-b129-9824fb664a8a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_6f9ecc33-aba7-468a-a922-4299cf09120e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquipmentMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_us-gaap_EquipmentMember_6f9ecc33-aba7-468a-a922-4299cf09120e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_dca96994-d862-4529-826b-2089f4a10cbb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_8dd3714d-2bce-4c10-abc1-f182833e2d35" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_dca96994-d862-4529-826b-2089f4a10cbb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_cd88d810-c26d-4f5a-9814-b67a347c6b71" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:to="loc_srt_RangeAxis_cd88d810-c26d-4f5a-9814-b67a347c6b71" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_ac8ef4d9-40b7-43d6-a001-c6fdeb1a1d54" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_cd88d810-c26d-4f5a-9814-b67a347c6b71" xlink:to="loc_srt_RangeMember_ac8ef4d9-40b7-43d6-a001-c6fdeb1a1d54" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_41b97e04-c3d3-4c1a-9980-7338c30bdc96" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_ac8ef4d9-40b7-43d6-a001-c6fdeb1a1d54" xlink:to="loc_srt_MinimumMember_41b97e04-c3d3-4c1a-9980-7338c30bdc96" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_5db18d5b-6bef-4783-89fc-067f5492fb24" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_ac8ef4d9-40b7-43d6-a001-c6fdeb1a1d54" xlink:to="loc_srt_MaximumMember_5db18d5b-6bef-4783-89fc-067f5492fb24" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_060c5dd0-81e4-4166-9d8d-d1e8cb90ccb6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_44b31b74-8294-4b82-a09f-8b663e740135" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentLineItems_060c5dd0-81e4-4166-9d8d-d1e8cb90ccb6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_d99ef81d-9048-48ea-a5e0-d5c74b6adc01" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_060c5dd0-81e4-4166-9d8d-d1e8cb90ccb6" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_d99ef81d-9048-48ea-a5e0-d5c74b6adc01" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_e6363e61-f867-4cfd-867c-78a0cbde32c1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_e6363e61-f867-4cfd-867c-78a0cbde32c1" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_6ef6fa74-90e6-4695-a704-db302514a6af" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_6ef6fa74-90e6-4695-a704-db302514a6af" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_6ef6fa74-90e6-4695-a704-db302514a6af" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember_a9227897-2179-4e46-af9c-a88d2fc1fb8e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DistributionRightsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_us-gaap_DistributionRightsMember_a9227897-2179-4e46-af9c-a88d2fc1fb8e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_d942e122-9a88-4e61-9e14-347486607fe2" xlink:href="cgnx-20211231.xsd#cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_d942e122-9a88-4e61-9e14-347486607fe2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_3fa82a14-e4ac-4c92-8b97-12a03d30741e" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_3fa82a14-e4ac-4c92-8b97-12a03d30741e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_c1875583-39f1-429a-85ad-8647962df940" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_c1875583-39f1-429a-85ad-8647962df940" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_72b3cd88-71b0-4d9f-bb93-cb52bc0e63e7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_b09aab1b-1911-4ac0-8463-e0261b9c6d65" xlink:to="loc_us-gaap_TrademarksMember_72b3cd88-71b0-4d9f-bb93-cb52bc0e63e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_6a6eef4a-a662-430e-beb7-6c234799f1a3" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:to="loc_srt_RangeAxis_6a6eef4a-a662-430e-beb7-6c234799f1a3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_9adb0f9c-49fa-4dc9-8752-f0a1ce16b4f5" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_6a6eef4a-a662-430e-beb7-6c234799f1a3" xlink:to="loc_srt_RangeMember_9adb0f9c-49fa-4dc9-8752-f0a1ce16b4f5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_10e58332-b93a-4c23-93f2-edbb88a255aa" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_9adb0f9c-49fa-4dc9-8752-f0a1ce16b4f5" xlink:to="loc_srt_MinimumMember_10e58332-b93a-4c23-93f2-edbb88a255aa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_13804078-3b30-4ed8-9990-8e54f204f8c6" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_9adb0f9c-49fa-4dc9-8752-f0a1ce16b4f5" xlink:to="loc_srt_MaximumMember_13804078-3b30-4ed8-9990-8e54f204f8c6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_317dc0ea-930b-4c15-bb28-b34436b312a8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_2f03abad-a914-4f05-849c-76e20cef33d9" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_317dc0ea-930b-4c15-bb28-b34436b312a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife_29039ac2-020a-45b1-96e9-799275f4b969" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_317dc0ea-930b-4c15-bb28-b34436b312a8" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife_29039ac2-020a-45b1-96e9-799275f4b969" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesWarrantyDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_ace0cb42-2e8a-4f91-9ef8-9af83fa661dd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyTable_83ad5a63-644c-47f7-a9dc-a3a7912ddf7c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductLiabilityContingencyTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_ace0cb42-2e8a-4f91-9ef8-9af83fa661dd" xlink:to="loc_us-gaap_ProductLiabilityContingencyTable_83ad5a63-644c-47f7-a9dc-a3a7912ddf7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ProductLiabilityContingencyTable_83ad5a63-644c-47f7-a9dc-a3a7912ddf7c" xlink:to="loc_srt_RangeAxis_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_08450f00-09e2-4b43-92ce-ebde2fd292c1" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_66a10bc6-7ee4-4a3a-988a-7f3bd191aeec" xlink:to="loc_srt_RangeMember_08450f00-09e2-4b43-92ce-ebde2fd292c1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_44e8b73c-8711-4a44-a83d-ba2e5922327e" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_08450f00-09e2-4b43-92ce-ebde2fd292c1" xlink:to="loc_srt_MinimumMember_44e8b73c-8711-4a44-a83d-ba2e5922327e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_a0cd1580-785a-48f3-872d-cb0565d23370" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_08450f00-09e2-4b43-92ce-ebde2fd292c1" xlink:to="loc_srt_MaximumMember_a0cd1580-785a-48f3-872d-cb0565d23370" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyLineItems_131eada3-ebcd-4ce4-a322-11ad383deec3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductLiabilityContingencyLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ProductLiabilityContingencyTable_83ad5a63-644c-47f7-a9dc-a3a7912ddf7c" xlink:to="loc_us-gaap_ProductLiabilityContingencyLineItems_131eada3-ebcd-4ce4-a322-11ad383deec3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductWarrantyPeriod_231b27e9-ca8a-4c19-938f-53d9bcfa7933" xlink:href="cgnx-20211231.xsd#cgnx_ProductWarrantyPeriod"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ProductLiabilityContingencyLineItems_131eada3-ebcd-4ce4-a322-11ad383deec3" xlink:to="loc_cgnx_ProductWarrantyPeriod_231b27e9-ca8a-4c19-938f-53d9bcfa7933" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_99062477-6b51-4fc2-a182-8c4bbdbd3005" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable_377232c0-2044-4e3c-a630-7c626ed0fe29" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_99062477-6b51-4fc2-a182-8c4bbdbd3005" xlink:to="loc_us-gaap_DisaggregationOfRevenueTable_377232c0-2044-4e3c-a630-7c626ed0fe29" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_fa016074-8ce6-44c3-a9a8-445272c28a44" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_377232c0-2044-4e3c-a630-7c626ed0fe29" xlink:to="loc_srt_RangeAxis_fa016074-8ce6-44c3-a9a8-445272c28a44" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_a25f11ed-a079-414c-bacf-59197c8e883d" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_fa016074-8ce6-44c3-a9a8-445272c28a44" xlink:to="loc_srt_RangeMember_a25f11ed-a079-414c-bacf-59197c8e883d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_c5c8ff89-dc3c-40e9-8f8f-f16486a6e507" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_a25f11ed-a079-414c-bacf-59197c8e883d" xlink:to="loc_srt_MinimumMember_c5c8ff89-dc3c-40e9-8f8f-f16486a6e507" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_3c1fe999-3337-4abe-af5d-fbe0aa6e8fc6" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_a25f11ed-a079-414c-bacf-59197c8e883d" xlink:to="loc_srt_MaximumMember_3c1fe999-3337-4abe-af5d-fbe0aa6e8fc6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems_a7d23943-381b-4c4d-b2e9-4889f4c6973c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_377232c0-2044-4e3c-a630-7c626ed0fe29" xlink:to="loc_us-gaap_DisaggregationOfRevenueLineItems_a7d23943-381b-4c4d-b2e9-4889f4c6973c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RevenuePaymentTerms_004867d3-4ca7-4c4f-bad0-27b784ebbeb1" xlink:href="cgnx-20211231.xsd#cgnx_RevenuePaymentTerms"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_a7d23943-381b-4c4d-b2e9-4889f4c6973c" xlink:to="loc_cgnx_RevenuePaymentTerms_004867d3-4ca7-4c4f-bad0-27b784ebbeb1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_161cd648-d542-48aa-8a27-861f1e972d8a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdvertisingExpense_102d3596-ece2-484c-8513-3f2afa398567" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdvertisingExpense"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_161cd648-d542-48aa-8a27-861f1e972d8a" xlink:to="loc_us-gaap_AdvertisingExpense_102d3596-ece2-484c-8513-3f2afa398567" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingPoliciesAbstract_9bdb04ee-5340-44ad-afe1-31e95ea33cb6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_df41d44b-4b03-435d-9f86-470f6ff4da7b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_9bdb04ee-5340-44ad-afe1-31e95ea33cb6" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_df41d44b-4b03-435d-9f86-470f6ff4da7b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_09fbf023-372a-4586-970d-6ad77aaaf2c5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_df41d44b-4b03-435d-9f86-470f6ff4da7b" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_09fbf023-372a-4586-970d-6ad77aaaf2c5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_e012498b-a926-4ba6-897a-dc0eb6b3de4f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_09fbf023-372a-4586-970d-6ad77aaaf2c5" xlink:to="loc_us-gaap_EquityComponentDomain_e012498b-a926-4ba6-897a-dc0eb6b3de4f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_89b234b7-6ee3-4aeb-8fc8-2c24ee7b14e6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityComponentDomain_e012498b-a926-4ba6-897a-dc0eb6b3de4f" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_89b234b7-6ee3-4aeb-8fc8-2c24ee7b14e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_df41d44b-4b03-435d-9f86-470f6ff4da7b" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_ff312e7b-0883-43d2-b2b1-19e27c6b16a3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_ff312e7b-0883-43d2-b2b1-19e27c6b16a3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_01ec895f-982e-43ad-8635-f4a2553d7648" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_01ec895f-982e-43ad-8635-f4a2553d7648" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_b12c08dd-608e-4459-9a56-faa76ae9fb48" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_b12c08dd-608e-4459-9a56-faa76ae9fb48" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_721d65b6-61e3-4b5f-8e6d-8c187bf02790" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_d870a647-8cee-411d-a6db-05a7f79aa682" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_721d65b6-61e3-4b5f-8e6d-8c187bf02790" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/NewPronouncements" xlink:type="simple" xlink:href="cgnx-20211231.xsd#NewPronouncements"/>
  <link:presentationLink xlink:role="http://cognex.com/role/NewPronouncements" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingChangesAndErrorCorrectionsAbstract_65b317e7-bd2f-4358-86a9-29bf37b30c5a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingChangesAndErrorCorrectionsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock_04b222c3-5750-41a8-ac45-fa198132da99" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingChangesAndErrorCorrectionsAbstract_65b317e7-bd2f-4358-86a9-29bf37b30c5a" xlink:to="loc_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock_04b222c3-5750-41a8-ac45-fa198132da99" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/NewPronouncementsPolicies" xlink:type="simple" xlink:href="cgnx-20211231.xsd#NewPronouncementsPolicies"/>
  <link:presentationLink xlink:role="http://cognex.com/role/NewPronouncementsPolicies" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountingChangesAndErrorCorrectionsAbstract_290defcb-9ea0-41a5-b903-9a63744c00c6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountingChangesAndErrorCorrectionsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_fdd30338-42e9-4eb5-966c-683fdeaabeea" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingChangesAndErrorCorrectionsAbstract_290defcb-9ea0-41a5-b903-9a63744c00c6" xlink:to="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_fdd30338-42e9-4eb5-966c-683fdeaabeea" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurements" xlink:type="simple" xlink:href="cgnx-20211231.xsd#FairValueMeasurements"/>
  <link:presentationLink xlink:role="http://cognex.com/role/FairValueMeasurements" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract_db7b4ea1-5c62-4ca2-94e9-6792bef0420c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresTextBlock_ac287f4d-faaf-4f39-9c31-987bf433f3d8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_db7b4ea1-5c62-4ca2-94e9-6792bef0420c" xlink:to="loc_us-gaap_FairValueDisclosuresTextBlock_ac287f4d-faaf-4f39-9c31-987bf433f3d8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#FairValueMeasurementsTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/FairValueMeasurementsTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract_c95c5780-2abf-4f8c-bd69-8cda905f0293" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock_bcb3bbcf-add1-49db-8776-855d77d1a2d2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_c95c5780-2abf-4f8c-bd69-8cda905f0293" xlink:to="loc_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock_bcb3bbcf-add1-49db-8776-855d77d1a2d2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock_683230f1-06f8-44e7-9a1b-465eb8f0066a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_c95c5780-2abf-4f8c-bd69-8cda905f0293" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock_683230f1-06f8-44e7-9a1b-465eb8f0066a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract_2e024e82-74ec-4a1a-acf3-d14f0f5dd9be" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_2e024e82-74ec-4a1a-acf3-d14f0f5dd9be" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f63f228a-da03-42eb-89db-cf71a8de3175" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:to="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f63f228a-da03-42eb-89db-cf71a8de3175" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_f63f228a-da03-42eb-89db-cf71a8de3175" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel1Member_7e3818f3-63c1-48a0-b879-aa57647979f2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel1Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:to="loc_us-gaap_FairValueInputsLevel1Member_7e3818f3-63c1-48a0-b879-aa57647979f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel2Member_770a1c3d-2eba-4a30-8140-a3713c476cac" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel2Member"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:to="loc_us-gaap_FairValueInputsLevel2Member_770a1c3d-2eba-4a30-8140-a3713c476cac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel3Member_e3adfd1d-a816-4d0d-9263-c910f6c65774" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueInputsLevel3Member"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_b86faf3f-0f97-4078-94f1-b364974cf887" xlink:to="loc_us-gaap_FairValueInputsLevel3Member_e3adfd1d-a816-4d0d-9263-c910f6c65774" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b123fbe5-136a-4a53-a7f2-05e1ae964dbb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b123fbe5-136a-4a53-a7f2-05e1ae964dbb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_0a1fee7a-9681-4b16-9178-8e1b4cc4426f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b123fbe5-136a-4a53-a7f2-05e1ae964dbb" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_0a1fee7a-9681-4b16-9178-8e1b4cc4426f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_ff68817e-63c9-4ebd-ab52-f5972225a13a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain_0a1fee7a-9681-4b16-9178-8e1b4cc4426f" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_ff68817e-63c9-4ebd-ab52-f5972225a13a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_916aa2f1-12b2-48ee-bbfe-80eaa90da797" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_fc064f75-df0b-4d00-9a5f-fb0e0374c7e4" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_916aa2f1-12b2-48ee-bbfe-80eaa90da797" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetsFairValueDisclosureAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_916aa2f1-12b2-48ee-bbfe-80eaa90da797" xlink:to="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure_c19cfa5e-5860-4de4-9f70-24b602c3ae7a" xlink:href="cgnx-20211231.xsd#cgnx_MoneyMarketInstrumentsFairValueDisclosure"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure_c19cfa5e-5860-4de4-9f70-24b602c3ae7a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CorporateBondsFairValueDisclosure_1e66f092-1a54-41cf-8eaa-174a1db48609" xlink:href="cgnx-20211231.xsd#cgnx_CorporateBondsFairValueDisclosure"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_CorporateBondsFairValueDisclosure_1e66f092-1a54-41cf-8eaa-174a1db48609" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TreasuryBillsFairValueDisclosure_95a74950-e721-4385-ab83-8b7c7bac8044" xlink:href="cgnx-20211231.xsd#cgnx_TreasuryBillsFairValueDisclosure"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_TreasuryBillsFairValueDisclosure_95a74950-e721-4385-ab83-8b7c7bac8044" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure_1a570eb0-d15d-49f0-9085-9b80a1289d0b" xlink:href="cgnx-20211231.xsd#cgnx_AssetBackedSecuritiesFairValueDisclosure"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure_1a570eb0-d15d-49f0-9085-9b80a1289d0b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsFairValueDisclosure_fbe633f4-ebd0-4cbd-b0b5-86e12b1317de" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsFairValueDisclosure"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_AgencyBondsFairValueDisclosure_fbe633f4-ebd0-4cbd-b0b5-86e12b1317de" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SovereignBondsFairValueDisclosure_7a7d6d22-9ccd-424a-9913-bda6815a5aad" xlink:href="cgnx-20211231.xsd#cgnx_SovereignBondsFairValueDisclosure"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_SovereignBondsFairValueDisclosure_7a7d6d22-9ccd-424a-9913-bda6815a5aad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MunicipalBondsFairValueDisclosure_90a1bd0d-ca18-4f70-950c-227931994cf7" xlink:href="cgnx-20211231.xsd#cgnx_MunicipalBondsFairValueDisclosure"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_cgnx_MunicipalBondsFairValueDisclosure_90a1bd0d-ca18-4f70-950c-227931994cf7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_60a05b53-c894-4419-b8f6-d9feb27d7026" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyContractAssetFairValueDisclosure"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_13377b8e-0941-46bd-b1c4-bf5775dc5616" xlink:to="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_60a05b53-c894-4419-b8f6-d9feb27d7026" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_78b9eef8-c596-4d19-bc9f-0b01a6efa680" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueDisclosureAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_916aa2f1-12b2-48ee-bbfe-80eaa90da797" xlink:to="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_78b9eef8-c596-4d19-bc9f-0b01a6efa680" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_2b41cda1-7a23-4921-9196-8e690a5becf4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_78b9eef8-c596-4d19-bc9f-0b01a6efa680" xlink:to="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_2b41cda1-7a23-4921-9196-8e690a5becf4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract_3e4c2d94-9300-480f-96af-5426c9522e3a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_619d943b-1c15-4369-839d-2dc6bae5bf37" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_3e4c2d94-9300-480f-96af-5426c9522e3a" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_619d943b-1c15-4369-839d-2dc6bae5bf37" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_a357c6c9-45d2-400b-a457-6a67665547df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_619d943b-1c15-4369-839d-2dc6bae5bf37" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_a357c6c9-45d2-400b-a457-6a67665547df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d0d12294-22a6-4bed-bbc0-863a1e732a65" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_a357c6c9-45d2-400b-a457-6a67665547df" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d0d12294-22a6-4bed-bbc0-863a1e732a65" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member_6e7d5abb-6b2b-4b31-8939-8e23a6ef9f89" xlink:href="cgnx-20211231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d0d12294-22a6-4bed-bbc0-863a1e732a65" xlink:to="loc_cgnx_GViVenturesInc.Member_6e7d5abb-6b2b-4b31-8939-8e23a6ef9f89" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChiaroTechnologiesLLCMember_4f3dc4b4-cf15-4610-a401-342199bfcce9" xlink:href="cgnx-20211231.xsd#cgnx_ChiaroTechnologiesLLCMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d0d12294-22a6-4bed-bbc0-863a1e732a65" xlink:to="loc_cgnx_ChiaroTechnologiesLLCMember_4f3dc4b4-cf15-4610-a401-342199bfcce9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_ae552368-31b4-4b72-a18f-f8c1c8604e66" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_619d943b-1c15-4369-839d-2dc6bae5bf37" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_ae552368-31b4-4b72-a18f-f8c1c8604e66" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_ae552368-31b4-4b72-a18f-f8c1c8604e66" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_c80d100f-bcaf-4f7d-aa4b-74531adeee9e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_c80d100f-bcaf-4f7d-aa4b-74531adeee9e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueAdjustment_25d9e8df-191f-4a38-8c7c-d7869fb58da7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilitiesFairValueAdjustment"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:to="loc_us-gaap_LiabilitiesFairValueAdjustment_25d9e8df-191f-4a38-8c7c-d7869fb58da7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_6d88992a-ebed-46cf-8c01-158f3e6886f6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:to="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_6d88992a-ebed-46cf-8c01-158f3e6886f6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_fa21debb-33e0-4ed8-9059-72485bf24a6c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_3f7715fa-9289-46c0-ba69-93661f9758b9" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_fa21debb-33e0-4ed8-9059-72485bf24a6c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#FairValueMeasurementsAdditionalInformationDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresAbstract_43093062-aca7-4ce0-8f57-afef11b87b36" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueDisclosuresAbstract_43093062-aca7-4ce0-8f57-afef11b87b36" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_5714616a-84e9-449c-b046-5b1b23d42bce" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_5714616a-84e9-449c-b046-5b1b23d42bce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_c7805354-221a-44f4-bb04-b46fe90fac01" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_5714616a-84e9-449c-b046-5b1b23d42bce" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_c7805354-221a-44f4-bb04-b46fe90fac01" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member_a7c68ac5-75c9-4d52-a273-ff16afae44fc" xlink:href="cgnx-20211231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_c7805354-221a-44f4-bb04-b46fe90fac01" xlink:to="loc_cgnx_GViVenturesInc.Member_a7c68ac5-75c9-4d52-a273-ff16afae44fc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:to="loc_srt_RangeAxis_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_0a8c4a43-81b9-4fa4-a022-4c4d3599a066" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_1ae3ff7e-227e-4092-a4f1-6fd9db0871e4" xlink:to="loc_srt_RangeMember_0a8c4a43-81b9-4fa4-a022-4c4d3599a066" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_f07bbd2c-64ae-4361-aa17-a334587d00c4" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_0a8c4a43-81b9-4fa4-a022-4c4d3599a066" xlink:to="loc_srt_MinimumMember_f07bbd2c-64ae-4361-aa17-a334587d00c4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_cff81d0b-808c-4034-86d7-a5f5d7cc5627" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_0a8c4a43-81b9-4fa4-a022-4c4d3599a066" xlink:to="loc_srt_MaximumMember_cff81d0b-808c-4034-86d7-a5f5d7cc5627" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_c5fc6f26-0433-487b-9cfb-d924420b5632" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_c5fc6f26-0433-487b-9cfb-d924420b5632" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_8d567d74-58d9-4b74-9eba-50fdae1eea7e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_c5fc6f26-0433-487b-9cfb-d924420b5632" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_8d567d74-58d9-4b74-9eba-50fdae1eea7e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_2f14cac4-3774-4e5b-9118-d37723a25010" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain_8d567d74-58d9-4b74-9eba-50fdae1eea7e" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_2f14cac4-3774-4e5b-9118-d37723a25010" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_db5d2037-bb30-4dce-a2fc-4d438d428d76" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_c7998cf8-8d80-4de0-bc0d-a53182db3ad1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_c7998cf8-8d80-4de0-bc0d-a53182db3ad1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_80e50613-94f8-455c-901f-063d807fa924" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_80e50613-94f8-455c-901f-063d807fa924" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_871884d4-c2f2-4e1c-bf0e-8a32e530b0e3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_871884d4-c2f2-4e1c-bf0e-8a32e530b0e3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_b253c792-75c2-487d-9395-088ca59ffa40" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_b253c792-75c2-487d-9395-088ca59ffa40" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_027acd17-b57e-42ee-85f4-3de44933d5c3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_027acd17-b57e-42ee-85f4-3de44933d5c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings_aecacf24-f54f-4f3b-83ba-5d5805311c68" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings_aecacf24-f54f-4f3b-83ba-5d5805311c68" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_2f118674-2bff-475f-a420-7835a3e55bcc" xlink:href="cgnx-20211231.xsd#cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9e375132-a847-42ab-be72-fd6ec4bfd6dd" xlink:to="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_2f118674-2bff-475f-a420-7835a3e55bcc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestments" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestments"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestments" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_0f72400b-1893-47e3-9691-568e1ad59c39" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock_e3e8cec7-38d4-4175-86e6-ebdaf60d030b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_0f72400b-1893-47e3-9691-568e1ad59c39" xlink:to="loc_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock_e3e8cec7-38d4-4175-86e6-ebdaf60d030b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_33c13ab7-0f82-43c2-afc0-b0db8619a556" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock_5c2c59ec-1109-4e81-9376-447353f13ec0" xlink:href="cgnx-20211231.xsd#cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_33c13ab7-0f82-43c2-afc0-b0db8619a556" xlink:to="loc_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock_5c2c59ec-1109-4e81-9376-447353f13ec0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock_5ad3ac43-57d6-462c-9b98-c13f3e7d76d7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_33c13ab7-0f82-43c2-afc0-b0db8619a556" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock_5ad3ac43-57d6-462c-9b98-c13f3e7d76d7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock_28254c4a-758e-4c8f-9236-1262c6a8be0e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_33c13ab7-0f82-43c2-afc0-b0db8619a556" xlink:to="loc_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock_28254c4a-758e-4c8f-9236-1262c6a8be0e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock_fdef043e-fc1e-4b92-9bb9-b6955b7f2ceb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_33c13ab7-0f82-43c2-afc0-b0db8619a556" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock_fdef043e-fc1e-4b92-9bb9-b6955b7f2ceb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock_4ecd1ca9-bc70-4fe9-8843-9cf0a1968921" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_33c13ab7-0f82-43c2-afc0-b0db8619a556" xlink:to="loc_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock_4ecd1ca9-bc70-4fe9-8843-9cf0a1968921" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_0fb07f1a-2bce-4e6b-bb20-7641c8404b49" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_761e914a-3ed0-4fa3-9944-75fbf0676258" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_0fb07f1a-2bce-4e6b-bb20-7641c8404b49" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_761e914a-3ed0-4fa3-9944-75fbf0676258" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_761e914a-3ed0-4fa3-9944-75fbf0676258" xlink:to="loc_us-gaap_FinancialInstrumentAxis_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FinancialInstrumentAxis_a19d9223-fe00-48e0-8cb7-83a2bea5bfb9" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasuryBillSecuritiesMember_ebed0b53-779f-4477-acd4-67a50e8e5815" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasuryBillSecuritiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_USTreasuryBillSecuritiesMember_ebed0b53-779f-4477-acd4-67a50e8e5815" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_3d3a36ff-78f8-46e6-bfb9-e955ab8982b0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_3d3a36ff-78f8-46e6-bfb9-e955ab8982b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_cba4f5bf-0809-44af-af2e-4a00eccbb279" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_cba4f5bf-0809-44af-af2e-4a00eccbb279" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_90764448-9036-45dc-a849-d7f6473f0c62" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_90764448-9036-45dc-a849-d7f6473f0c62" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_aeb39ddd-9104-4730-8bce-71f77f51defd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_us-gaap_MunicipalBondsMember_aeb39ddd-9104-4730-8bce-71f77f51defd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_c89a24ff-7c61-422f-8e88-4496f8d9a7e8" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2c3bd8ad-a22c-45c1-82fe-f64d93820964" xlink:to="loc_cgnx_AgencyBondsMember_c89a24ff-7c61-422f-8e88-4496f8d9a7e8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_761e914a-3ed0-4fa3-9944-75fbf0676258" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_f968f807-af0f-4478-840d-0dd70bb6ab1c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Cash"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_Cash_f968f807-af0f-4478-840d-0dd70bb6ab1c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsAtCarryingValue_da527df9-6dc8-474b-9e65-93d18ef0e63d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_MoneyMarketFundsAtCarryingValue_da527df9-6dc8-474b-9e65-93d18ef0e63d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_7e27d5b4-67fa-4e96-a4f1-a193c4a0f9b3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_7e27d5b4-67fa-4e96-a4f1-a193c4a0f9b3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_86f9542e-60df-4a9f-8b80-fdc4e311c80b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_86f9542e-60df-4a9f-8b80-fdc4e311c80b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_5a6f0860-662d-4e63-ae2c-161a806a709f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_5a6f0860-662d-4e63-ae2c-161a806a709f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_c84894f4-fb87-426e-82c4-ae4519f8b5e5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_us-gaap_LongTermInvestments_c84894f4-fb87-426e-82c4-ae4519f8b5e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_481e81fc-8c82-47ee-b472-564d7fd8227c" xlink:href="cgnx-20211231.xsd#cgnx_CashCashEquivalentsShortTermAndLongTermInvestments"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_7c3d65b5-8d9b-4e4e-805e-19bbf7866e12" xlink:to="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_481e81fc-8c82-47ee-b472-564d7fd8227c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_bfd5b802-573f-4906-afd9-ad443646ffe1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DueFromForeignBanks_e16b29c1-9a9a-4300-a81b-ee09d775933f" xlink:href="cgnx-20211231.xsd#cgnx_DueFromForeignBanks"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_bfd5b802-573f-4906-afd9-ad443646ffe1" xlink:to="loc_cgnx_DueFromForeignBanks_e16b29c1-9a9a-4300-a81b-ee09d775933f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InterestReceivable_bd84eb11-b188-4c0e-a7cb-ff4f649dde9f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InterestReceivable"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_bfd5b802-573f-4906-afd9-ad443646ffe1" xlink:to="loc_us-gaap_InterestReceivable_bd84eb11-b188-4c0e-a7cb-ff4f649dde9f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain_76a6d6c4-6543-4812-999e-02c7b7a08c0e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleRealizedGain"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_bfd5b802-573f-4906-afd9-ad443646ffe1" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain_76a6d6c4-6543-4812-999e-02c7b7a08c0e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss_7054ea01-1325-473a-a433-b1be56948d0e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_bfd5b802-573f-4906-afd9-ad443646ffe1" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss_7054ea01-1325-473a-a433-b1be56948d0e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_ceffef05-678e-428d-98b6-39340b236101" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_ceffef05-678e-428d-98b6-39340b236101" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_b169ffaf-55e5-4340-9c72-bf97c1f1142f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:to="loc_us-gaap_FinancialInstrumentAxis_b169ffaf-55e5-4340-9c72-bf97c1f1142f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FinancialInstrumentAxis_b169ffaf-55e5-4340-9c72-bf97c1f1142f" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_363d1da1-9a4f-4e4d-aa69-69f036864568" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_363d1da1-9a4f-4e4d-aa69-69f036864568" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_5c8bae96-de3f-4545-b0c7-466a1c820711" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_5c8bae96-de3f-4545-b0c7-466a1c820711" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_2d81ae23-e631-4416-9f54-20c347bcbaa7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_2d81ae23-e631-4416-9f54-20c347bcbaa7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_30f4bb49-0cae-4fe4-9d21-1ddfcbd68fd9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_30f4bb49-0cae-4fe4-9d21-1ddfcbd68fd9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_9d38ab8c-fa88-463c-95a9-4e2fa8846edc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_us-gaap_MunicipalBondsMember_9d38ab8c-fa88-463c-95a9-4e2fa8846edc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_0f44a9b4-c9d2-4401-b8a4-648b13f127b7" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_5345e804-fef1-47bc-8172-777514a8a011" xlink:to="loc_cgnx_AgencyBondsMember_0f44a9b4-c9d2-4401-b8a4-648b13f127b7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeAxis_92765176-5107-441a-9f3e-65887c24d8f9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTypeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:to="loc_us-gaap_InvestmentTypeAxis_92765176-5107-441a-9f3e-65887c24d8f9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeCategorizationMember_e113da2d-6088-4a4d-846d-e677c8ae3805" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InvestmentTypeCategorizationMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InvestmentTypeAxis_92765176-5107-441a-9f3e-65887c24d8f9" xlink:to="loc_us-gaap_InvestmentTypeCategorizationMember_e113da2d-6088-4a4d-846d-e677c8ae3805" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShortTermInvestmentsMember_8e575e02-39a7-480d-9b73-4be31f4cddf3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShortTermInvestmentsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InvestmentTypeCategorizationMember_e113da2d-6088-4a4d-846d-e677c8ae3805" xlink:to="loc_us-gaap_ShortTermInvestmentsMember_8e575e02-39a7-480d-9b73-4be31f4cddf3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_LongTermInvestmentsMember_d4ef649f-911f-4e8c-8e74-34a8ac5167fc" xlink:href="cgnx-20211231.xsd#cgnx_LongTermInvestmentsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InvestmentTypeCategorizationMember_e113da2d-6088-4a4d-846d-e677c8ae3805" xlink:to="loc_cgnx_LongTermInvestmentsMember_d4ef649f-911f-4e8c-8e74-34a8ac5167fc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_f21f7fc2-88b1-4322-b038-0b24e024ebef" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_f3c3bd55-b7bf-48e1-8e38-00fb251ab4aa" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_f3c3bd55-b7bf-48e1-8e38-00fb251ab4aa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_99eb7f86-a0bd-4538-9e08-40270af7ae67" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_99eb7f86-a0bd-4538-9e08-40270af7ae67" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_59c6b443-b74a-45b9-a3fb-6503e6c6ab27" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_59c6b443-b74a-45b9-a3fb-6503e6c6ab27" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_8e220501-96de-4a51-a097-1b02f133424b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_2b2c67ba-3f59-4111-9c76-13a72a744547" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_8e220501-96de-4a51-a097-1b02f133424b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_aa91e002-c3f3-4f95-a4bb-94552fba2f07" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_a669d1b1-07fb-4707-82b1-545fc40728e7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_aa91e002-c3f3-4f95-a4bb-94552fba2f07" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_a669d1b1-07fb-4707-82b1-545fc40728e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_b6a15bf5-b66b-4bfe-98a2-a69583847355" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_a669d1b1-07fb-4707-82b1-545fc40728e7" xlink:to="loc_us-gaap_FinancialInstrumentAxis_b6a15bf5-b66b-4bfe-98a2-a69583847355" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FinancialInstrumentAxis_b6a15bf5-b66b-4bfe-98a2-a69583847355" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_0cfb7d7b-720d-4730-90bc-e745022ac159" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_0cfb7d7b-720d-4730-90bc-e745022ac159" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_a799a0d8-02b2-4e7c-b33d-a036435e97e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_a799a0d8-02b2-4e7c-b33d-a036435e97e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_0f12e3ba-0ddf-483d-8ddf-ba1d4c2c413d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_0f12e3ba-0ddf-483d-8ddf-ba1d4c2c413d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_8d03684f-96f4-4e50-8a74-4caf611ee55e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_8d03684f-96f4-4e50-8a74-4caf611ee55e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_fcde2b05-40d3-49fc-9bab-0a2f158133a5" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_cgnx_AgencyBondsMember_fcde2b05-40d3-49fc-9bab-0a2f158133a5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_94985bcb-b9a7-4784-a47c-65ec8c5c1ed8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_c3dadb11-b29d-48a8-8af6-9000ca2f050a" xlink:to="loc_us-gaap_MunicipalBondsMember_94985bcb-b9a7-4784-a47c-65ec8c5c1ed8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_a669d1b1-07fb-4707-82b1-545fc40728e7" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months_790264c2-e965-4473-bc33-72040518be69" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months_790264c2-e965-4473-bc33-72040518be69" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss_989aee37-10f9-4ed8-8995-7bd4db58fe96" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss_989aee37-10f9-4ed8-8995-7bd4db58fe96" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger_d3609bc5-03fc-43b0-9b46-e34d6cff186c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger_d3609bc5-03fc-43b0-9b46-e34d6cff186c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss_d2b8ce26-4dd0-49d4-a739-8096b484bc33" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss_d2b8ce26-4dd0-49d4-a739-8096b484bc33" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_839eb4af-242f-4022-97fa-92fc793b3d55" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition_839eb4af-242f-4022-97fa-92fc793b3d55" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_b787cca6-3aed-47b1-afb0-dcac3f07ea04" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_38776122-f5c1-4538-86c5-81679f84cd74" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss_b787cca6-3aed-47b1-afb0-dcac3f07ea04" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTotalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_16a751b0-c131-414c-b0e2-1ebb300e1abf" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_bbe4c1ef-51bf-41d0-be5c-54b89da82b14" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_16a751b0-c131-414c-b0e2-1ebb300e1abf" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_bbe4c1ef-51bf-41d0-be5c-54b89da82b14" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_fc7e2fde-5e7d-4085-b36f-bf9ec1b19d6b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_bbe4c1ef-51bf-41d0-be5c-54b89da82b14" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_fc7e2fde-5e7d-4085-b36f-bf9ec1b19d6b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal_b4c85e4e-5515-46bb-9db8-655809f6161c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_bbe4c1ef-51bf-41d0-be5c-54b89da82b14" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal_b4c85e4e-5515-46bb-9db8-655809f6161c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery_07c51569-87b7-4287-9b3c-db54ccdddd70" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_bbe4c1ef-51bf-41d0-be5c-54b89da82b14" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery_07c51569-87b7-4287-9b3c-db54ccdddd70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_b11918ef-0fdd-4717-b33d-8b4b729019b0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_bbe4c1ef-51bf-41d0-be5c-54b89da82b14" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_b11918ef-0fdd-4717-b33d-8b4b729019b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAbstract_de22a3d0-eea6-4ffc-9438-a38e754fbec6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_dabca335-5a53-4f05-9150-1dca455e1dfc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_de22a3d0-eea6-4ffc-9438-a38e754fbec6" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_dabca335-5a53-4f05-9150-1dca455e1dfc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_5bf8d56a-847d-4b2c-882c-0511aa0b3405" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_dabca335-5a53-4f05-9150-1dca455e1dfc" xlink:to="loc_us-gaap_FinancialInstrumentAxis_5bf8d56a-847d-4b2c-882c-0511aa0b3405" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FinancialInstrumentAxis_5bf8d56a-847d-4b2c-882c-0511aa0b3405" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_21e81141-1bff-4787-be67-ceeae2d90491" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_21e81141-1bff-4787-be67-ceeae2d90491" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_2e4926d3-e8f6-460c-b5e0-583188ac0a52" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_2e4926d3-e8f6-460c-b5e0-583188ac0a52" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_ad8c917e-8161-461b-bfb7-f02096bdb6dc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_ad8c917e-8161-461b-bfb7-f02096bdb6dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_bab32771-965f-4bb0-b58b-207244028718" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_bab32771-965f-4bb0-b58b-207244028718" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_a5b3aba5-9b4a-4282-846a-04c00af77b73" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_us-gaap_MunicipalBondsMember_a5b3aba5-9b4a-4282-846a-04c00af77b73" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_be416ae8-943f-427d-a145-ff9f3278d7d9" xlink:href="cgnx-20211231.xsd#cgnx_AgencyBondsMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_22a1c493-e81f-4e54-ac5f-efeaadedde9b" xlink:to="loc_cgnx_AgencyBondsMember_be416ae8-943f-427d-a145-ff9f3278d7d9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_dabca335-5a53-4f05-9150-1dca455e1dfc" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_18122f4c-d497-4ec7-a509-8194fe2f4cfe" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_18122f4c-d497-4ec7-a509-8194fe2f4cfe" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_63c7b3cd-fbb5-45de-9b2b-5329f07f5d0e" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_63c7b3cd-fbb5-45de-9b2b-5329f07f5d0e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_5b09b3e5-8498-42d5-a01c-bdaf6dc4a6c9" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_5b09b3e5-8498-42d5-a01c-bdaf6dc4a6c9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_47196d31-7196-4fe0-a744-807ab5cbfd38" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_47196d31-7196-4fe0-a744-807ab5cbfd38" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_1a3d781e-fc83-4003-b3bd-afda7a562d47" xlink:href="cgnx-20211231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_1a3d781e-fc83-4003-b3bd-afda7a562d47" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_0ced0ac1-0ac7-4412-a3cf-2eeb522b001b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_95eefe2c-bbce-408e-a23a-10c23dd0a677" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_0ced0ac1-0ac7-4412-a3cf-2eeb522b001b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/Inventories" xlink:type="simple" xlink:href="cgnx-20211231.xsd#Inventories"/>
  <link:presentationLink xlink:role="http://cognex.com/role/Inventories" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryDisclosureAbstract_142b494d-0a00-4e93-b0ef-8df591ba74dc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryDisclosureTextBlock_1d769f69-fa1a-4f4e-a70a-d017918448e2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryDisclosureAbstract_142b494d-0a00-4e93-b0ef-8df591ba74dc" xlink:to="loc_us-gaap_InventoryDisclosureTextBlock_1d769f69-fa1a-4f4e-a70a-d017918448e2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/InventoriesTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#InventoriesTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/InventoriesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryDisclosureAbstract_7b1d22bd-813c-4516-b387-572c9309f1c2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_d162894e-e785-40f3-b9eb-893b6520709c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfInventoryCurrentTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryDisclosureAbstract_7b1d22bd-813c-4516-b387-572c9309f1c2" xlink:to="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_d162894e-e785-40f3-b9eb-893b6520709c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/InventoriesInventoriesDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#InventoriesInventoriesDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/InventoriesInventoriesDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryDisclosureAbstract_40748698-8b04-47ac-87c6-130f21f06653" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryRawMaterialsNetOfReserves_a996b6d2-2dc4-4ca4-a72d-fe8ccdd651c5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryRawMaterialsNetOfReserves"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryDisclosureAbstract_40748698-8b04-47ac-87c6-130f21f06653" xlink:to="loc_us-gaap_InventoryRawMaterialsNetOfReserves_a996b6d2-2dc4-4ca4-a72d-fe8ccdd651c5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryWorkInProcessNetOfReserves_2934a3ed-109b-401f-a836-912614b96605" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryWorkInProcessNetOfReserves"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryDisclosureAbstract_40748698-8b04-47ac-87c6-130f21f06653" xlink:to="loc_us-gaap_InventoryWorkInProcessNetOfReserves_2934a3ed-109b-401f-a836-912614b96605" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_19f5f817-978c-41bd-ae10-4f48bfaee267" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryFinishedGoodsNetOfReserves"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryDisclosureAbstract_40748698-8b04-47ac-87c6-130f21f06653" xlink:to="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_19f5f817-978c-41bd-ae10-4f48bfaee267" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_0fdcd3c1-d21f-430e-ab22-343caf3ff10c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InventoryNet"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InventoryDisclosureAbstract_40748698-8b04-47ac-87c6-130f21f06653" xlink:to="loc_us-gaap_InventoryNet_0fdcd3c1-d21f-430e-ab22-343caf3ff10c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipment" xlink:type="simple" xlink:href="cgnx-20211231.xsd#PropertyPlantandEquipment"/>
  <link:presentationLink xlink:role="http://cognex.com/role/PropertyPlantandEquipment" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentAbstract_7f6c7d6b-d923-4812-b605-aa94c709f6d8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock_2cee8b2d-2b4f-4f8b-bc52-eef8d723c3d4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_7f6c7d6b-d923-4812-b605-aa94c709f6d8" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock_2cee8b2d-2b4f-4f8b-bc52-eef8d723c3d4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#PropertyPlantandEquipmentTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentAbstract_1065862e-87c3-47aa-ba07-25e577f0c854" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTextBlock_c29d75eb-d781-4854-aa68-28f7ad649539" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_1065862e-87c3-47aa-ba07-25e577f0c854" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTextBlock_c29d75eb-d781-4854-aa68-28f7ad649539" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentAbstract_2d4e0053-28d4-49c4-b5c7-fe27c8567479" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_d49f05e3-bace-435f-9219-db8716042d4e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_2d4e0053-28d4-49c4-b5c7-fe27c8567479" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_d49f05e3-bace-435f-9219-db8716042d4e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_d49f05e3-bace-435f-9219-db8716042d4e" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_34a29972-0ae4-4ba2-b21e-16d6ebeeb4bd" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LandMember_23aeac66-c410-42f8-a4e3-89e3e1560eec" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LandMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_LandMember_23aeac66-c410-42f8-a4e3-89e3e1560eec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember_1d79cc45-26d4-447d-8e69-79e36abc0647" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_BuildingMember_1d79cc45-26d4-447d-8e69-79e36abc0647" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember_71d38559-83ac-4c62-845c-7719e0adc0fc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BuildingImprovementsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_BuildingImprovementsMember_71d38559-83ac-4c62-845c-7719e0adc0fc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseholdImprovementsMember_64a1c289-b1f5-4bb4-9ead-ac34984d0377" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LeaseholdImprovementsMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_LeaseholdImprovementsMember_64a1c289-b1f5-4bb4-9ead-ac34984d0377" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_HardwareAndSoftwareMember_aa195068-8991-48d7-9e4a-ca7e061ca441" xlink:href="cgnx-20211231.xsd#cgnx_HardwareAndSoftwareMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_cgnx_HardwareAndSoftwareMember_aa195068-8991-48d7-9e4a-ca7e061ca441" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_ce82ce85-60c5-4566-ae89-9c7af891a6b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquipmentMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_EquipmentMember_ce82ce85-60c5-4566-ae89-9c7af891a6b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_98602f83-4424-4e35-af0d-2763013be77a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_ffc8d0ad-9c8b-45cb-926b-b2f6efa12c38" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_98602f83-4424-4e35-af0d-2763013be77a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_d49f05e3-bace-435f-9219-db8716042d4e" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_8369553a-09e6-4b5e-9bb4-6993f50b5418" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_8369553a-09e6-4b5e-9bb4-6993f50b5418" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_886ca391-2e22-46bf-9a5b-1f6a4a242b12" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_886ca391-2e22-46bf-9a5b-1f6a4a242b12" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_5b3e1a09-c5a2-4eda-8b9c-4e4910cc8868" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_b4ea61e3-3478-45e3-b13f-9441b2d2ff0a" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_5b3e1a09-c5a2-4eda-8b9c-4e4910cc8868" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#PropertyPlantandEquipmentAdditionalInformationDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentAbstract_d438c2f6-88e7-4c20-909b-50bb5f4f82c1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentDisposals_eb9b7a10-2129-4130-aef6-e603b0025fa6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertyPlantAndEquipmentDisposals"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_d438c2f6-88e7-4c20-909b-50bb5f4f82c1" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentDisposals_eb9b7a10-2129-4130-aef6-e603b0025fa6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1_e793407d-d243-4965-8c77-2725f2fc015d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_d438c2f6-88e7-4c20-909b-50bb5f4f82c1" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1_e793407d-d243-4965-8c77-2725f2fc015d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnDispositionOfAssets1_164aaf8e-26af-4017-943c-6173e0eaa1aa" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GainLossOnDispositionOfAssets1"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_d438c2f6-88e7-4c20-909b-50bb5f4f82c1" xlink:to="loc_us-gaap_GainLossOnDispositionOfAssets1_164aaf8e-26af-4017-943c-6173e0eaa1aa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/LeasesLeases" xlink:type="simple" xlink:href="cgnx-20211231.xsd#LeasesLeases"/>
  <link:presentationLink xlink:role="http://cognex.com/role/LeasesLeases" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeasesAbstract_2cb78cd6-279c-4299-8d6f-d96471c937a8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock_357c9f9d-a757-47c8-950e-8749e74ac4b0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeasesOfLessorDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_2cb78cd6-279c-4299-8d6f-d96471c937a8" xlink:to="loc_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock_357c9f9d-a757-47c8-950e-8749e74ac4b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeasesTextBlock_596f49ae-b124-4265-85f2-ef3c16db90f4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeasesTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_2cb78cd6-279c-4299-8d6f-d96471c937a8" xlink:to="loc_us-gaap_LesseeOperatingLeasesTextBlock_596f49ae-b124-4265-85f2-ef3c16db90f4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/LeasesTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#LeasesTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/LeasesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeasesAbstract_4e32e4c8-24f7-45b4-81f8-1ceaf88ded0f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_f9581b86-6848-485b-8b04-c3a293e3a12f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_4e32e4c8-24f7-45b4-81f8-1ceaf88ded0f" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_f9581b86-6848-485b-8b04-c3a293e3a12f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/LeasesDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#LeasesDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/LeasesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeasesAbstract_87d77684-4c79-4f96-bf63-dc54ce57d204" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeLeaseDescriptionTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_87d77684-4c79-4f96-bf63-dc54ce57d204" xlink:to="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_f5be97e6-3b79-4bab-a1cd-558f804313d0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:to="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_f5be97e6-3b79-4bab-a1cd-558f804313d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_e95dc85b-da23-4eab-b849-b5de3cf1d903" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis_f5be97e6-3b79-4bab-a1cd-558f804313d0" xlink:to="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_e95dc85b-da23-4eab-b849-b5de3cf1d903" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SouthboroughMassachusettsMember_8e95af27-d4c1-4f95-9e7c-2a4a8d191a9f" xlink:href="cgnx-20211231.xsd#cgnx_SouthboroughMassachusettsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain_e95dc85b-da23-4eab-b849-b5de3cf1d903" xlink:to="loc_cgnx_SouthboroughMassachusettsMember_8e95af27-d4c1-4f95-9e7c-2a4a8d191a9f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_6ed62348-4dfe-4f73-8e22-76d509bedda3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_6ed62348-4dfe-4f73-8e22-76d509bedda3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_1a7e9843-a412-4e43-b4f3-45e645b9100f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_6ed62348-4dfe-4f73-8e22-76d509bedda3" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_1a7e9843-a412-4e43-b4f3-45e645b9100f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_c65d2d14-6887-4c45-8fc1-b487be09e417" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_1a7e9843-a412-4e43-b4f3-45e645b9100f" xlink:to="loc_us-gaap_ContractTerminationMember_c65d2d14-6887-4c45-8fc1-b487be09e417" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeLeaseDescriptionLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionTable_946d3141-ec77-4a13-83be-8b5ca3335d20" xlink:to="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_1eb9e536-761e-4ce3-81b3-0f93df85a2a6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount_1eb9e536-761e-4ce3-81b3-0f93df85a2a6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseExpense_e67a79db-f201-451c-b62d-bc1b0135b069" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseExpense"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseExpense_e67a79db-f201-451c-b62d-bc1b0135b069" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasePayments_03317e5b-4d28-4781-ab41-7338da475e24" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeasePayments"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeasePayments_03317e5b-4d28-4781-ab41-7338da475e24" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_36af7114-9dc5-4da1-9c58-7b4dde58308f" xlink:href="cgnx-20211231.xsd#cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_36af7114-9dc5-4da1-9c58-7b4dde58308f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability_1e16e7df-02c0-4056-bb00-beadd7d9fd1b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseLiability_1e16e7df-02c0-4056-bb00-beadd7d9fd1b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_0f04259b-bb95-4b28-99ac-d06db3ed720d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_0f04259b-bb95-4b28-99ac-d06db3ed720d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_0c3d1a2f-699a-4e6b-9bd3-eb991bc452b1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_0c3d1a2f-699a-4e6b-9bd3-eb991bc452b1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_253c09eb-873a-460a-b574-f452a5a373b5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_253c09eb-873a-460a-b574-f452a5a373b5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_5463a54f-faca-45b9-81f4-6207b56a73e0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_5463a54f-faca-45b9-81f4-6207b56a73e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_b078f1a4-a53e-4112-b1a3-bb52d2cab30e" xlink:href="cgnx-20211231.xsd#cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_b078f1a4-a53e-4112-b1a3-bb52d2cab30e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_4b80064b-dea5-499f-a626-bcb0728d1a68" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_4b80064b-dea5-499f-a626-bcb0728d1a68" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLeaseIncome_14ba0d97-3100-4634-abd3-cf2691df076c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OperatingLeaseLeaseIncome"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LesseeLeaseDescriptionLineItems_c1c80778-7a57-47f9-ba61-2a51b1ffac01" xlink:to="loc_us-gaap_OperatingLeaseLeaseIncome_14ba0d97-3100-4634-abd3-cf2691df076c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/LeasesScheduleofPaymentsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#LeasesScheduleofPaymentsDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/LeasesScheduleofPaymentsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeasesAbstract_1848a23a-5dd6-48a8-b364-756181d0e81d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_8f601d66-f034-4aa0-afb8-96f8185c00a4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_1848a23a-5dd6-48a8-b364-756181d0e81d" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_8f601d66-f034-4aa0-afb8-96f8185c00a4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_db92fe11-d728-416c-92b9-7d6e4b1ac7c0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_1848a23a-5dd6-48a8-b364-756181d0e81d" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_db92fe11-d728-416c-92b9-7d6e4b1ac7c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_e4058552-c40e-4881-a97c-d589907c5dcb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_1848a23a-5dd6-48a8-b364-756181d0e81d" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_e4058552-c40e-4881-a97c-d589907c5dcb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_0b573220-af1d-437f-b04c-5e8ded19176a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_1848a23a-5dd6-48a8-b364-756181d0e81d" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_0b573220-af1d-437f-b04c-5e8ded19176a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_7e1e87f9-45a8-4eff-9ca0-38e3b3456c27" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_1848a23a-5dd6-48a8-b364-756181d0e81d" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_7e1e87f9-45a8-4eff-9ca0-38e3b3456c27" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_5ce55338-ea0f-4ecf-b0c9-7824e7f9d9ca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_1848a23a-5dd6-48a8-b364-756181d0e81d" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_5ce55338-ea0f-4ecf-b0c9-7824e7f9d9ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_fee9aea8-74ac-4b6c-8172-af3543431d10" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_1848a23a-5dd6-48a8-b364-756181d0e81d" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_fee9aea8-74ac-4b6c-8172-af3543431d10" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/Goodwill" xlink:type="simple" xlink:href="cgnx-20211231.xsd#Goodwill"/>
  <link:presentationLink xlink:role="http://cognex.com/role/Goodwill" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_6f06926b-55ba-4966-b42a-440682e6b569" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillDisclosureTextBlock_bf57e72b-b08f-4ec9-8183-e3ee2a9026f3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_6f06926b-55ba-4966-b42a-440682e6b569" xlink:to="loc_us-gaap_GoodwillDisclosureTextBlock_bf57e72b-b08f-4ec9-8183-e3ee2a9026f3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#GoodwillTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/GoodwillTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_fcec3f19-0cb7-4ea8-b847-68f897e64f08" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfGoodwillTextBlock_29975cf1-a66e-4d36-9d0d-c9fc5ee59002" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfGoodwillTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_fcec3f19-0cb7-4ea8-b847-68f897e64f08" xlink:to="loc_us-gaap_ScheduleOfGoodwillTextBlock_29975cf1-a66e-4d36-9d0d-c9fc5ee59002" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#GoodwillChangesintheCarryingValueofGoodwillDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_95ed7333-247f-40f3-94a0-e6a787b4e90e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfGoodwillTable_011841d7-93c7-4e7f-8d3c-192fd40d772f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfGoodwillTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_95ed7333-247f-40f3-94a0-e6a787b4e90e" xlink:to="loc_us-gaap_ScheduleOfGoodwillTable_011841d7-93c7-4e7f-8d3c-192fd40d772f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_73852000-be4d-44fc-ba51-4f0ed33a4639" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfGoodwillTable_011841d7-93c7-4e7f-8d3c-192fd40d772f" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_73852000-be4d-44fc-ba51-4f0ed33a4639" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_dddf471f-1c5d-4a16-8c0c-bcb5d3eb2f4b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_73852000-be4d-44fc-ba51-4f0ed33a4639" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_dddf471f-1c5d-4a16-8c0c-bcb5d3eb2f4b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_fe6d38af-cc91-4919-b4c6-6b41ad6c4811" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_dddf471f-1c5d-4a16-8c0c-bcb5d3eb2f4b" xlink:to="loc_cgnx_SualabCo.Ltd.Member_fe6d38af-cc91-4919-b4c6-6b41ad6c4811" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillLineItems_6bb0e223-4071-4220-8fe0-199ee65e348e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfGoodwillTable_011841d7-93c7-4e7f-8d3c-192fd40d772f" xlink:to="loc_us-gaap_GoodwillLineItems_6bb0e223-4071-4220-8fe0-199ee65e348e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillLineItems_6bb0e223-4071-4220-8fe0-199ee65e348e" xlink:to="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_0f3ccb5c-371e-4f92-bc55-9d7a24363d0d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:to="loc_us-gaap_Goodwill_0f3ccb5c-371e-4f92-bc55-9d7a24363d0d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillOtherIncreaseDecrease_7374119f-9126-452b-9a35-c904e58d13d4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillOtherIncreaseDecrease"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:to="loc_us-gaap_GoodwillOtherIncreaseDecrease_7374119f-9126-452b-9a35-c904e58d13d4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_f87f3c49-c1c9-4c5f-89b0-8f8a67c374f2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:to="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_f87f3c49-c1c9-4c5f-89b0-8f8a67c374f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_f3d33fbc-0085-4d0b-bdf6-0fcb55fbb436" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Goodwill"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillRollForward_68a8478c-4f86-4fe7-ad1a-93415f0da606" xlink:to="loc_us-gaap_Goodwill_f3d33fbc-0085-4d0b-bdf6-0fcb55fbb436" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#GoodwillAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/GoodwillAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_486697e1-f9f0-46f9-8d62-e605799fabb2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition_4ae0fced-e74d-4785-b07a-494a1a5177c2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForProceedsFromPreviousAcquisition"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_486697e1-f9f0-46f9-8d62-e605799fabb2" xlink:to="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition_4ae0fced-e74d-4785-b07a-494a1a5177c2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssets" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssets"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IntangibleAssets" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_bc72868a-da3d-401e-92f2-d22d4eec24f3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsDisclosureTextBlock_1eba8d4d-7b32-4c1c-9763-ee1d60d273b9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_bc72868a-da3d-401e-92f2-d22d4eec24f3" xlink:to="loc_us-gaap_IntangibleAssetsDisclosureTextBlock_1eba8d4d-7b32-4c1c-9763-ee1d60d273b9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssetsTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IntangibleAssetsTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_decc9526-149a-4ce0-8071-889278e73894" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock_6bf6ab2f-343e-47ea-910c-ac1b9c17d755" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_decc9526-149a-4ce0-8071-889278e73894" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock_6bf6ab2f-343e-47ea-910c-ac1b9c17d755" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock_4b44735c-bb6b-4045-acf0-a764ea8e16b4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_decc9526-149a-4ce0-8071-889278e73894" xlink:to="loc_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock_4b44735c-bb6b-4045-acf0-a764ea8e16b4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssetsAmortizedIntangibleAssetsDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_2ffd057b-573c-4ebf-aa1d-d254953e9360" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_2ffd057b-573c-4ebf-aa1d-d254953e9360" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_e6602398-1185-4efd-8c97-e399bfe73d5d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_e6602398-1185-4efd-8c97-e399bfe73d5d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_e6602398-1185-4efd-8c97-e399bfe73d5d" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember_d364d121-d990-412f-a534-76a597111407" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DistributionRightsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_DistributionRightsMember_d364d121-d990-412f-a534-76a597111407" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_e214fd4d-b9c9-408a-8853-cf1751cc67b3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_e214fd4d-b9c9-408a-8853-cf1751cc67b3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_1f20ffbc-4bc2-443e-a507-4bf203a34553" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_1f20ffbc-4bc2-443e-a507-4bf203a34553" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_439c5875-b3e5-46d6-8ee6-fa84fc47c74f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_439c5875-b3e5-46d6-8ee6-fa84fc47c74f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_03f13fe5-d965-4c0b-a1d5-8be31016850c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_03f13fe5-d965-4c0b-a1d5-8be31016850c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_2fa6d8d1-d144-4f9a-8637-64fb9f9d287e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_TrademarksMember_2fa6d8d1-d144-4f9a-8637-64fb9f9d287e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherIntangibleAssetsMember_0b496d80-ace9-4ad7-aaa6-c3ed42dfc2ed" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherIntangibleAssetsMember"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_19c65abc-3369-45ab-a747-3ebea24bc316" xlink:to="loc_us-gaap_OtherIntangibleAssetsMember_0b496d80-ace9-4ad7-aaa6-c3ed42dfc2ed" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_202b5623-d609-4097-905c-bcdf413dbf5e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_202b5623-d609-4097-905c-bcdf413dbf5e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_a6b142e5-f951-4ab5-916b-e2b2d6e0a0f3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_202b5623-d609-4097-905c-bcdf413dbf5e" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_a6b142e5-f951-4ab5-916b-e2b2d6e0a0f3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_fb2ebcfd-3e35-4cc8-9d33-018b64abbba1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_a6b142e5-f951-4ab5-916b-e2b2d6e0a0f3" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_fb2ebcfd-3e35-4cc8-9d33-018b64abbba1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_fe310a72-a21f-4d82-be8e-f50d6785c03e" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsGross_8c2cda5a-54cb-4ec0-ab59-d09d98aa3c15" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsGross_8c2cda5a-54cb-4ec0-ab59-d09d98aa3c15" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_9f79169d-2669-451a-a142-47d36be4c766" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_9f79169d-2669-451a-a142-47d36be4c766" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill_1b40e7d8-5e0d-4334-b705-8614f7fe4d1f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IntangibleAssetsNetIncludingGoodwill"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill_1b40e7d8-5e0d-4334-b705-8614f7fe4d1f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet_91686a30-55a7-40fc-9b62-3672b4f5aa20" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_3dac942d-8311-4de1-ae7e-76f49606b0c2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsNet_91686a30-55a7-40fc-9b62-3672b4f5aa20" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_28e9fdec-d210-4296-844f-3c8560d1872b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_3f9342c0-fde2-44ab-bc4a-136d86932896" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_28e9fdec-d210-4296-844f-3c8560d1872b" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_3f9342c0-fde2-44ab-bc4a-136d86932896" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_493a4a80-818c-46f3-806a-fd24cbe9d616" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_28e9fdec-d210-4296-844f-3c8560d1872b" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_493a4a80-818c-46f3-806a-fd24cbe9d616" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_d3dfb08e-78ee-41ac-8909-c1eec9fe2415" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_28e9fdec-d210-4296-844f-3c8560d1872b" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_d3dfb08e-78ee-41ac-8909-c1eec9fe2415" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_73ecf02d-40cc-43c5-9fd3-af21f0b89062" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_28e9fdec-d210-4296-844f-3c8560d1872b" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_73ecf02d-40cc-43c5-9fd3-af21f0b89062" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_eaf68573-d29c-4867-905f-590848f0bb9c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_28e9fdec-d210-4296-844f-3c8560d1872b" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_eaf68573-d29c-4867-905f-590848f0bb9c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_878dbce0-2052-4476-accd-4a4afb460ba1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_28e9fdec-d210-4296-844f-3c8560d1872b" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_878dbce0-2052-4476-accd-4a4afb460ba1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet_d59145fd-25ec-4ab6-96e1-b53d809eaf8d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_28e9fdec-d210-4296-844f-3c8560d1872b" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsNet_d59145fd-25ec-4ab6-96e1-b53d809eaf8d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IntangibleAssetsNarrativeDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IntangibleAssetsNarrativeDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_0fc02a42-7058-4356-a1a2-54fe53e529c2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract_0fc02a42-7058-4356-a1a2-54fe53e529c2" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_4d559a8f-5b25-45c1-977f-38a115197590" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_4d559a8f-5b25-45c1-977f-38a115197590" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_922c9456-2d02-4c5b-af77-a92f28198ed9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_4d559a8f-5b25-45c1-977f-38a115197590" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_922c9456-2d02-4c5b-af77-a92f28198ed9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_b0cac08c-e596-4cea-9413-f70088750c66" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_922c9456-2d02-4c5b-af77-a92f28198ed9" xlink:to="loc_cgnx_SualabCo.Ltd.Member_b0cac08c-e596-4cea-9413-f70088750c66" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EnShapeGmbHAbstract_57db3730-90a4-4292-a8af-406a7d697f7c" xlink:href="cgnx-20211231.xsd#cgnx_EnShapeGmbHAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_922c9456-2d02-4c5b-af77-a92f28198ed9" xlink:to="loc_cgnx_EnShapeGmbHAbstract_57db3730-90a4-4292-a8af-406a7d697f7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_9526e004-6328-4e01-bdbe-933e075a36ef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_9526e004-6328-4e01-bdbe-933e075a36ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2f6efe5d-292a-4826-9131-74ee05964401" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_9526e004-6328-4e01-bdbe-933e075a36ef" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2f6efe5d-292a-4826-9131-74ee05964401" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_d316e542-df83-4e1e-b1dc-fdb79b9d9a55" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2f6efe5d-292a-4826-9131-74ee05964401" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_d316e542-df83-4e1e-b1dc-fdb79b9d9a55" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_ac27c503-101e-4666-ae73-f803a3273181" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_2f6efe5d-292a-4826-9131-74ee05964401" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_ac27c503-101e-4666-ae73-f803a3273181" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_7740113a-5bed-4492-a6b9-63f2c899dd63" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_7740113a-5bed-4492-a6b9-63f2c899dd63" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_e93f42a0-df5f-4daf-b29b-5e1b16e3151f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_7740113a-5bed-4492-a6b9-63f2c899dd63" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_e93f42a0-df5f-4daf-b29b-5e1b16e3151f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_b3e547cf-d742-41cb-8484-0a0d909621f6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_e93f42a0-df5f-4daf-b29b-5e1b16e3151f" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_b3e547cf-d742-41cb-8484-0a0d909621f6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_0805e3df-e4db-426c-ac4b-5d60b7f0ada2" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_ef06903f-bcf3-4106-9844-b1e392027b11" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_ef06903f-bcf3-4106-9844-b1e392027b11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_23b04cb1-b74f-4395-94b4-d80edf590405" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_23b04cb1-b74f-4395-94b4-d80edf590405" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_19d8304d-50a8-4945-a514-f76bb64550a1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_19d8304d-50a8-4945-a514-f76bb64550a1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_939b224e-9bc2-46b5-858a-66b285af3a59" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_56793f87-bb4f-4368-8ac1-641502a181e9" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_939b224e-9bc2-46b5-858a-66b285af3a59" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpenses" xlink:type="simple" xlink:href="cgnx-20211231.xsd#AccruedExpenses"/>
  <link:presentationLink xlink:role="http://cognex.com/role/AccruedExpenses" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PayablesAndAccrualsAbstract_12cae768-987c-4850-bc87-44b87b7563aa" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock_81cdaa09-6db2-4528-afd5-4b6492db80e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PayablesAndAccrualsAbstract_12cae768-987c-4850-bc87-44b87b7563aa" xlink:to="loc_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock_81cdaa09-6db2-4528-afd5-4b6492db80e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#AccruedExpensesTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/AccruedExpensesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PayablesAndAccrualsAbstract_a0143db6-f67a-4c8c-a586-c99759591d36" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_5155353b-85b2-4c43-a1ac-fcf7795bd5a5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PayablesAndAccrualsAbstract_a0143db6-f67a-4c8c-a586-c99759591d36" xlink:to="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_5155353b-85b2-4c43-a1ac-fcf7795bd5a5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_28ac8f29-f59a-4070-b344-93381817487b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PayablesAndAccrualsAbstract_a0143db6-f67a-4c8c-a586-c99759591d36" xlink:to="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_28ac8f29-f59a-4070-b344-93381817487b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#AccruedExpensesConstituentsofAccruedExpensesDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PayablesAndAccrualsAbstract_590f85cb-51e6-46cd-aa85-c0e4cfe03828" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesCurrentAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PayablesAndAccrualsAbstract_590f85cb-51e6-46cd-aa85-c0e4cfe03828" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedBonusesCurrent_ea0686b7-5f25-4176-8157-690fe1c88e98" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedBonusesCurrent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:to="loc_us-gaap_AccruedBonusesCurrent_ea0686b7-5f25-4176-8157-690fe1c88e98" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedSalariesCurrent_1531a604-7b2a-43fe-918c-2acad1cf419f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedSalariesCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:to="loc_us-gaap_AccruedSalariesCurrent_1531a604-7b2a-43fe-918c-2acad1cf419f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RetirementAllowance_c8f8eae3-ca4a-4790-a766-915809740199" xlink:href="cgnx-20211231.xsd#cgnx_RetirementAllowance"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:to="loc_cgnx_RetirementAllowance_c8f8eae3-ca4a-4790-a766-915809740199" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_fea83866-be8d-4151-87ce-b214ae6cbbf9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrualClassifiedCurrent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:to="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_fea83866-be8d-4151-87ce-b214ae6cbbf9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedVacationCurrent_ec143045-0303-4a40-ae54-669c9da2ba7c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedVacationCurrent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:to="loc_us-gaap_AccruedVacationCurrent_ec143045-0303-4a40-ae54-669c9da2ba7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAccruedLiabilitiesCurrent_1890e308-6844-4e3c-9d05-151027a8d258" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherAccruedLiabilitiesCurrent"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:to="loc_us-gaap_OtherAccruedLiabilitiesCurrent_1890e308-6844-4e3c-9d05-151027a8d258" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_f40384a6-fbb4-43d3-b5ec-e68717f956b3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_0dd1a63a-7272-4ae9-82db-4512f4845aa0" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_f40384a6-fbb4-43d3-b5ec-e68717f956b3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#AccruedExpensesChangesinWarrantyObligationsDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PayablesAndAccrualsAbstract_7d9c6a17-fdec-4388-a51c-4037d4acb5ab" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_fc4eebc8-b547-4ea5-8395-05ebd226f20f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MovementInStandardProductWarrantyAccrualRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PayablesAndAccrualsAbstract_7d9c6a17-fdec-4388-a51c-4037d4acb5ab" xlink:to="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_fc4eebc8-b547-4ea5-8395-05ebd226f20f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrual_9e2e0f6c-fad2-4496-8c1d-42771a32ae2d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrual"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_fc4eebc8-b547-4ea5-8395-05ebd226f20f" xlink:to="loc_us-gaap_ProductWarrantyAccrual_9e2e0f6c-fad2-4496-8c1d-42771a32ae2d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued_f94ff09d-9ac6-4ffb-ac01-2d2625488bf5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrualWarrantiesIssued"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_fc4eebc8-b547-4ea5-8395-05ebd226f20f" xlink:to="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued_f94ff09d-9ac6-4ffb-ac01-2d2625488bf5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualPayments_def6d027-05cd-4c58-98e7-a7a6444e9b96" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrualPayments"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_fc4eebc8-b547-4ea5-8395-05ebd226f20f" xlink:to="loc_us-gaap_ProductWarrantyAccrualPayments_def6d027-05cd-4c58-98e7-a7a6444e9b96" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrual_133bc1f9-eb77-4b1e-997d-c353c2f793ec" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProductWarrantyAccrual"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_fc4eebc8-b547-4ea5-8395-05ebd226f20f" xlink:to="loc_us-gaap_ProductWarrantyAccrual_133bc1f9-eb77-4b1e-997d-c353c2f793ec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CommitmentsandContingencies" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CommitmentsandContingencies"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CommitmentsandContingencies" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_6870fe4d-dceb-4fc0-b681-e8ec28f09533" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_7b5499b5-fc52-4cb5-961f-a452311d45ad" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingenciesDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_6870fe4d-dceb-4fc0-b681-e8ec28f09533" xlink:to="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_7b5499b5-fc52-4cb5-961f-a452311d45ad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#CommitmentsandContingenciesAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_815a9fb1-a0de-47cf-8070-43e416aa8b0c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_3ec34f9e-4551-48b1-b939-a0aa4143b201" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_815a9fb1-a0de-47cf-8070-43e416aa8b0c" xlink:to="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_3ec34f9e-4551-48b1-b939-a0aa4143b201" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherInventoryPurchasedGoods_0a03ead9-c48a-4e05-975a-f9ba73e4479f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherInventoryPurchasedGoods"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CommitmentsAndContingenciesDisclosureAbstract_815a9fb1-a0de-47cf-8070-43e416aa8b0c" xlink:to="loc_us-gaap_OtherInventoryPurchasedGoods_0a03ead9-c48a-4e05-975a-f9ba73e4479f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IndemnificationProvisions" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IndemnificationProvisions"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IndemnificationProvisions" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GuaranteesAbstract_c47109d1-6765-4517-bf9c-c4a406193e52" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_GuaranteesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_IndemnificationProvisionsTextBlock_0d444288-1180-4745-9edb-f29c76d6dee7" xlink:href="cgnx-20211231.xsd#cgnx_IndemnificationProvisionsTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GuaranteesAbstract_c47109d1-6765-4517-bf9c-c4a406193e52" xlink:to="loc_cgnx_IndemnificationProvisionsTextBlock_0d444288-1180-4745-9edb-f29c76d6dee7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstruments" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstruments"/>
  <link:presentationLink xlink:role="http://cognex.com/role/DerivativeInstruments" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_3a4f8b3e-0715-4f70-920c-e9e95374832d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock_5ff5f286-4039-49aa-a3f5-547c83fbcf32" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_3a4f8b3e-0715-4f70-920c-e9e95374832d" xlink:to="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock_5ff5f286-4039-49aa-a3f5-547c83fbcf32" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_45d3500a-662f-4cd3-b4a1-bea401de7006" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock_0b861530-0d33-4ac9-9350-15a6bcb827f3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_45d3500a-662f-4cd3-b4a1-bea401de7006" xlink:to="loc_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock_0b861530-0d33-4ac9-9350-15a6bcb827f3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock_c6ef86b5-b274-4909-b193-e99288845eec" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_45d3500a-662f-4cd3-b4a1-bea401de7006" xlink:to="loc_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock_c6ef86b5-b274-4909-b193-e99288845eec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OffsettingAssetsTableTextBlock_51d5b2b0-fe75-4e8f-a3b5-991d5645d5dc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OffsettingAssetsTableTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_45d3500a-662f-4cd3-b4a1-bea401de7006" xlink:to="loc_us-gaap_OffsettingAssetsTableTextBlock_51d5b2b0-fe75-4e8f-a3b5-991d5645d5dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock_864ab4d3-a96c-435d-bd46-51e011b8e8ab" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_45d3500a-662f-4cd3-b4a1-bea401de7006" xlink:to="loc_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock_864ab4d3-a96c-435d-bd46-51e011b8e8ab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock_428be05c-a376-4db3-b811-60b06ce529fb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_45d3500a-662f-4cd3-b4a1-bea401de7006" xlink:to="loc_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock_428be05c-a376-4db3-b811-60b06ce529fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsAdditionalDetailsDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_3f843f1b-38f1-44f4-abe1-05e897fbcfe4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable_fb42331f-60b8-4ffc-a607-89284b5380c7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_3f843f1b-38f1-44f4-abe1-05e897fbcfe4" xlink:to="loc_us-gaap_DerivativeTable_fb42331f-60b8-4ffc-a607-89284b5380c7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_cc2aefbc-d003-424f-9f0b-f2fd3f157566" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeTable_fb42331f-60b8-4ffc-a607-89284b5380c7" xlink:to="loc_us-gaap_HedgingDesignationAxis_cc2aefbc-d003-424f-9f0b-f2fd3f157566" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_6c32e07f-303b-4900-8789-08b6373e89ae" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_HedgingDesignationAxis_cc2aefbc-d003-424f-9f0b-f2fd3f157566" xlink:to="loc_us-gaap_HedgingDesignationDomain_6c32e07f-303b-4900-8789-08b6373e89ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_4ba40e69-ebd1-4b36-a53e-7223cfaff05d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_HedgingDesignationDomain_6c32e07f-303b-4900-8789-08b6373e89ae" xlink:to="loc_us-gaap_NondesignatedMember_4ba40e69-ebd1-4b36-a53e-7223cfaff05d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems_6b800030-4da9-4910-ab4f-06af9e93e8d3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeTable_fb42331f-60b8-4ffc-a607-89284b5380c7" xlink:to="loc_us-gaap_DerivativeLineItems_6b800030-4da9-4910-ab4f-06af9e93e8d3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_d3047c77-6697-474e-b5ea-33f9255c101a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeLineItems_6b800030-4da9-4910-ab4f-06af9e93e8d3" xlink:to="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_d3047c77-6697-474e-b5ea-33f9255c101a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsOutstandingForwardContractsDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_8b87244a-dea2-4208-a063-7e87b88837d7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_8b87244a-dea2-4208-a063-7e87b88837d7" xlink:to="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_b522918b-3bad-4ecb-a7de-b866b8521bed" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:to="loc_us-gaap_HedgingDesignationAxis_b522918b-3bad-4ecb-a7de-b866b8521bed" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_65c13f29-a011-45bb-a6b6-12803702266e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_HedgingDesignationAxis_b522918b-3bad-4ecb-a7de-b866b8521bed" xlink:to="loc_us-gaap_HedgingDesignationDomain_65c13f29-a011-45bb-a6b6-12803702266e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_6d94c456-9460-4ec9-80fc-9b1a9f886653" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_HedgingDesignationDomain_65c13f29-a011-45bb-a6b6-12803702266e" xlink:to="loc_us-gaap_NondesignatedMember_6d94c456-9460-4ec9-80fc-9b1a9f886653" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CurrencyAxis_b4efdea2-9448-4ace-bc18-61685eb985ad" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_CurrencyAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:to="loc_srt_CurrencyAxis_b4efdea2-9448-4ace-bc18-61685eb985ad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_AllCurrenciesDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_CurrencyAxis_b4efdea2-9448-4ace-bc18-61685eb985ad" xlink:to="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_KRW_b3fb882d-ba91-4537-a350-cd4d1acf31dd" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_KRW"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_KRW_b3fb882d-ba91-4537-a350-cd4d1acf31dd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_EUR_7408dfae-25ad-43c7-9f34-e591c97ba024" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_EUR"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_EUR_7408dfae-25ad-43c7-9f34-e591c97ba024" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_JPY_d68cd07d-70ca-4bbd-8cfb-bac59c7967c8" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_JPY"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_JPY_d68cd07d-70ca-4bbd-8cfb-bac59c7967c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_MXN_808caaa1-2deb-4fae-998c-93ea0aecde19" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_MXN"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_MXN_808caaa1-2deb-4fae-998c-93ea0aecde19" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_GBP_0581b755-82ec-4166-a1ae-cbb97656b60f" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_GBP"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_GBP_0581b755-82ec-4166-a1ae-cbb97656b60f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_HUF_a789408b-de3e-4183-af6d-5b17faf1244c" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_HUF"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_HUF_a789408b-de3e-4183-af6d-5b17faf1244c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_TWD_024bfada-8d67-41ce-a592-deecf449b859" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_TWD"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_TWD_024bfada-8d67-41ce-a592-deecf449b859" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_CAD_5b0040d7-6666-423d-b193-2189afb1954c" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_CAD"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_CAD_5b0040d7-6666-423d-b193-2189afb1954c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_SGD_7c7a0859-7384-43e2-89fc-d5f7352be9ee" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_SGD"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_SGD_7c7a0859-7384-43e2-89fc-d5f7352be9ee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_CNY_4f4a16de-6dc6-4d94-932b-e2ad817a700c" xlink:href="https://xbrl.sec.gov/currency/2021/currency-2021.xsd#currency_CNY"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_4e25e968-eb48-46c8-9cd4-55c89b28da66" xlink:to="loc_currency_CNY_4f4a16de-6dc6-4d94-932b-e2ad817a700c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems_a4164524-65df-4fcd-9bc6-ee40e8c41302" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeTable_d4cdb8f6-ba6c-4fa3-891a-4bdd80daddcc" xlink:to="loc_us-gaap_DerivativeLineItems_a4164524-65df-4fcd-9bc6-ee40e8c41302" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetNotionalAmount_462511cb-955c-4e0d-ad59-a8dc443fee57" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssetNotionalAmount"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeLineItems_a4164524-65df-4fcd-9bc6-ee40e8c41302" xlink:to="loc_us-gaap_DerivativeAssetNotionalAmount_462511cb-955c-4e0d-ad59-a8dc443fee57" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsBalanceSheetLocationDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_e4446842-515c-47d7-8d53-2e3c81523d23" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_e4446842-515c-47d7-8d53-2e3c81523d23" xlink:to="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_482c1ef4-59ff-4acd-8328-e04c90326b85" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:to="loc_us-gaap_HedgingDesignationAxis_482c1ef4-59ff-4acd-8328-e04c90326b85" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_adbec664-cce8-4938-91cf-0bffb84f0f65" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_HedgingDesignationAxis_482c1ef4-59ff-4acd-8328-e04c90326b85" xlink:to="loc_us-gaap_HedgingDesignationDomain_adbec664-cce8-4938-91cf-0bffb84f0f65" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_017042fc-d9e4-48ee-b0eb-fe4fda5ffb5a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_HedgingDesignationDomain_adbec664-cce8-4938-91cf-0bffb84f0f65" xlink:to="loc_us-gaap_NondesignatedMember_017042fc-d9e4-48ee-b0eb-fe4fda5ffb5a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_771a0159-78df-4450-986a-61138987e462" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_771a0159-78df-4450-986a-61138987e462" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_c7c3dec9-3313-4a98-8114-784fd4bc1dee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_771a0159-78df-4450-986a-61138987e462" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_c7c3dec9-3313-4a98-8114-784fd4bc1dee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_9ecdd4ee-9296-4104-98ad-91de3084a210" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_c7c3dec9-3313-4a98-8114-784fd4bc1dee" xlink:to="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_9ecdd4ee-9296-4104-98ad-91de3084a210" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccruedExpensesMember_fcece28d-fd15-415d-81b9-8777ffc03977" xlink:href="cgnx-20211231.xsd#cgnx_AccruedExpensesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_c7c3dec9-3313-4a98-8114-784fd4bc1dee" xlink:to="loc_cgnx_AccruedExpensesMember_fcece28d-fd15-415d-81b9-8777ffc03977" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativesFairValueLineItems_48c764f8-1cf1-4050-b4d0-71d1800e1ded" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativesFairValueLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_a3e8a7d0-454d-414c-8f1e-656d00619e40" xlink:to="loc_us-gaap_DerivativesFairValueLineItems_48c764f8-1cf1-4050-b4d0-71d1800e1ded" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets_eda08f74-f66a-4d0d-87fc-1d67258768df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssets"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativesFairValueLineItems_48c764f8-1cf1-4050-b4d0-71d1800e1ded" xlink:to="loc_us-gaap_DerivativeAssets_eda08f74-f66a-4d0d-87fc-1d67258768df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities_d9bb2d61-c3ec-497a-837c-036329d7ca1c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLiabilities"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativesFairValueLineItems_48c764f8-1cf1-4050-b4d0-71d1800e1ded" xlink:to="loc_us-gaap_DerivativeLiabilities_d9bb2d61-c3ec-497a-837c-036329d7ca1c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_1820dd7a-312a-41fb-bec4-ce5fec92f3c6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeAsset_95e9ef03-39e2-49de-bddc-34f2b53a8ee8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeFairValueOfDerivativeAsset"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_1820dd7a-312a-41fb-bec4-ce5fec92f3c6" xlink:to="loc_us-gaap_DerivativeFairValueOfDerivativeAsset_95e9ef03-39e2-49de-bddc-34f2b53a8ee8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_2fd0db6e-f288-4305-9064-fa962a1a080f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_1820dd7a-312a-41fb-bec4-ce5fec92f3c6" xlink:to="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_2fd0db6e-f288-4305-9064-fa962a1a080f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets_ada52f8f-bb17-425c-87b9-b37b90ba9ea5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeAssets"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_1820dd7a-312a-41fb-bec4-ce5fec92f3c6" xlink:to="loc_us-gaap_DerivativeAssets_ada52f8f-bb17-425c-87b9-b37b90ba9ea5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeLiability_e5f507b6-56ef-4a3e-be6e-8874f4b4f021" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeFairValueOfDerivativeLiability"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_1820dd7a-312a-41fb-bec4-ce5fec92f3c6" xlink:to="loc_us-gaap_DerivativeFairValueOfDerivativeLiability_e5f507b6-56ef-4a3e-be6e-8874f4b4f021" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_6239e9ea-6b2e-4057-a30e-f288376453c8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_1820dd7a-312a-41fb-bec4-ce5fec92f3c6" xlink:to="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_6239e9ea-6b2e-4057-a30e-f288376453c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities_2d6829aa-8a0e-4694-a969-b6409f33ee46" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeLiabilities"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_1820dd7a-312a-41fb-bec4-ce5fec92f3c6" xlink:to="loc_us-gaap_DerivativeLiabilities_2d6829aa-8a0e-4694-a969-b6409f33ee46" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_4ad317d6-55bb-4ed5-9ce4-37e65052c65e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_4ad317d6-55bb-4ed5-9ce4-37e65052c65e" xlink:to="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_1835c612-2781-4c93-8051-00b59508524e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_1835c612-2781-4c93-8051-00b59508524e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_e10cd259-0166-41d6-a26a-ab157ab6e72c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_1835c612-2781-4c93-8051-00b59508524e" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_e10cd259-0166-41d6-a26a-ab157ab6e72c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyGainLossMember_5cd4a50d-0769-4562-a139-1974a07d349d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCurrencyGainLossMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_e10cd259-0166-41d6-a26a-ab157ab6e72c" xlink:to="loc_us-gaap_ForeignCurrencyGainLossMember_5cd4a50d-0769-4562-a139-1974a07d349d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_84651925-0358-4ab5-9df7-277bba5030d0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:to="loc_us-gaap_HedgingDesignationAxis_84651925-0358-4ab5-9df7-277bba5030d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_4d304c6a-8b1e-43e2-8a6a-e436b776c703" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_HedgingDesignationAxis_84651925-0358-4ab5-9df7-277bba5030d0" xlink:to="loc_us-gaap_HedgingDesignationDomain_4d304c6a-8b1e-43e2-8a6a-e436b776c703" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_a10f32d6-7434-4d94-a825-c1e589945dee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_HedgingDesignationDomain_4d304c6a-8b1e-43e2-8a6a-e436b776c703" xlink:to="loc_us-gaap_NondesignatedMember_a10f32d6-7434-4d94-a825-c1e589945dee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_9cbc69e1-141b-497e-9199-04fe90090e08" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeInstrumentsGainLossLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_b2c8bb20-ce21-4d09-a180-9c5e53e512e1" xlink:to="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_9cbc69e1-141b-497e-9199-04fe90090e08" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeGainLossOnDerivativeNet_17f1c6f0-a42c-4b4f-a5e6-44ab2c43b921" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DerivativeGainLossOnDerivativeNet"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_9cbc69e1-141b-497e-9199-04fe90090e08" xlink:to="loc_us-gaap_DerivativeGainLossOnDerivativeNet_17f1c6f0-a42c-4b4f-a5e6-44ab2c43b921" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognition" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RevenueRecognition"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RevenueRecognition" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_afed1c09-1d1f-4232-bf92-38397e443e95" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerTextBlock_6c79a1d1-4d6b-4cc9-a2d2-eeae729d1855" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_afed1c09-1d1f-4232-bf92-38397e443e95" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerTextBlock_6c79a1d1-4d6b-4cc9-a2d2-eeae729d1855" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RevenueRecognitionTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RevenueRecognitionTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_9c5d7ab0-20f1-4cca-a6af-a86791e16354" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTableTextBlock_bab27e7b-70d8-49db-8c68-f592d9d1658d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_9c5d7ab0-20f1-4cca-a6af-a86791e16354" xlink:to="loc_us-gaap_DisaggregationOfRevenueTableTextBlock_bab27e7b-70d8-49db-8c68-f592d9d1658d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock_7a8be7e2-f5da-4b67-9a9f-f17455b39450" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_9c5d7ab0-20f1-4cca-a6af-a86791e16354" xlink:to="loc_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock_7a8be7e2-f5da-4b67-9a9f-f17455b39450" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock_61ef4062-4ed9-4e3f-bca4-6aa36a992094" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_9c5d7ab0-20f1-4cca-a6af-a86791e16354" xlink:to="loc_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock_61ef4062-4ed9-4e3f-bca4-6aa36a992094" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionNarrativesDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RevenueRecognitionNarrativesDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RevenueRecognitionNarrativesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_3c381fbc-d518-4808-8913-3f9f4c701214" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostGross_6d289d40-01f4-471f-bee8-8cc80810c4c3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CapitalizedContractCostGross"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_3c381fbc-d518-4808-8913-3f9f4c701214" xlink:to="loc_us-gaap_CapitalizedContractCostGross_6d289d40-01f4-471f-bee8-8cc80810c4c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RevenueRecognitionDisaggregationbyGeographyandTypeDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_f33ad7cb-f9fd-458a-9a70-a80505df42d5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_f33ad7cb-f9fd-458a-9a70-a80505df42d5" xlink:to="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_66a0c7fb-daee-4011-895e-2ec589e12551" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:to="loc_srt_StatementGeographicalAxis_66a0c7fb-daee-4011-895e-2ec589e12551" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_66a0c7fb-daee-4011-895e-2ec589e12551" xlink:to="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_AmericasMember_486a549c-1cdb-4e27-94a2-308e49bf249c" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_AmericasMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:to="loc_srt_AmericasMember_486a549c-1cdb-4e27-94a2-308e49bf249c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_2e2d85d7-209c-4cbf-b621-e039b92bd127" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:to="loc_srt_EuropeMember_2e2d85d7-209c-4cbf-b621-e039b92bd127" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember_b004d8af-0786-4447-96b4-591b15fd0165" xlink:href="cgnx-20211231.xsd#cgnx_GreaterChinaMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:to="loc_cgnx_GreaterChinaMember_b004d8af-0786-4447-96b4-591b15fd0165" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherAsiaMember_f96f77e4-9d85-4a1d-8ecc-4e658a9bc4b2" xlink:href="cgnx-20211231.xsd#cgnx_OtherAsiaMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_9cdd7b24-aba8-4a05-b4df-946c369bc6cb" xlink:to="loc_cgnx_OtherAsiaMember_f96f77e4-9d85-4a1d-8ecc-4e658a9bc4b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductOrServiceAxis_148a9f57-9752-426a-8aac-18b109519de2" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductOrServiceAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:to="loc_srt_ProductOrServiceAxis_148a9f57-9752-426a-8aac-18b109519de2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductsAndServicesDomain_a41048b6-b355-4dab-b1ce-3aeae578ba27" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ProductsAndServicesDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ProductOrServiceAxis_148a9f57-9752-426a-8aac-18b109519de2" xlink:to="loc_srt_ProductsAndServicesDomain_a41048b6-b355-4dab-b1ce-3aeae578ba27" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StandardProductandServicesMember_4461944a-31f1-4531-99a2-b08558cd16d3" xlink:href="cgnx-20211231.xsd#cgnx_StandardProductandServicesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ProductsAndServicesDomain_a41048b6-b355-4dab-b1ce-3aeae578ba27" xlink:to="loc_cgnx_StandardProductandServicesMember_4461944a-31f1-4531-99a2-b08558cd16d3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember_65ad8478-7080-4c7c-9a7c-96eca12c5918" xlink:href="cgnx-20211231.xsd#cgnx_ApplicationofCustomerSpecificSolutionsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ProductsAndServicesDomain_a41048b6-b355-4dab-b1ce-3aeae578ba27" xlink:to="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember_65ad8478-7080-4c7c-9a7c-96eca12c5918" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems_7dade0a3-c24f-496d-83d4-de5e06d08418" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisaggregationOfRevenueLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_0fe27010-2c0d-4770-9c4f-70e871d584f2" xlink:to="loc_us-gaap_DisaggregationOfRevenueLineItems_7dade0a3-c24f-496d-83d4-de5e06d08418" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0fd88903-2550-4032-bbeb-af4fb69df71e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_7dade0a3-c24f-496d-83d4-de5e06d08418" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0fd88903-2550-4032-bbeb-af4fb69df71e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RevenueRecognitionAllowanceforCreditLossDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRecognitionAndDeferredRevenueAbstract_f42a5550-98f7-4ea3-ab68-059d3f71e5d9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueRecognitionAndDeferredRevenueAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_1acb1054-8074-4886-834d-138d62646a7c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueRecognitionAndDeferredRevenueAbstract_f42a5550-98f7-4ea3-ab68-059d3f71e5d9" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_1acb1054-8074-4886-834d-138d62646a7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable_50a9e0dc-744e-430a-8018-cf4c8835a689" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_1acb1054-8074-4886-834d-138d62646a7c" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable_50a9e0dc-744e-430a-8018-cf4c8835a689" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProvisionForDoubtfulAccounts_477fb8d9-a592-4575-8a8e-c1f0452f32cb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ProvisionForDoubtfulAccounts"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_1acb1054-8074-4886-834d-138d62646a7c" xlink:to="loc_us-gaap_ProvisionForDoubtfulAccounts_477fb8d9-a592-4575-8a8e-c1f0452f32cb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs_18553594-65fb-469b-93db-f0610a3f2138" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_1acb1054-8074-4886-834d-138d62646a7c" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs_18553594-65fb-469b-93db-f0610a3f2138" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment_85b9675b-e0f3-421c-822e-8c46292ed13c" xlink:href="cgnx-20211231.xsd#cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_1acb1054-8074-4886-834d-138d62646a7c" xlink:to="loc_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment_85b9675b-e0f3-421c-822e-8c46292ed13c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable_a85be6c9-1824-4fbd-b204-e8cb2002bfbd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllowanceForDoubtfulAccountsReceivable"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_1acb1054-8074-4886-834d-138d62646a7c" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable_a85be6c9-1824-4fbd-b204-e8cb2002bfbd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerAbstract_d84a8183-0845-4173-a519-9554ac7df372" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_3803b056-368f-4529-9e59-5ffb086088f9" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsLiabilityCurrentRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_d84a8183-0845-4173-a519-9554ac7df372" xlink:to="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_3803b056-368f-4529-9e59-5ffb086088f9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_0b647bf5-fd57-48c0-aad5-221b98bf3714" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractWithCustomerLiabilityCurrent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_3803b056-368f-4529-9e59-5ffb086088f9" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_0b647bf5-fd57-48c0-aad5-221b98bf3714" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease_cc11b693-55d5-4d77-97e4-eb96dbbbf5e7" xlink:href="cgnx-20211231.xsd#cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_3803b056-368f-4529-9e59-5ffb086088f9" xlink:to="loc_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease_cc11b693-55d5-4d77-97e4-eb96dbbbf5e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized_da9eba22-f89f-4fdf-b48c-689a47428f9c" xlink:href="cgnx-20211231.xsd#cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_3803b056-368f-4529-9e59-5ffb086088f9" xlink:to="loc_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized_da9eba22-f89f-4fdf-b48c-689a47428f9c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractLiabilityForeignExchangeRateChanges_b32e7074-42c1-4a31-bff0-9ab7b9af03e5" xlink:href="cgnx-20211231.xsd#cgnx_ContractLiabilityForeignExchangeRateChanges"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_3803b056-368f-4529-9e59-5ffb086088f9" xlink:to="loc_cgnx_ContractLiabilityForeignExchangeRateChanges_b32e7074-42c1-4a31-bff0-9ab7b9af03e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_4f88d6ba-f478-46e0-8335-ae23874edcff" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractWithCustomerLiabilityCurrent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_3803b056-368f-4529-9e59-5ffb086088f9" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_4f88d6ba-f478-46e0-8335-ae23874edcff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/ShareholdersEquity" xlink:type="simple" xlink:href="cgnx-20211231.xsd#ShareholdersEquity"/>
  <link:presentationLink xlink:role="http://cognex.com/role/ShareholdersEquity" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_f7bed6b9-3a3e-49b5-a674-e03757a21a6e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteDisclosureTextBlock_a1484c98-9368-49c1-9344-77737ace3f36" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockholdersEquityNoteDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_f7bed6b9-3a3e-49b5-a674-e03757a21a6e" xlink:to="loc_us-gaap_StockholdersEquityNoteDisclosureTextBlock_a1484c98-9368-49c1-9344-77737ace3f36" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#ShareholdersEquityAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityAbstract_0e795959-a03e-486b-a17a-78ff237d98a3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfStockByClassTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EquityAbstract_0e795959-a03e-486b-a17a-78ff237d98a3" xlink:to="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementClassOfStockAxis_bc866574-dfbb-486e-9ae8-f29f98d72f64" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StatementClassOfStockAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:to="loc_us-gaap_StatementClassOfStockAxis_bc866574-dfbb-486e-9ae8-f29f98d72f64" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockDomain_5775721f-ea0b-43dc-8614-16726131163b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ClassOfStockDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementClassOfStockAxis_bc866574-dfbb-486e-9ae8-f29f98d72f64" xlink:to="loc_us-gaap_ClassOfStockDomain_5775721f-ea0b-43dc-8614-16726131163b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_f91bfe23-017f-4a19-a1fe-8683e3943469" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockDomain_5775721f-ea0b-43dc-8614-16726131163b" xlink:to="loc_us-gaap_CommonStockMember_f91bfe23-017f-4a19-a1fe-8683e3943469" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramAxis_1d111811-57b7-4473-b643-740af1be0afc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareRepurchaseProgramAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:to="loc_us-gaap_ShareRepurchaseProgramAxis_1d111811-57b7-4473-b643-740af1be0afc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramDomain_13470b53-5618-4ccc-8d04-b78ed15fc382" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareRepurchaseProgramDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareRepurchaseProgramAxis_1d111811-57b7-4473-b643-740af1be0afc" xlink:to="loc_us-gaap_ShareRepurchaseProgramDomain_13470b53-5618-4ccc-8d04-b78ed15fc382" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramOctober2018Member_d7ab6404-f910-42ca-bbf6-f21a571bc7fb" xlink:href="cgnx-20211231.xsd#cgnx_RepurchaseProgramOctober2018Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_13470b53-5618-4ccc-8d04-b78ed15fc382" xlink:to="loc_cgnx_RepurchaseProgramOctober2018Member_d7ab6404-f910-42ca-bbf6-f21a571bc7fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramMarch2020Member_41bae8b4-abcd-49aa-b561-9a44a424cf6a" xlink:href="cgnx-20211231.xsd#cgnx_RepurchaseProgramMarch2020Member"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_13470b53-5618-4ccc-8d04-b78ed15fc382" xlink:to="loc_cgnx_RepurchaseProgramMarch2020Member_41bae8b4-abcd-49aa-b561-9a44a424cf6a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ClassOfStockLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfStockByClassTable_7c7fd16c-ad55-42fa-acc9-f01b02b05c8c" xlink:to="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_8b9bc3fb-51de-477f-b427-935b982bd9fd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_8b9bc3fb-51de-477f-b427-935b982bd9fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare_b7f196ec-5fe0-4b74-94aa-a2164fa7f68c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_PreferredStockParOrStatedValuePerShare_b7f196ec-5fe0-4b74-94aa-a2164fa7f68c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized_2515fafb-a4bf-4d93-933a-89a6e091f0d4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockSharesAuthorized"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_CommonStockSharesAuthorized_2515fafb-a4bf-4d93-933a-89a6e091f0d4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_e4f8c551-8497-4978-b3ce-a869aa17a308" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_e4f8c551-8497-4978-b3ce-a869aa17a308" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_VoteEntitledForEachCommonShareOutstanding_c3a96fef-c3d6-4dac-9351-b542995b011a" xlink:href="cgnx-20211231.xsd#cgnx_VoteEntitledForEachCommonShareOutstanding"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_cgnx_VoteEntitledForEachCommonShareOutstanding_c3a96fef-c3d6-4dac-9351-b542995b011a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_8c503975-fb64-4bd6-bfd1-087f2138a341" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_8c503975-fb64-4bd6-bfd1-087f2138a341" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares_ed2153de-3aac-4817-9c69-685b424dbf79" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodShares"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodShares_ed2153de-3aac-4817-9c69-685b424dbf79" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled_1908d023-d6bf-40c7-9eb4-7851f4fab831" xlink:href="cgnx-20211231.xsd#cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled_1908d023-d6bf-40c7-9eb4-7851f4fab831" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue_8ccf27a9-df54-4f96-abaa-34b9e5ca1b27" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodValue"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodValue_8ccf27a9-df54-4f96-abaa-34b9e5ca1b27" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareDeclared_ead9538b-5af3-4103-8aca-bed13d7e89d6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockDividendsPerShareDeclared"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_CommonStockDividendsPerShareDeclared_ead9538b-5af3-4103-8aca-bed13d7e89d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividends_e6c6918b-1b44-4086-b96f-462042302e7e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsOfDividends"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_PaymentsOfDividends_e6c6918b-1b44-4086-b96f-462042302e7e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1_4d4be769-2043-4afe-b2bb-cacdd990e9a8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1_4d4be769-2043-4afe-b2bb-cacdd990e9a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareCashPaid_4b3a16c5-ed69-4c24-8c22-d6a975fa1cce" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CommonStockDividendsPerShareCashPaid"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_CommonStockDividendsPerShareCashPaid_4b3a16c5-ed69-4c24-8c22-d6a975fa1cce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_318c76ff-2d84-4e4a-97da-1d8a111a5f22" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_318c76ff-2d84-4e4a-97da-1d8a111a5f22" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_c840533b-d698-4a62-829c-50c5c7f78a3c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_c840533b-d698-4a62-829c-50c5c7f78a3c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_9ebe8358-e33f-46b3-9b6d-c5646d988cb9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_ShareBasedCompensation_9ebe8358-e33f-46b3-9b6d-c5646d988cb9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_34cc74a1-b7db-419a-b8c1-45e1fd8fe9bd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_1bd9c26b-866e-4a19-b9c4-64677b461c16" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_34cc74a1-b7db-419a-b8c1-45e1fd8fe9bd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1_0319d3d6-988b-4e79-a106-8df3f4d1def1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensation" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensation"/>
  <link:presentationLink xlink:role="http://cognex.com/role/StockBasedCompensation" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_49098fc3-1708-4f29-a8ba-28fd119ed296" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock_6a21c502-8e25-4e4a-b971-6ca74e242287" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_49098fc3-1708-4f29-a8ba-28fd119ed296" xlink:to="loc_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock_6a21c502-8e25-4e4a-b971-6ca74e242287" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/StockBasedCompensationTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_d8d94f6e-8d5b-4e30-bcf7-7795fe4fa1f4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_0c40b3ef-b724-47cc-9243-41dcc492f21f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_d8d94f6e-8d5b-4e30-bcf7-7795fe4fa1f4" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_0c40b3ef-b724-47cc-9243-41dcc492f21f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_93fc2a17-352e-4935-b260-b66e0d406f17" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_d8d94f6e-8d5b-4e30-bcf7-7795fe4fa1f4" xlink:to="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_93fc2a17-352e-4935-b260-b66e0d406f17" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock_3fb7d683-7c01-453b-a620-ec5e3fbd22de" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_d8d94f6e-8d5b-4e30-bcf7-7795fe4fa1f4" xlink:to="loc_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock_3fb7d683-7c01-453b-a620-ec5e3fbd22de" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock_0651a7f0-02a7-4a77-82b8-44daf0e3289d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_d8d94f6e-8d5b-4e30-bcf7-7795fe4fa1f4" xlink:to="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock_0651a7f0-02a7-4a77-82b8-44daf0e3289d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_84b0285a-d418-4a8e-a8bf-e2d61b543c3c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_84b0285a-d418-4a8e-a8bf-e2d61b543c3c" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_1e478b52-4b85-49a5-83bb-40bfbc36ebe1" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:to="loc_srt_RangeAxis_1e478b52-4b85-49a5-83bb-40bfbc36ebe1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_7f6e60ed-eee6-46d0-b35b-cc1245a26d47" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_1e478b52-4b85-49a5-83bb-40bfbc36ebe1" xlink:to="loc_srt_RangeMember_7f6e60ed-eee6-46d0-b35b-cc1245a26d47" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_4c323de6-552a-483e-a3a1-aa8ff2662309" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_7f6e60ed-eee6-46d0-b35b-cc1245a26d47" xlink:to="loc_srt_MinimumMember_4c323de6-552a-483e-a3a1-aa8ff2662309" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_bccf818f-e5a3-4cf5-bb6b-386ce73f2f69" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_7f6e60ed-eee6-46d0-b35b-cc1245a26d47" xlink:to="loc_srt_MaximumMember_bccf818f-e5a3-4cf5-bb6b-386ce73f2f69" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_24ee3889-f748-492b-81ca-0685bdbbeb03" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:to="loc_us-gaap_AwardTypeAxis_24ee3889-f748-492b-81ca-0685bdbbeb03" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_24ee3889-f748-492b-81ca-0685bdbbeb03" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_60f8ca2c-7f32-4582-98c4-eaed628210c8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:to="loc_us-gaap_EmployeeStockOptionMember_60f8ca2c-7f32-4582-98c4-eaed628210c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PerformanceSharesMember_79c87cc6-310f-4eeb-9b65-8341fe071c70" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PerformanceSharesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:to="loc_us-gaap_PerformanceSharesMember_79c87cc6-310f-4eeb-9b65-8341fe071c70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockUnitsRSUMember_6eb944a9-8cda-4cda-8377-b007b5c2205b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockUnitsRSUMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_12299e38-07b4-4306-bef6-df0bb316cb48" xlink:to="loc_us-gaap_RestrictedStockUnitsRSUMember_6eb944a9-8cda-4cda-8377-b007b5c2205b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_6841dda8-c9eb-4532-9114-aed076ec1fe7" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_51b852b9-08a8-4e94-86c0-5ba26bf2709e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_51b852b9-08a8-4e94-86c0-5ba26bf2709e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_d5ecd25e-aca2-4dd6-9bfe-6e71c1d28079" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_d5ecd25e-aca2-4dd6-9bfe-6e71c1d28079" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExpirationPeriodOfStockOptionPlan_0edb9472-3826-4ca9-9f90-09584380fa39" xlink:href="cgnx-20211231.xsd#cgnx_ExpirationPeriodOfStockOptionPlan"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_ExpirationPeriodOfStockOptionPlan_0edb9472-3826-4ca9-9f90-09584380fa39" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NumberOfGroupsWithinEmployeePopulation_faa4595f-817c-4627-bd42-f6128f2e64f7" xlink:href="cgnx-20211231.xsd#cgnx_NumberOfGroupsWithinEmployeePopulation"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_NumberOfGroupsWithinEmployeePopulation_faa4595f-817c-4627-bd42-f6128f2e64f7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_0d9b210a-5bbb-48c1-84a6-d71f2bd1781d" xlink:href="cgnx-20211231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_0d9b210a-5bbb-48c1-84a6-d71f2bd1781d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_dd98520b-7adc-4fbc-8092-87c888de3a25" xlink:href="cgnx-20211231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_dd98520b-7adc-4fbc-8092-87c888de3a25" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_4b70385f-b4cf-4a78-a5b6-0fb1e73dc7ae" xlink:href="cgnx-20211231.xsd#cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_4b70385f-b4cf-4a78-a5b6-0fb1e73dc7ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_4a87f1df-c6a5-4675-8f75-945d0af9df49" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_4a87f1df-c6a5-4675-8f75-945d0af9df49" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_56982159-e3a5-40f0-bc03-db02e7784599" xlink:href="cgnx-20211231.xsd#cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_56982159-e3a5-40f0-bc03-db02e7784599" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_84979a49-5182-42ce-a80d-7c0b57de0237" xlink:href="cgnx-20211231.xsd#cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_84979a49-5182-42ce-a80d-7c0b57de0237" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_3eb94926-974c-4a1c-9843-1a1047c1b508" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_3eb94926-974c-4a1c-9843-1a1047c1b508" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_ffb8d5aa-ac07-438f-8952-975bd1b3b1a2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_ffb8d5aa-ac07-438f-8952-975bd1b3b1a2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_68bac357-83fb-482b-923c-3ec8839e0951" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_68bac357-83fb-482b-923c-3ec8839e0951" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_bf961201-efb4-4601-8a25-0d2eb8c0d1f4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_bf961201-efb4-4601-8a25-0d2eb8c0d1f4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_0f1a9152-5381-4603-b387-07bd4ee10abf" xlink:href="cgnx-20211231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_0f1a9152-5381-4603-b387-07bd4ee10abf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_b50e567f-1034-470c-9cb8-2d152cc061d3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_b50e567f-1034-470c-9cb8-2d152cc061d3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_340bd093-f2ac-498a-85f4-fa2c248851f8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_340bd093-f2ac-498a-85f4-fa2c248851f8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_49c21e4f-2063-42e9-88ae-61248ce56c0d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensation"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_eea1b2b2-dfdc-47b3-83c7-291ebfee8d1a" xlink:to="loc_us-gaap_ShareBasedCompensation_49c21e4f-2063-42e9-88ae-61248ce56c0d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_a73bec86-f3a0-42c5-a0f8-c6dffdeab051" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_a73bec86-f3a0-42c5-a0f8-c6dffdeab051" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_a423cfa2-5737-47ad-b183-d78ec8fdca61" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_a73bec86-f3a0-42c5-a0f8-c6dffdeab051" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_a423cfa2-5737-47ad-b183-d78ec8fdca61" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod_54131ddf-6738-4e02-9a47-fb743217f38b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_a73bec86-f3a0-42c5-a0f8-c6dffdeab051" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod_54131ddf-6738-4e02-9a47-fb743217f38b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_1c633231-6781-4822-9c7a-478477244e1e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_a73bec86-f3a0-42c5-a0f8-c6dffdeab051" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_1c633231-6781-4822-9c7a-478477244e1e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod_1d2d0981-4e60-4422-b959-4eb254cc0a4c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_a73bec86-f3a0-42c5-a0f8-c6dffdeab051" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod_1d2d0981-4e60-4422-b959-4eb254cc0a4c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_f81a2b2e-aab2-4ece-9d37-cfd4e56642b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_a73bec86-f3a0-42c5-a0f8-c6dffdeab051" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_f81a2b2e-aab2-4ece-9d37-cfd4e56642b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_a1bcc039-947f-462c-91a2-d5ee7ffb61ae" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_a1bcc039-947f-462c-91a2-d5ee7ffb61ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_205eaea4-f712-4035-a981-25b568b73b3d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_a1bcc039-947f-462c-91a2-d5ee7ffb61ae" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_205eaea4-f712-4035-a981-25b568b73b3d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_e3a86712-68b4-432e-ab5c-5776e8d27da7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_a1bcc039-947f-462c-91a2-d5ee7ffb61ae" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_e3a86712-68b4-432e-ab5c-5776e8d27da7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_1665fab6-654a-460b-ba09-80b3f84b2f4a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_a1bcc039-947f-462c-91a2-d5ee7ffb61ae" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_1665fab6-654a-460b-ba09-80b3f84b2f4a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice_91c658c8-3b23-4229-a1b7-0796ae048506" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_a1bcc039-947f-462c-91a2-d5ee7ffb61ae" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice_91c658c8-3b23-4229-a1b7-0796ae048506" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_b0504318-0c37-4b4b-b8e9-aa5f1c85e821" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_a1bcc039-947f-462c-91a2-d5ee7ffb61ae" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_b0504318-0c37-4b4b-b8e9-aa5f1c85e821" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_44b0a604-ec5b-4243-bdb2-5fbafdefe081" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_44b0a604-ec5b-4243-bdb2-5fbafdefe081" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber_bb174051-b437-4ed3-8a3e-a5bb2f1da22b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber_bb174051-b437-4ed3-8a3e-a5bb2f1da22b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_7c7af2bc-7912-4917-916b-c4dd99554068" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_7c7af2bc-7912-4917-916b-c4dd99554068" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_b335ede1-17f8-4861-a4f1-157754a120e7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_b335ede1-17f8-4861-a4f1-157754a120e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_c438c9c8-bc51-4c20-b6db-0ce7b953a44e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_c438c9c8-bc51-4c20-b6db-0ce7b953a44e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_f34945e9-7414-48f9-bb8d-487fc767b5c4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_f34945e9-7414-48f9-bb8d-487fc767b5c4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_49f5019c-f24b-428c-ac9d-4c0093faef59" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_49f5019c-f24b-428c-ac9d-4c0093faef59" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_b414cef7-f5ec-49d0-9642-fb6cdee38aa4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_b414cef7-f5ec-49d0-9642-fb6cdee38aa4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue_b2211e42-7680-4483-afe1-763e92aa0e68" xlink:href="cgnx-20211231.xsd#cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue_b2211e42-7680-4483-afe1-763e92aa0e68" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_ca36e50d-74b5-4d2d-b1a5-032ee038f552" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_661664d5-dfa4-44f4-b4fe-415757492203" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_ca36e50d-74b5-4d2d-b1a5-032ee038f552" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_b43b28c2-1bee-4039-b4a7-97e14d7edbd3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_8af1486f-01dd-4f2f-8cfb-4e303f90ac79" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_b43b28c2-1bee-4039-b4a7-97e14d7edbd3" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_8af1486f-01dd-4f2f-8cfb-4e303f90ac79" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_bcc8afc9-076d-498f-ae0a-8a387099a7a5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_8af1486f-01dd-4f2f-8cfb-4e303f90ac79" xlink:to="loc_us-gaap_AwardTypeAxis_bcc8afc9-076d-498f-ae0a-8a387099a7a5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6f61eda2-b5e4-413c-817b-1857a7547313" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_bcc8afc9-076d-498f-ae0a-8a387099a7a5" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6f61eda2-b5e4-413c-817b-1857a7547313" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_d97ac1a4-7aad-422d-a4ec-a823fedcf162" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6f61eda2-b5e4-413c-817b-1857a7547313" xlink:to="loc_us-gaap_RestrictedStockMember_d97ac1a4-7aad-422d-a4ec-a823fedcf162" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_7e36cb9e-c3fa-4843-b452-248d07b638d2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_6f61eda2-b5e4-413c-817b-1857a7547313" xlink:to="loc_us-gaap_EmployeeStockOptionMember_7e36cb9e-c3fa-4843-b452-248d07b638d2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_8af1486f-01dd-4f2f-8cfb-4e303f90ac79" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_d64ae820-26de-4aaf-8b2b-9142e4568d87" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_d64ae820-26de-4aaf-8b2b-9142e4568d87" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_889895f3-3d67-4a67-bf4b-d89ce30ea8a2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_889895f3-3d67-4a67-bf4b-d89ce30ea8a2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_9c077c86-82a1-4a1a-b467-f2a46586c082" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_9c077c86-82a1-4a1a-b467-f2a46586c082" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_a74dff4a-fc7d-470c-858b-a4078e803415" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_272e7b50-5e09-42bd-a8ab-c6e6c26108d1" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_a74dff4a-fc7d-470c-858b-a4078e803415" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_54da1bb7-f731-4383-9225-b04509e42486" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_2b63fd14-033c-4943-8f9e-ef04c30cdd09" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_54da1bb7-f731-4383-9225-b04509e42486" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_2b63fd14-033c-4943-8f9e-ef04c30cdd09" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_448ff42d-13f2-49a7-bf56-a7fabd23077f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_2b63fd14-033c-4943-8f9e-ef04c30cdd09" xlink:to="loc_us-gaap_AwardTypeAxis_448ff42d-13f2-49a7-bf56-a7fabd23077f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f84a8e61-1985-4164-a004-c0028c3f56e7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AwardTypeAxis_448ff42d-13f2-49a7-bf56-a7fabd23077f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f84a8e61-1985-4164-a004-c0028c3f56e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_17c47bd1-1d52-4f9c-9484-84d63e4db0b7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f84a8e61-1985-4164-a004-c0028c3f56e7" xlink:to="loc_us-gaap_RestrictedStockMember_17c47bd1-1d52-4f9c-9484-84d63e4db0b7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_6b5135a9-6e49-471a-87b8-3e5c81b6ea11" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_2b63fd14-033c-4943-8f9e-ef04c30cdd09" xlink:to="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_6b5135a9-6e49-471a-87b8-3e5c81b6ea11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_6b5135a9-6e49-471a-87b8-3e5c81b6ea11" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_6b5f25b3-4ab0-43fa-a2fa-3eecd041197b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_6b5f25b3-4ab0-43fa-a2fa-3eecd041197b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_35dd356b-b3e9-46a5-845c-0e869a2f665c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_35dd356b-b3e9-46a5-845c-0e869a2f665c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_acc9d41a-6de0-45fd-931a-1a59cee15e0b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_acc9d41a-6de0-45fd-931a-1a59cee15e0b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_83ef7145-3ed1-4ab2-975b-c4eeeb887da4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_83ef7145-3ed1-4ab2-975b-c4eeeb887da4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_28820de6-4f8f-4d6d-aee0-8b112206c8c1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_7019c0a6-0094-400c-9c21-fe270d862c1a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_28820de6-4f8f-4d6d-aee0-8b112206c8c1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_6b5135a9-6e49-471a-87b8-3e5c81b6ea11" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_e1a2b60a-d48d-4ff2-b96d-31122dd2f035" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_e1a2b60a-d48d-4ff2-b96d-31122dd2f035" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_10c47237-7277-4927-978f-dca98ee6ff84" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_10c47237-7277-4927-978f-dca98ee6ff84" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_54be6353-6d84-4dad-8bb1-5be87caeac47" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_54be6353-6d84-4dad-8bb1-5be87caeac47" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_1cda5ba1-a2bc-4461-ac8a-d2160061027c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_1cda5ba1-a2bc-4461-ac8a-d2160061027c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_3ea35689-4325-41d0-948c-07867c9cb01a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_71e695dd-4af2-4537-9feb-cc6e5b15394a" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_3ea35689-4325-41d0-948c-07867c9cb01a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_c9daeb36-a781-4b22-a58e-62a5722ec55c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_8dbd95d0-0705-4d4b-acff-04afc4459408" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_c9daeb36-a781-4b22-a58e-62a5722ec55c" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_8dbd95d0-0705-4d4b-acff-04afc4459408" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b28e354f-2372-4dac-9e30-82f2627f6789" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_c9daeb36-a781-4b22-a58e-62a5722ec55c" xlink:to="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b28e354f-2372-4dac-9e30-82f2627f6789" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_e9c27198-84ba-455b-973e-3afe4789acca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b28e354f-2372-4dac-9e30-82f2627f6789" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_e9c27198-84ba-455b-973e-3afe4789acca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_e9c27198-84ba-455b-973e-3afe4789acca" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductCostOfRevenueMember_08590647-31f0-4efc-9b88-16f7dd650849" xlink:href="cgnx-20211231.xsd#cgnx_ProductCostOfRevenueMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:to="loc_cgnx_ProductCostOfRevenueMember_08590647-31f0-4efc-9b88-16f7dd650849" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpenseMember_b84b7358-f521-4696-99d9-8aca04421698" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpenseMember_b84b7358-f521-4696-99d9-8aca04421698" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SellingGeneralAndAdministrativeMember_69e8c8f5-1456-4cf7-8e5b-6a7bec929486" xlink:href="cgnx-20211231.xsd#cgnx_SellingGeneralAndAdministrativeMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_3e9f3922-57a7-49ec-a00d-f2c2660410eb" xlink:to="loc_cgnx_SellingGeneralAndAdministrativeMember_69e8c8f5-1456-4cf7-8e5b-6a7bec929486" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b28e354f-2372-4dac-9e30-82f2627f6789" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_0e95ce10-33b6-4111-9416-b23642105268" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_0e95ce10-33b6-4111-9416-b23642105268" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_a75d68c5-6e1d-4328-961f-d1a0592ca038" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_a75d68c5-6e1d-4328-961f-d1a0592ca038" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_6666da91-b030-441c-a0f3-0f1ec3ec423f" xlink:href="cgnx-20211231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_2f0b5653-d3b5-4fe7-9ddc-8dc4f487b87b" xlink:to="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_6666da91-b030-441c-a0f3-0f1ec3ec423f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/EmployeeSavingsPlan" xlink:type="simple" xlink:href="cgnx-20211231.xsd#EmployeeSavingsPlan"/>
  <link:presentationLink xlink:role="http://cognex.com/role/EmployeeSavingsPlan" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_c5ece5bb-f0a4-40db-99f4-1fe02361276f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CompensationAndRetirementDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock_729c21c7-79e3-4f90-9b0f-6410f7de6cab" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_c5ece5bb-f0a4-40db-99f4-1fe02361276f" xlink:to="loc_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock_729c21c7-79e3-4f90-9b0f-6410f7de6cab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#EmployeeSavingsPlanAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CompensationAndRetirementDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan_e441c39f-4f35-48c2-a286-e9f0679e7110" xlink:href="cgnx-20211231.xsd#cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan_e441c39f-4f35-48c2-a286-e9f0679e7110" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent_7e89a16a-f843-4794-acfe-eaedc7e80dcb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent_7e89a16a-f843-4794-acfe-eaedc7e80dcb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch_b941d3f9-e803-4532-8027-648e60485adf" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch_b941d3f9-e803-4532-8027-648e60485adf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent_707e1cdb-79ff-4761-bc9a-fabab591cda6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent_707e1cdb-79ff-4761-bc9a-fabab591cda6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfOneYear_0648c998-9bfb-4acd-9d35-52031b259971" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfOneYear"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfOneYear_0648c998-9bfb-4acd-9d35-52031b259971" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear_76e81f45-78d9-48f2-b01d-f53b92dfcf65" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfTwoYear"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear_76e81f45-78d9-48f2-b01d-f53b92dfcf65" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears_4f399510-14f4-41d8-821a-e4f38b37f841" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfThreeYears"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears_4f399510-14f4-41d8-821a-e4f38b37f841" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_7debfa52-7938-40d1-ab27-fc1a2ff05e11" xlink:href="cgnx-20211231.xsd#cgnx_CompanyContributionsVestAtEndOfFourYears"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_7debfa52-7938-40d1-ab27-fc1a2ff05e11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanCostRecognized_eb62e56c-1c4a-4ac8-b35d-ecbc715d6932" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DefinedContributionPlanCostRecognized"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_e73e93a0-c857-4228-8119-b970b22a1aa7" xlink:to="loc_us-gaap_DefinedContributionPlanCostRecognized_eb62e56c-1c4a-4ac8-b35d-ecbc715d6932" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxes" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxes"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IncomeTaxes" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_ca8fedac-eb77-41d3-a8e8-104343113918" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureTextBlock_a78b0849-8c80-4df5-82b7-9b2f7b7149ea" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_ca8fedac-eb77-41d3-a8e8-104343113918" xlink:to="loc_us-gaap_IncomeTaxDisclosureTextBlock_a78b0849-8c80-4df5-82b7-9b2f7b7149ea" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IncomeTaxesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_e74a2b12-fd51-4cf2-a90f-dd69c352fbb3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_f7d1b6a1-428e-443d-85c4-1823612848bb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_e74a2b12-fd51-4cf2-a90f-dd69c352fbb3" xlink:to="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_f7d1b6a1-428e-443d-85c4-1823612848bb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_a1e3b276-0422-43f8-8ae5-fd55ef81638f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_e74a2b12-fd51-4cf2-a90f-dd69c352fbb3" xlink:to="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_a1e3b276-0422-43f8-8ae5-fd55ef81638f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock_dae2cdfd-7a80-417b-bcc0-f889f75fc990" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_e74a2b12-fd51-4cf2-a90f-dd69c352fbb3" xlink:to="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock_dae2cdfd-7a80-417b-bcc0-f889f75fc990" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_9b1e588e-afca-4ee9-aaba-8c2cf975963c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SummaryOfIncomeTaxContingenciesTextBlock"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_e74a2b12-fd51-4cf2-a90f-dd69c352fbb3" xlink:to="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_9b1e588e-afca-4ee9-aaba-8c2cf975963c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_95c3b40e-6bb2-46e8-8261-bdf7d969f1e6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_e74a2b12-fd51-4cf2-a90f-dd69c352fbb3" xlink:to="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_95c3b40e-6bb2-46e8-8261-bdf7d969f1e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesAdditionalInformationDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_92adb53f-6e60-4733-a3c6-687dc05ba699" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_92adb53f-6e60-4733-a3c6-687dc05ba699" xlink:to="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_68a28059-8bce-4619-861d-43bfe9d759df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_68a28059-8bce-4619-861d-43bfe9d759df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_abc786e3-47eb-4e04-b597-c480dd8689e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_68a28059-8bce-4619-861d-43bfe9d759df" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_abc786e3-47eb-4e04-b597-c480dd8689e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_0f72a727-6125-4a32-a575-7e46b6d6dc63" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_abc786e3-47eb-4e04-b597-c480dd8689e4" xlink:to="loc_cgnx_SualabCo.Ltd.Member_0f72a727-6125-4a32-a575-7e46b6d6dc63" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityAxis_b0336b8c-be9f-4230-be7d-a6fb9b414d04" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_IncomeTaxAuthorityAxis_b0336b8c-be9f-4230-be7d-a6fb9b414d04" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_3428bab4-4399-4f0c-a5a8-1441644909a3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis_b0336b8c-be9f-4230-be7d-a6fb9b414d04" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_3428bab4-4399-4f0c-a5a8-1441644909a3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCountryMember_505ca4e3-c5ba-4712-bd25-9b20c5f10d1b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ForeignCountryMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_3428bab4-4399-4f0c-a5a8-1441644909a3" xlink:to="loc_us-gaap_ForeignCountryMember_505ca4e3-c5ba-4712-bd25-9b20c5f10d1b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DomesticCountryMember_4314b2d4-4448-4bf6-b311-2175453bcc60" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DomesticCountryMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_3428bab4-4399-4f0c-a5a8-1441644909a3" xlink:to="loc_us-gaap_DomesticCountryMember_4314b2d4-4448-4bf6-b311-2175453bcc60" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameAxis_db930d3f-a7d7-409a-8e3c-3a6096950355" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityNameAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameAxis_db930d3f-a7d7-409a-8e3c-3a6096950355" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxAuthorityNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameAxis_db930d3f-a7d7-409a-8e3c-3a6096950355" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueCommissionersIrelandMember_b5fbea0c-aeb8-43e8-9dc7-ff47ee161ee3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueCommissionersIrelandMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:to="loc_us-gaap_RevenueCommissionersIrelandMember_b5fbea0c-aeb8-43e8-9dc7-ff47ee161ee3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StateAdministrationOfTaxationChinaMember_d6382a4e-020c-4670-9cdb-cb8f5a30379a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_StateAdministrationOfTaxationChinaMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:to="loc_us-gaap_StateAdministrationOfTaxationChinaMember_d6382a4e-020c-4670-9cdb-cb8f5a30379a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_KP_3469b8b2-10dc-40b6-8292-072e8c941360" xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_KP"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain_addf360a-012b-46ce-aaa6-ef53ae5585aa" xlink:to="loc_country_KP_3469b8b2-10dc-40b6-8292-072e8c941360" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAxis_55c44f53-cc4b-489e-b159-0b7a52808cfd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardAxis"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_TaxCreditCarryforwardAxis_55c44f53-cc4b-489e-b159-0b7a52808cfd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardNameDomain_442e8e1e-5f59-4444-9879-bed252f27102" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardAxis_55c44f53-cc4b-489e-b159-0b7a52808cfd" xlink:to="loc_us-gaap_TaxCreditCarryforwardNameDomain_442e8e1e-5f59-4444-9879-bed252f27102" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchMember_61e09b99-b67e-4434-95e9-af5ee7dac811" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ResearchMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardNameDomain_442e8e1e-5f59-4444-9879-bed252f27102" xlink:to="loc_us-gaap_ResearchMember_61e09b99-b67e-4434-95e9-af5ee7dac811" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StateResearchAndExperimentationMember_47ca1a08-090d-4a1c-8c3b-9b04348a97af" xlink:href="cgnx-20211231.xsd#cgnx_StateResearchAndExperimentationMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardNameDomain_442e8e1e-5f59-4444-9879-bed252f27102" xlink:to="loc_cgnx_StateResearchAndExperimentationMember_47ca1a08-090d-4a1c-8c3b-9b04348a97af" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsAxis_8e088969-befa-4cc9-9f33-6c2d0c507c68" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxItemsAxis"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_cgnx_DiscreteTaxItemsAxis_8e088969-befa-4cc9-9f33-6c2d0c507c68" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxItemsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_DiscreteTaxItemsAxis_8e088969-befa-4cc9-9f33-6c2d0c507c68" xlink:to="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_508074c0-d410-4a2f-bcc2-c3428f38b047" xlink:href="cgnx-20211231.xsd#cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:to="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_508074c0-d410-4a2f-bcc2-c3428f38b047" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_9f04c387-82d2-4a8d-90e1-911a6d12be8c" xlink:href="cgnx-20211231.xsd#cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:to="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_9f04c387-82d2-4a8d-90e1-911a6d12be8c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_c71de0ad-4f5b-48fd-be16-ab43ae2722e5" xlink:href="cgnx-20211231.xsd#cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_ebdb5bcc-383d-47d5-a3f0-61f4fac2c906" xlink:to="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_c71de0ad-4f5b-48fd-be16-ab43ae2722e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TaxCreditCarryforwardLineItems"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_8e2868f8-bb30-402a-bcf2-29ebf6fba21b" xlink:to="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_15c0e823-ec92-4215-bacc-a1c089204372" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_15c0e823-ec92-4215-bacc-a1c089204372" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_61012971-ef8c-444c-b889-bb21add99cf1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_61012971-ef8c-444c-b889-bb21add99cf1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_1db70936-5ed9-48c1-bad2-f85f0ed48fc3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_1db70936-5ed9-48c1-bad2-f85f0ed48fc3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange_ff167cbc-e511-4423-bda7-6c8de8ae3349" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsForeignTaxStructureChange"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange_ff167cbc-e511-4423-bda7-6c8de8ae3349" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_9c6437f1-99a7-4d9c-a59c-80345ddfa401" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_9c6437f1-99a7-4d9c-a59c-80345ddfa401" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_49be7a39-3bda-46e0-a31d-0207f1ff700b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_49be7a39-3bda-46e0-a31d-0207f1ff700b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_273b275e-f90a-4639-b1b0-38a815b5b92b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_273b275e-f90a-4639-b1b0-38a815b5b92b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_fc948cd0-38bf-4735-8138-270693100b86" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_fc948cd0-38bf-4735-8138-270693100b86" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_b548a124-9033-48f1-894c-e19d4720f69c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_Cash"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_Cash_b548a124-9033-48f1-894c-e19d4720f69c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_751cb059-7097-4564-93f3-308d7647a2e8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_751cb059-7097-4564-93f3-308d7647a2e8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_9fd9600a-f65c-40c4-bfca-f5b86e9e16a9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_9fd9600a-f65c-40c4-bfca-f5b86e9e16a9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_40c608aa-70e4-49bc-adbe-f16835138bda" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_40c608aa-70e4-49bc-adbe-f16835138bda" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_67316d7d-3080-464e-a193-82fd08ad315f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_67316d7d-3080-464e-a193-82fd08ad315f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_56437cf4-56fa-4767-8ba0-ce01fda8393e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_56437cf4-56fa-4767-8ba0-ce01fda8393e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_141aebe0-b85b-41f2-8671-ec0811aa734e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_141aebe0-b85b-41f2-8671-ec0811aa734e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_55fbcc42-284c-436b-b8fd-d684eca70e02" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_LiabilityForUncertainTaxPositionsNoncurrent"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_55fbcc42-284c-436b-b8fd-d684eca70e02" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_cac019d8-80b4-41ff-b0d9-d6665bec6822" xlink:href="cgnx-20211231.xsd#cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_cac019d8-80b4-41ff-b0d9-d6665bec6822" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_3e0a3810-15a5-4f06-b265-90961d0fccd6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_3e0a3810-15a5-4f06-b265-90961d0fccd6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_ef90fbe3-7502-43c1-8cc4-f631e80203cd" xlink:href="cgnx-20211231.xsd#cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_ef90fbe3-7502-43c1-8cc4-f631e80203cd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_738304f1-73ad-4499-bd3c-aca33c840320" xlink:href="cgnx-20211231.xsd#cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_738304f1-73ad-4499-bd3c-aca33c840320" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_f53e40b2-9269-49d6-904a-c989c018c31e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:presentationArc order="21" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_f53e40b2-9269-49d6-904a-c989c018c31e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_23b167de-c2cb-43e0-a3fd-5ddefd7efbcb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch"/>
    <link:presentationArc order="22" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_23b167de-c2cb-43e0-a3fd-5ddefd7efbcb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxesPaidNet_7e6ac186-8800-4d7d-ab9c-24afe1f94ecc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxesPaidNet"/>
    <link:presentationArc order="23" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeTaxesPaidNet_7e6ac186-8800-4d7d-ab9c-24afe1f94ecc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_88a8c8e1-61e6-4880-9565-397e19e06278" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxReconciliationTaxSettlementsForeign"/>
    <link:presentationArc order="24" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_88a8c8e1-61e6-4880-9565-397e19e06278" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_1a32bcd5-84e8-45a1-94c3-49a2aff1366d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:presentationArc order="25" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_1a32bcd5-84e8-45a1-94c3-49a2aff1366d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_UnrecognizedTaxBenefitsGross_e5635eab-1af1-46ff-8042-4159161d30c0" xlink:href="cgnx-20211231.xsd#cgnx_UnrecognizedTaxBenefitsGross"/>
    <link:presentationArc order="26" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_UnrecognizedTaxBenefitsGross_e5635eab-1af1-46ff-8042-4159161d30c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_6c8f6b58-bad9-430e-9707-27d44fe4c4c9" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar"/>
    <link:presentationArc order="27" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_e2737f5a-d91e-44a8-a54b-80b57e8c3f51" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_6c8f6b58-bad9-430e-9707-27d44fe4c4c9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_4d18b1d2-1051-483d-a918-908103b1c146" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_6ab8faf2-45b5-40ed-ad53-5cc6b36de6ca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4d18b1d2-1051-483d-a918-908103b1c146" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_6ab8faf2-45b5-40ed-ad53-5cc6b36de6ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentFederalTaxExpenseBenefit_e9e4b829-cb49-4ce7-9a84-18fdda947cb6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentFederalTaxExpenseBenefit"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_6ab8faf2-45b5-40ed-ad53-5cc6b36de6ca" xlink:to="loc_us-gaap_CurrentFederalTaxExpenseBenefit_e9e4b829-cb49-4ce7-9a84-18fdda947cb6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_0c7e1347-b067-4593-8202-053ad7b0839c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentStateAndLocalTaxExpenseBenefit"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_6ab8faf2-45b5-40ed-ad53-5cc6b36de6ca" xlink:to="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_0c7e1347-b067-4593-8202-053ad7b0839c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentForeignTaxExpenseBenefit_fb58a9be-05f9-400d-aa13-fabb73c2f253" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentForeignTaxExpenseBenefit"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_6ab8faf2-45b5-40ed-ad53-5cc6b36de6ca" xlink:to="loc_us-gaap_CurrentForeignTaxExpenseBenefit_fb58a9be-05f9-400d-aa13-fabb73c2f253" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_d897d35d-b022-44fd-91e9-4b0ec05bd339" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_6ab8faf2-45b5-40ed-ad53-5cc6b36de6ca" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_d897d35d-b022-44fd-91e9-4b0ec05bd339" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_671f5c66-18ec-4eb1-8e9c-3f31d9307869" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4d18b1d2-1051-483d-a918-908103b1c146" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_671f5c66-18ec-4eb1-8e9c-3f31d9307869" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_d02b4303-25e5-4ec0-ae41-6227ad470e27" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredFederalIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_671f5c66-18ec-4eb1-8e9c-3f31d9307869" xlink:to="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_d02b4303-25e5-4ec0-ae41-6227ad470e27" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_a7bb731c-5cf6-43f7-b5f4-c705d40c4344" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_671f5c66-18ec-4eb1-8e9c-3f31d9307869" xlink:to="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_a7bb731c-5cf6-43f7-b5f4-c705d40c4344" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_593bd2a9-d028-47bb-be09-64305536bbad" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredForeignIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_671f5c66-18ec-4eb1-8e9c-3f31d9307869" xlink:to="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_593bd2a9-d028-47bb-be09-64305536bbad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_3c7988a0-6cfa-4639-aa98-d3c8e00062c7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_671f5c66-18ec-4eb1-8e9c-3f31d9307869" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_3c7988a0-6cfa-4639-aa98-d3c8e00062c7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_b25b6a18-2936-4f86-ba7a-ff49073295c7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4d18b1d2-1051-483d-a918-908103b1c146" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_b25b6a18-2936-4f86-ba7a-ff49073295c7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_98d453e3-33d6-4859-b938-39a8c5fea20b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_98d453e3-33d6-4859-b938-39a8c5fea20b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_d95d5d88-7935-45b4-b7e7-5995e1a12ba9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_d95d5d88-7935-45b4-b7e7-5995e1a12ba9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_f9e53a5c-b5da-45f7-a987-7734ab4e5072" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_f9e53a5c-b5da-45f7-a987-7734ab4e5072" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_de1ffc32-2c4f-4aca-906e-f72f5ff60fe9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_de1ffc32-2c4f-4aca-906e-f72f5ff60fe9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_2f9247e4-7d91-4f69-bfc8-795c7ec8a84d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_2f9247e4-7d91-4f69-bfc8-795c7ec8a84d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_ddc10ce3-d4ce-468f-935b-2303083e2d7a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_ddc10ce3-d4ce-468f-935b-2303083e2d7a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_576a7927-5a01-45cb-9e9c-c916e9db4cad" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_576a7927-5a01-45cb-9e9c-c916e9db4cad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_384d864a-e9ed-43d0-afef-d0e73971697d" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_384d864a-e9ed-43d0-afef-d0e73971697d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_2307d8bc-8209-4ac8-9c99-c7a4bdda2332" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_2307d8bc-8209-4ac8-9c99-c7a4bdda2332" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_ac987635-b648-41bd-8de8-79a3a95cb592" xlink:href="cgnx-20211231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_ac987635-b648-41bd-8de8-79a3a95cb592" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_49156b3e-513f-4cd1-878d-df75d845fd6a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_49156b3e-513f-4cd1-878d-df75d845fd6a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_19f496b3-51aa-4365-9efd-288c351868bc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_19f496b3-51aa-4365-9efd-288c351868bc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_f8f7b3b5-4fda-44b4-91fb-be23162044ce" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_4b21ffe4-8e3d-494c-8b9e-163d5da7c5a0" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_f8f7b3b5-4fda-44b4-91fb-be23162044ce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesScheduleofChangeinAccountingPolicyDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_2e305b86-d569-4f71-94b8-e630b3d5443b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfChangeInAccountingEstimateTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_2e305b86-d569-4f71-94b8-e630b3d5443b" xlink:to="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAxis_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:to="loc_srt_RestatementAxis_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementDomain_1b1b9643-a75c-4fcf-a370-b5a1c082d67e" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RestatementAxis_8bbe2ba9-2a8e-4cf3-9a7f-2208cbfc57b9" xlink:to="loc_srt_RestatementDomain_1b1b9643-a75c-4fcf-a370-b5a1c082d67e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ScenarioPreviouslyReportedMember_1b488947-25b5-46d2-bc77-4bc28b8e912d" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScenarioPreviouslyReportedMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RestatementDomain_1b1b9643-a75c-4fcf-a370-b5a1c082d67e" xlink:to="loc_srt_ScenarioPreviouslyReportedMember_1b488947-25b5-46d2-bc77-4bc28b8e912d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAdjustmentMember_426122fd-b14f-4479-8f4e-ce0eb66a59a6" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_RestatementAdjustmentMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RestatementDomain_1b1b9643-a75c-4fcf-a370-b5a1c082d67e" xlink:to="loc_srt_RestatementAdjustmentMember_426122fd-b14f-4479-8f4e-ce0eb66a59a6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_2040d048-aa61-4972-84f7-b95712f4dddb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateByTypeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:to="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_2040d048-aa61-4972-84f7-b95712f4dddb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_f07f80e2-4664-4a9a-894c-8f150c7d5fa7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_2040d048-aa61-4972-84f7-b95712f4dddb" xlink:to="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_f07f80e2-4664-4a9a-894c-8f150c7d5fa7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_cd85cd78-ae7f-4fbc-b00b-0ccdff30d0b8" xlink:href="cgnx-20211231.xsd#cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_f07f80e2-4664-4a9a-894c-8f150c7d5fa7" xlink:to="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_cd85cd78-ae7f-4fbc-b00b-0ccdff30d0b8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ChangeInAccountingEstimateLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_ab96f1c8-5571-4a6f-a7da-7d143884fe9e" xlink:to="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_cf3e82bf-c2e6-4ac3-8fdf-3894bd019f50" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest_cf3e82bf-c2e6-4ac3-8fdf-3894bd019f50" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_e2864bdc-a81a-4140-99f7-884b8ef0271c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_e2864bdc-a81a-4140-99f7-884b8ef0271c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_d035c95c-41ea-4939-8bea-2f37ea111b30" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_NetIncomeLoss_d035c95c-41ea-4939-8bea-2f37ea111b30" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_c1639d3a-4293-4c2b-a2c8-8148b6001f50" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_EarningsPerShareBasic_c1639d3a-4293-4c2b-a2c8-8148b6001f50" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_f9eaf5cd-3727-44a0-8641-bdb0d3cb0362" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_EarningsPerShareDiluted_f9eaf5cd-3727-44a0-8641-bdb0d3cb0362" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross_4d429ed4-cde2-4836-a894-87bd1efd9147" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsGross"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_DeferredTaxAssetsGross_4d429ed4-cde2-4836-a894-87bd1efd9147" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_d7ba9bd9-bc0f-44b5-809f-8ac0f74c0be8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_d7ba9bd9-bc0f-44b5-809f-8ac0f74c0be8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_d4af5e6d-25df-42c8-89f1-826163ae068f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_800b2bf8-4012-44d2-8da5-f29d4896241f" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_d4af5e6d-25df-42c8-89f1-826163ae068f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_27df6fd0-b7e4-4d7c-b897-75a849730562" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_546fbd7a-4aad-4442-994f-e1de536b0773" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_27df6fd0-b7e4-4d7c-b897-75a849730562" xlink:to="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_546fbd7a-4aad-4442-994f-e1de536b0773" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_acec8b51-192e-4cd4-ad92-c0d823145d9e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_546fbd7a-4aad-4442-994f-e1de536b0773" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_acec8b51-192e-4cd4-ad92-c0d823145d9e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_10a30c8f-e6b2-457c-bdfe-7663a1e3f43e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_546fbd7a-4aad-4442-994f-e1de536b0773" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_10a30c8f-e6b2-457c-bdfe-7663a1e3f43e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_25422a5b-a982-40f3-8d57-1eb4587acc0b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_546fbd7a-4aad-4442-994f-e1de536b0773" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_25422a5b-a982-40f3-8d57-1eb4587acc0b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations_befd9b10-c706-45b7-8e48-eb7fe9180de7" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_546fbd7a-4aad-4442-994f-e1de536b0773" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations_befd9b10-c706-45b7-8e48-eb7fe9180de7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions_b2505cc3-be8a-45a6-af3f-f7631b7ec8a2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_546fbd7a-4aad-4442-994f-e1de536b0773" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions_b2505cc3-be8a-45a6-af3f-f7631b7ec8a2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_bd918e3f-3515-4076-b205-5fd5dc501e80" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_546fbd7a-4aad-4442-994f-e1de536b0773" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_bd918e3f-3515-4076-b205-5fd5dc501e80" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#IncomeTaxesConstituentsofDeferredTaxAssetsDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureAbstract_a98857a6-20f6-429e-a56d-49d4e293d179" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_a98857a6-20f6-429e-a56d-49d4e293d179" xlink:to="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_804edde8-0acd-42c5-93c2-161f73015535" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_804edde8-0acd-42c5-93c2-161f73015535" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_a9d8c0f7-57f9-4bfd-901e-489c2c7d8c51" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_a9d8c0f7-57f9-4bfd-901e-489c2c7d8c51" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_9fb29b97-af20-4490-8563-81483f528ebf" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_9fb29b97-af20-4490-8563-81483f528ebf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsInventory_6b128199-31b5-430a-bb10-db4c05a2ef10" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsInventory"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_us-gaap_DeferredTaxAssetsInventory_6b128199-31b5-430a-bb10-db4c05a2ef10" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_5a5e2dc5-6f56-438c-9072-afa531c465ae" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_5a5e2dc5-6f56-438c-9072-afa531c465ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation_55db99e1-476d-45d7-b6a0-2d74ec64988a" xlink:href="cgnx-20211231.xsd#cgnx_NoncurrentDeferredTaxAssetsDeprecation"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation_55db99e1-476d-45d7-b6a0-2d74ec64988a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_b7d06d7c-d3ea-43ed-b424-85361c1d974b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_b7d06d7c-d3ea-43ed-b424-85361c1d974b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsOtherNoncurrent_741a99c9-5fea-49cd-922c-357a30b50570" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsOtherNoncurrent"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_cgnx_DeferredTaxAssetsOtherNoncurrent_741a99c9-5fea-49cd-922c-357a30b50570" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_59422629-42de-4f04-b4fa-449927ceecdf" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_59422629-42de-4f04-b4fa-449927ceecdf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_38ab6f67-6d64-4809-b7bf-078363fafba9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_38ab6f67-6d64-4809-b7bf-078363fafba9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_204a35ca-dd65-43a3-a5ce-c485adf178c1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsLiabilitiesNet"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_a3e370ac-d274-4e0d-9495-ec01a6fffb5b" xlink:to="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_204a35ca-dd65-43a3-a5ce-c485adf178c1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesAbstract_252c82d2-3178-485b-991d-f4ca3ed3023f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxLiabilitiesAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_a98857a6-20f6-429e-a56d-49d4e293d179" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesAbstract_252c82d2-3178-485b-991d-f4ca3ed3023f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_3d8b1354-da2a-4452-b406-6e0e679be00e" xlink:href="cgnx-20211231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesAbstract_252c82d2-3178-485b-991d-f4ca3ed3023f" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_3d8b1354-da2a-4452-b406-6e0e679be00e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet_dd85c56c-fbea-4d98-8f27-35d1343e147d" xlink:href="cgnx-20211231.xsd#cgnx_DeferredIncomeTaxAssetsLiabilitiesNet"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_a98857a6-20f6-429e-a56d-49d4e293d179" xlink:to="loc_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet_dd85c56c-fbea-4d98-8f27-35d1343e147d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign_bc295ae0-e026-4c42-848c-18c3d88d2427" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_a98857a6-20f6-429e-a56d-49d4e293d179" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign_bc295ae0-e026-4c42-848c-18c3d88d2427" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageShares" xlink:type="simple" xlink:href="cgnx-20211231.xsd#WeightedAverageShares"/>
  <link:presentationLink xlink:role="http://cognex.com/role/WeightedAverageShares" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract_3ab30508-9d65-4472-bed5-17af728131a4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareTextBlock_e2f5899c-234f-4fa0-bc71-59d4bd908e74" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_3ab30508-9d65-4472-bed5-17af728131a4" xlink:to="loc_us-gaap_EarningsPerShareTextBlock_e2f5899c-234f-4fa0-bc71-59d4bd908e74" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#WeightedAverageSharesTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/WeightedAverageSharesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract_30ed7de4-4748-4987-bc19-137f688c08e8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock_82de5476-a6bc-413e-ab96-9842861d3b1e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_30ed7de4-4748-4987-bc19-137f688c08e8" xlink:to="loc_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock_82de5476-a6bc-413e-ab96-9842861d3b1e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#WeightedAverageSharesCalculationofWeightedAverageSharesDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract_bdb4cdd7-b0bf-4e65-8f90-c2bbfa45a313" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_23fd5011-7f10-4845-86ef-2042b98000d6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfSharesOutstandingBasic"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_bdb4cdd7-b0bf-4e65-8f90-c2bbfa45a313" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_23fd5011-7f10-4845-86ef-2042b98000d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_34b6dadb-db46-4aae-92c3-c9898b02bc89" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_bdb4cdd7-b0bf-4e65-8f90-c2bbfa45a313" xlink:to="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_34b6dadb-db46-4aae-92c3-c9898b02bc89" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_80012214-a80b-4739-bf7e-65c5adbbb6b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_bdb4cdd7-b0bf-4e65-8f90-c2bbfa45a313" xlink:to="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_80012214-a80b-4739-bf7e-65c5adbbb6b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#WeightedAverageSharesAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareAbstract_17c0326a-d65d-4a73-9623-8677fc317686" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_ddf55955-875f-4eb1-943e-2310874c65b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EarningsPerShareAbstract_17c0326a-d65d-4a73-9623-8677fc317686" xlink:to="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_ddf55955-875f-4eb1-943e-2310874c65b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_afb96d72-188a-4b95-9f1b-e3431a6eecb8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_ddf55955-875f-4eb1-943e-2310874c65b2" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_afb96d72-188a-4b95-9f1b-e3431a6eecb8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesNameDomain_570af037-ff46-4f3e-8fb6-29de836e5bcb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_afb96d72-188a-4b95-9f1b-e3431a6eecb8" xlink:to="loc_us-gaap_AntidilutiveSecuritiesNameDomain_570af037-ff46-4f3e-8fb6-29de836e5bcb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_f7d4dd97-3969-41b6-9c1c-abdd750254ef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AntidilutiveSecuritiesNameDomain_570af037-ff46-4f3e-8fb6-29de836e5bcb" xlink:to="loc_us-gaap_EmployeeStockOptionMember_f7d4dd97-3969-41b6-9c1c-abdd750254ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_43aee338-22c5-4176-9ca9-595b04ea0f8c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AntidilutiveSecuritiesNameDomain_570af037-ff46-4f3e-8fb6-29de836e5bcb" xlink:to="loc_us-gaap_RestrictedStockMember_43aee338-22c5-4176-9ca9-595b04ea0f8c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_9380218e-5b89-43c2-87d9-4b5619171323" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_ddf55955-875f-4eb1-943e-2310874c65b2" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_9380218e-5b89-43c2-87d9-4b5619171323" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_a9ee44e1-10bb-4b67-bc35-c631d5e5b83f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_9380218e-5b89-43c2-87d9-4b5619171323" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_a9ee44e1-10bb-4b67-bc35-c631d5e5b83f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformation" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SegmentandGeographicInformation"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SegmentandGeographicInformation" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingAbstract_e6779600-3192-474c-b46b-9283805302fa" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingDisclosureTextBlock_0a1a1675-9e17-4c23-972a-64fc7eca1df9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SegmentReportingAbstract_e6779600-3192-474c-b46b-9283805302fa" xlink:to="loc_us-gaap_SegmentReportingDisclosureTextBlock_0a1a1675-9e17-4c23-972a-64fc7eca1df9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SegmentandGeographicInformationTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingAbstract_35ffe8bc-a4d3-4def-afd7-ab1c787ec7e4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock_817d94ef-75bd-4724-b4a1-6f647addd477" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SegmentReportingAbstract_35ffe8bc-a4d3-4def-afd7-ab1c787ec7e4" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock_817d94ef-75bd-4724-b4a1-6f647addd477" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SegmentandGeographicInformationAdditionalInformationDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingAbstract_6ffa3aff-f52d-4732-8772-4ac096722ec3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SegmentReportingAbstract_6ffa3aff-f52d-4732-8772-4ac096722ec3" xlink:to="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:to="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_706e6f6c-88ae-4d02-910a-d314da4fbe77" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_9b9c1927-3879-48e3-a1ff-5e9c40ac59a1" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_706e6f6c-88ae-4d02-910a-d314da4fbe77" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesRevenueNetMember_8be124c7-ce49-4b3d-a9d4-8a52a3a8a053" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SalesRevenueNetMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_706e6f6c-88ae-4d02-910a-d314da4fbe77" xlink:to="loc_us-gaap_SalesRevenueNetMember_8be124c7-ce49-4b3d-a9d4-8a52a3a8a053" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableMember_710decd7-8c45-484a-b235-fb89d1869fa2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccountsReceivableMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_706e6f6c-88ae-4d02-910a-d314da4fbe77" xlink:to="loc_us-gaap_AccountsReceivableMember_710decd7-8c45-484a-b235-fb89d1869fa2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByTypeAxis_c42eb380-759d-4d0b-9214-20f4cee250b5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskByTypeAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:to="loc_us-gaap_ConcentrationRiskByTypeAxis_c42eb380-759d-4d0b-9214-20f4cee250b5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_d47f5cb1-566e-4fb7-ab78-1e8c84043d90" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis_c42eb380-759d-4d0b-9214-20f4cee250b5" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_d47f5cb1-566e-4fb7-ab78-1e8c84043d90" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerConcentrationRiskMember_fc7260e5-c430-42e4-81c3-15aba1d56cca" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_CustomerConcentrationRiskMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTypeDomain_d47f5cb1-566e-4fb7-ab78-1e8c84043d90" xlink:to="loc_us-gaap_CustomerConcentrationRiskMember_fc7260e5-c430-42e4-81c3-15aba1d56cca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MajorCustomersAxis_f3edf0ac-2ad9-499d-a000-0499000f72a6" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_MajorCustomersAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:to="loc_srt_MajorCustomersAxis_f3edf0ac-2ad9-499d-a000-0499000f72a6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_f54ce8e0-e325-4200-bc78-496d4cd2218a" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_MajorCustomersAxis_f3edf0ac-2ad9-499d-a000-0499000f72a6" xlink:to="loc_srt_NameOfMajorCustomerDomain_f54ce8e0-e325-4200-bc78-496d4cd2218a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer2Member_8752c11d-0c51-4b15-9ac6-85119f5b3336" xlink:href="cgnx-20211231.xsd#cgnx_Customer2Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_NameOfMajorCustomerDomain_f54ce8e0-e325-4200-bc78-496d4cd2218a" xlink:to="loc_cgnx_Customer2Member_8752c11d-0c51-4b15-9ac6-85119f5b3336" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer1Member_f5e05239-1cb1-4c84-8e7e-97e552ec7781" xlink:href="cgnx-20211231.xsd#cgnx_Customer1Member"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_NameOfMajorCustomerDomain_f54ce8e0-e325-4200-bc78-496d4cd2218a" xlink:to="loc_cgnx_Customer1Member_f5e05239-1cb1-4c84-8e7e-97e552ec7781" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskLineItems_7f4d3507-4926-40f2-88be-34d22e2d605a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskLineItems"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskTable_215e07fc-7756-401e-aeeb-df20e4551607" xlink:to="loc_us-gaap_ConcentrationRiskLineItems_7f4d3507-4926-40f2-88be-34d22e2d605a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments_2dfb47dd-008e-4fed-8701-bf10c713bff4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NumberOfReportableSegments"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_7f4d3507-4926-40f2-88be-34d22e2d605a" xlink:to="loc_us-gaap_NumberOfReportableSegments_2dfb47dd-008e-4fed-8701-bf10c713bff4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_ea6a5d65-2d78-4d7f-b154-865cd3614114" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_7f4d3507-4926-40f2-88be-34d22e2d605a" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_ea6a5d65-2d78-4d7f-b154-865cd3614114" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingAbstract_d4629936-401e-4c8e-8e96-5a25862afa11" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_3aa62a65-1f57-4da1-9c42-8640e1841dcf" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SegmentReportingAbstract_d4629936-401e-4c8e-8e96-5a25862afa11" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_3aa62a65-1f57-4da1-9c42-8640e1841dcf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_5b30e381-b96c-40ee-92fa-b143222f49cb" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_StatementGeographicalAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_3aa62a65-1f57-4da1-9c42-8640e1841dcf" xlink:to="loc_srt_StatementGeographicalAxis_5b30e381-b96c-40ee-92fa-b143222f49cb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_5b30e381-b96c-40ee-92fa-b143222f49cb" xlink:to="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_US_2c0b0e66-736d-4039-b5e4-8a4a135b7020" xlink:href="https://xbrl.sec.gov/country/2021/country-2021.xsd#country_US"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:to="loc_country_US_2c0b0e66-736d-4039-b5e4-8a4a135b7020" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_e217e75c-a352-4266-80c6-0144221f2703" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_EuropeMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:to="loc_srt_EuropeMember_e217e75c-a352-4266-80c6-0144221f2703" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember_4a964c3b-9b8a-4dbb-8968-73244b4c4368" xlink:href="cgnx-20211231.xsd#cgnx_GreaterChinaMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:to="loc_cgnx_GreaterChinaMember_4a964c3b-9b8a-4dbb-8968-73244b4c4368" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherGeographicAreaMember_fe2bc44c-a5da-4cfa-a8ad-ba98f8f5cb40" xlink:href="cgnx-20211231.xsd#cgnx_OtherGeographicAreaMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_f43a78e4-7900-4472-b2ef-79213b97949a" xlink:to="loc_cgnx_OtherGeographicAreaMember_fe2bc44c-a5da-4cfa-a8ad-ba98f8f5cb40" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_3aa62a65-1f57-4da1-9c42-8640e1841dcf" xlink:to="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_5ac0d43e-a680-499b-9725-2dd540cc76b2" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_5ac0d43e-a680-499b-9725-2dd540cc76b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncurrentAssets_dc25c52e-e8c4-448d-b4ae-8ea6a854be3e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NoncurrentAssets"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_NoncurrentAssets_dc25c52e-e8c4-448d-b4ae-8ea6a854be3e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments_f44ffc64-1c40-4a74-a620-c92ed869d902" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_NumberOfReportableSegments"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_NumberOfReportableSegments_f44ffc64-1c40-4a74-a620-c92ed869d902" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_f2040cb2-6a4a-42bc-aece-337075709664" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_cea3cef1-fdfb-435e-b366-c4aa2fe3457b" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_f2040cb2-6a4a-42bc-aece-337075709664" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/BusinessAcquisitions" xlink:type="simple" xlink:href="cgnx-20211231.xsd#BusinessAcquisitions"/>
  <link:presentationLink xlink:role="http://cognex.com/role/BusinessAcquisitions" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsAbstract_8bf76667-d178-49a1-8be5-fd0b7d8db1cb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationDisclosureTextBlock_1a176f83-90b5-47d2-aff9-7b30c0df6169" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessCombinationsAbstract_8bf76667-d178-49a1-8be5-fd0b7d8db1cb" xlink:to="loc_us-gaap_BusinessCombinationDisclosureTextBlock_1a176f83-90b5-47d2-aff9-7b30c0df6169" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#BusinessAcquisitionsSualabCoLtdNarrativeDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsAbstract_b805c5d9-56d0-4a8c-ba71-dee522dc90b3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessCombinationsAbstract_b805c5d9-56d0-4a8c-ba71-dee522dc90b3" xlink:to="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_dabce5a1-70e5-48ff-86c4-c1442e243d37" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_dabce5a1-70e5-48ff-86c4-c1442e243d37" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_30f071b9-e665-434c-a860-4b6ef6632fad" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_dabce5a1-70e5-48ff-86c4-c1442e243d37" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_30f071b9-e665-434c-a860-4b6ef6632fad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_e1c80431-1b59-4b4c-be44-a4b15ff4a331" xlink:href="cgnx-20211231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_30f071b9-e665-434c-a860-4b6ef6632fad" xlink:to="loc_cgnx_SualabCo.Ltd.Member_e1c80431-1b59-4b4c-be44-a4b15ff4a331" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c2bb0e47-c201-4c9b-a902-7a12fae72b56" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c2bb0e47-c201-4c9b-a902-7a12fae72b56" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6b7c619c-7454-4870-a550-637e900b0a8d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c2bb0e47-c201-4c9b-a902-7a12fae72b56" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6b7c619c-7454-4870-a550-637e900b0a8d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_d248d348-1a51-435d-b40d-28104a32fa61" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6b7c619c-7454-4870-a550-637e900b0a8d" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_d248d348-1a51-435d-b40d-28104a32fa61" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_35ccf91a-c33c-4be9-a579-b1286c3b9290" xlink:href="cgnx-20211231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_6b7c619c-7454-4870-a550-637e900b0a8d" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_35ccf91a-c33c-4be9-a579-b1286c3b9290" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_0d260ede-007c-41e4-b260-8f6c8ee8f749" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_0d260ede-007c-41e4-b260-8f6c8ee8f749" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_90ffb7a4-de11-40db-82f7-1c7da287c92b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_0d260ede-007c-41e4-b260-8f6c8ee8f749" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_90ffb7a4-de11-40db-82f7-1c7da287c92b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_efc7500e-4d3e-4a40-bc72-a8267f9c74b0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_90ffb7a4-de11-40db-82f7-1c7da287c92b" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_efc7500e-4d3e-4a40-bc72-a8267f9c74b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessAcquisitionLineItems"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_3040fb31-a713-4e7b-b53b-c696cd5668c4" xlink:to="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationConsiderationTransferred1_0459bfe6-c777-48de-a8a9-c56cacb9e41e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_BusinessCombinationConsiderationTransferred1_0459bfe6-c777-48de-a8a9-c56cacb9e41e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesGross_c2069e81-9867-4698-b4b0-fdcc3f0b4a47" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_PaymentsToAcquireBusinessesGross_c2069e81-9867-4698-b4b0-fdcc3f0b4a47" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition_9ab687d5-fa82-4f73-9d0f-3c2d5cc328bf" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForProceedsFromPreviousAcquisition"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition_9ab687d5-fa82-4f73-9d0f-3c2d5cc328bf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationLiability_24d89e0a-21de-4ee1-aa7f-ff61e8e2036a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationLiability_24d89e0a-21de-4ee1-aa7f-ff61e8e2036a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_2fecb03a-d46d-4f0d-9455-fb051855b9cd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_2fecb03a-d46d-4f0d-9455-fb051855b9cd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_6d2f9cc1-4d37-4edc-9b89-12aaff67c6cd" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_70c195ca-0d07-456a-afcc-a7f76fe9f151" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_6d2f9cc1-4d37-4edc-9b89-12aaff67c6cd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringCharges" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RestructuringCharges"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RestructuringCharges" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_aa645a78-afd0-49bf-bafe-f3ddbac65f88" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock_029dab5b-c1f3-48f3-bc9f-44143db6455e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_aa645a78-afd0-49bf-bafe-f3ddbac65f88" xlink:to="loc_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock_029dab5b-c1f3-48f3-bc9f-44143db6455e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesTables" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RestructuringChargesTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RestructuringChargesTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_60e186a1-2447-4b0e-80fe-35cd1dfa6439" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock_d18fa70a-1a11-43f4-9802-3410b1078f7b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_60e186a1-2447-4b0e-80fe-35cd1dfa6439" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock_d18fa70a-1a11-43f4-9802-3410b1078f7b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock_2128bd7f-7f01-460f-9594-44f2837c959e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_60e186a1-2447-4b0e-80fe-35cd1dfa6439" xlink:to="loc_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock_2128bd7f-7f01-460f-9594-44f2837c959e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RestructuringChargesAdditionalInformationDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RestructuringChargesAdditionalInformationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_23d6d942-019d-491f-bf9c-d80bdbead075" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent_dab73b27-6977-468f-a052-c97ca99c9fb3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_23d6d942-019d-491f-bf9c-d80bdbead075" xlink:to="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent_dab73b27-6977-468f-a052-c97ca99c9fb3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_24e002f2-07a1-45b6-b70d-2337b439641a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_23d6d942-019d-491f-bf9c-d80bdbead075" xlink:to="loc_us-gaap_RestructuringCharges_24e002f2-07a1-45b6-b70d-2337b439641a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated_4b0eccf2-d34c-47e0-b4be-6acd5c4bfe9a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_23d6d942-019d-491f-bf9c-d80bdbead075" xlink:to="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated_4b0eccf2-d34c-47e0-b4be-6acd5c4bfe9a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_f624d713-bd22-4218-9abe-b2b611c2960e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2f5b9f4f-ede2-4706-a4f9-bab9f14d75ce" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_f624d713-bd22-4218-9abe-b2b611c2960e" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2f5b9f4f-ede2-4706-a4f9-bab9f14d75ce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_07cac83e-19e8-432b-9706-46ee2c8d8bbb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2f5b9f4f-ede2-4706-a4f9-bab9f14d75ce" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_07cac83e-19e8-432b-9706-46ee2c8d8bbb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_07cac83e-19e8-432b-9706-46ee2c8d8bbb" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember_cc21e1f0-c911-4958-ad3d-d334d883d913" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OneTimeTerminationBenefitsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:to="loc_us-gaap_OneTimeTerminationBenefitsMember_cc21e1f0-c911-4958-ad3d-d334d883d913" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_97b1a0f2-21ac-421b-aeb1-3a56fb120237" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:to="loc_us-gaap_ContractTerminationMember_97b1a0f2-21ac-421b-aeb1-3a56fb120237" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember_458111d1-9b87-4f6d-916f-267cc1b041b8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherRestructuringMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_5a90c233-533a-49b0-b332-4dfbf9548815" xlink:to="loc_us-gaap_OtherRestructuringMember_458111d1-9b87-4f6d-916f-267cc1b041b8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_ee49ba84-dd7f-41a7-9a6b-a8e32289fea6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2f5b9f4f-ede2-4706-a4f9-bab9f14d75ce" xlink:to="loc_us-gaap_RestructuringCostAndReserveLineItems_ee49ba84-dd7f-41a7-9a6b-a8e32289fea6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_5ca788f6-6065-453b-9638-746464290922" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_ee49ba84-dd7f-41a7-9a6b-a8e32289fea6" xlink:to="loc_us-gaap_RestructuringCharges_5ca788f6-6065-453b-9638-746464290922" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_0f7c7b5c-90fc-4f80-85c8-162f9329256b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringAndRelatedActivitiesAbstract_0f7c7b5c-90fc-4f80-85c8-162f9329256b" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_e485cfd8-46cb-4acb-81fa-159ae5e5f1c3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_0ee0e4e2-dea1-4ee8-a52c-3db96912b96c" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_e485cfd8-46cb-4acb-81fa-159ae5e5f1c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesMember_8e24adc0-d34c-4042-b6ec-3998091f5dee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_AccruedLiabilitiesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_e485cfd8-46cb-4acb-81fa-159ae5e5f1c3" xlink:to="loc_us-gaap_AccruedLiabilitiesMember_8e24adc0-d34c-4042-b6ec-3998091f5dee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_3f7db50a-96a4-427b-9479-3a7752afc740" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_3f7db50a-96a4-427b-9479-3a7752afc740" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_3f7db50a-96a4-427b-9479-3a7752afc740" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember_1e0f4098-0f47-46cd-a8ff-3502f201dbe9" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OneTimeTerminationBenefitsMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:to="loc_us-gaap_OneTimeTerminationBenefitsMember_1e0f4098-0f47-46cd-a8ff-3502f201dbe9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_e11fb4b4-622e-4766-a9d8-0a35c79f45ee" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:to="loc_us-gaap_ContractTerminationMember_e11fb4b4-622e-4766-a9d8-0a35c79f45ee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember_845f8015-f289-471e-b335-069b11099743" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_OtherRestructuringMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_331734aa-fa11-4228-9d28-cd85207ac65b" xlink:to="loc_us-gaap_OtherRestructuringMember_845f8015-f289-471e-b335-069b11099743" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_0e4d964a-07c9-409f-ace7-0aae088b9329" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_3d56872b-854e-4173-b029-1cb624f2c180" xlink:to="loc_us-gaap_RestructuringCostAndReserveLineItems_0e4d964a-07c9-409f-ace7-0aae088b9329" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_0e4d964a-07c9-409f-ace7-0aae088b9329" xlink:to="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_d2894a8e-cced-4b4e-ad75-8cdb5f640eba" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserve"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserve_d2894a8e-cced-4b4e-ad75-8cdb5f640eba" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_0e5a8882-532b-4db1-a7d5-cb03f477cbcb" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringCharges_0e5a8882-532b-4db1-a7d5-cb03f477cbcb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRestructuring_740a5f80-0b43-44df-bfdf-d591fea786a8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_PaymentsForRestructuring"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_PaymentsForRestructuring_740a5f80-0b43-44df-bfdf-d591fea786a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveSettledWithoutCash2_b5540886-0b4b-4f21-b02f-aee0c5a04c85" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveSettledWithoutCash2"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserveSettledWithoutCash2_b5540886-0b4b-4f21-b02f-aee0c5a04c85" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveAccrualAdjustment1_1e4a2a0b-aa95-4110-a390-13b67aef2012" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveAccrualAdjustment1"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserveAccrualAdjustment1_1e4a2a0b-aa95-4110-a390-13b67aef2012" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveTranslationAdjustment_fa6300d6-b005-4fd4-9a3b-2823caa4fc6e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserveTranslationAdjustment"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserveTranslationAdjustment_fa6300d6-b005-4fd4-9a3b-2823caa4fc6e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_6b8cb482-691a-48c1-a2b4-8671ea1f908e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_RestructuringReserve"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RestructuringReserveRollForward_78b90d7a-e7f6-4eaa-bfeb-dca7ebbba54f" xlink:to="loc_us-gaap_RestructuringReserve_6b8cb482-691a-48c1-a2b4-8671ea1f908e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SubsequentEvents" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SubsequentEvents"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SubsequentEvents" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventsAbstract_99c54fcb-8468-4604-8af4-312d7d096057" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventsTextBlock_9617c6d0-acc7-43f4-b394-4b5b0bbd8b6e" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventsTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventsAbstract_99c54fcb-8468-4604-8af4-312d7d096057" xlink:to="loc_us-gaap_SubsequentEventsTextBlock_9617c6d0-acc7-43f4-b394-4b5b0bbd8b6e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SubsequentEventsDetails" xlink:type="simple" xlink:href="cgnx-20211231.xsd#SubsequentEventsDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SubsequentEventsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventsAbstract_3a7aef4d-b4c7-4297-80c7-64ec6fb8df30" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTable_895e36e2-2de9-4ce8-a903-cd35d360f0df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventsAbstract_3a7aef4d-b4c7-4297-80c7-64ec6fb8df30" xlink:to="loc_us-gaap_SubsequentEventTable_895e36e2-2de9-4ce8-a903-cd35d360f0df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeAxis_71135895-649c-4f38-8a3a-4eb12142255a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventTable_895e36e2-2de9-4ce8-a903-cd35d360f0df" xlink:to="loc_us-gaap_SubsequentEventTypeAxis_71135895-649c-4f38-8a3a-4eb12142255a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_2152f3a0-28f9-43a4-84dd-4899181752df" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventTypeAxis_71135895-649c-4f38-8a3a-4eb12142255a" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_2152f3a0-28f9-43a4-84dd-4899181752df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventMember_62f3b05b-bf6a-4b69-9cd1-9dc4ef4ae995" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventTypeDomain_2152f3a0-28f9-43a4-84dd-4899181752df" xlink:to="loc_us-gaap_SubsequentEventMember_62f3b05b-bf6a-4b69-9cd1-9dc4ef4ae995" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SubsequentEventLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventTable_895e36e2-2de9-4ce8-a903-cd35d360f0df" xlink:to="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableAmountPerShare_966eb239-458f-4dac-953f-28a26c933908" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableAmountPerShare"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:to="loc_us-gaap_DividendsPayableAmountPerShare_966eb239-458f-4dac-953f-28a26c933908" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_b7252c38-578e-4ced-8c7f-f8844d8f9fd5" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableDateDeclaredDayMonthAndYear"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:to="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_b7252c38-578e-4ced-8c7f-f8844d8f9fd5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_75743ed5-7288-4cf6-8baf-dcc31e03a5c6" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_DividendsPayableDateOfRecordDayMonthAndYear"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_SubsequentEventLineItems_f6bbd6e2-4d6d-4a45-a352-419b1acfc2a0" xlink:to="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_75743ed5-7288-4cf6-8baf-dcc31e03a5c6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts" xlink:type="simple" xlink:href="cgnx-20211231.xsd#ScheduleIIValuationandQualifyingAccounts"/>
  <link:presentationLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsAbstract_6f8ead52-fcdb-4679-a83c-2af3fea7a88f" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock_5cd55c92-f4cd-4a90-8ac8-c55b875222d3" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsAbstract_6f8ead52-fcdb-4679-a83c-2af3fea7a88f" xlink:to="loc_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock_5cd55c92-f4cd-4a90-8ac8-c55b875222d3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="simple" xlink:href="cgnx-20211231.xsd#ScheduleIIValuationandQualifyingAccountsDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsAbstract_2bbb0187-7fdb-4336-9fb9-fff177c12866" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_1397b147-9583-4859-9e99-ed7ee2ed0dc7" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsAbstract_2bbb0187-7fdb-4336-9fb9-fff177c12866" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_1397b147-9583-4859-9e99-ed7ee2ed0dc7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_90ab389c-7472-417d-b006-13bf8d78fcc3" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_1397b147-9583-4859-9e99-ed7ee2ed0dc7" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_90ab389c-7472-417d-b006-13bf8d78fcc3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_90ab389c-7472-417d-b006-13bf8d78fcc3" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UncollectibleReceivablesMember_dfa18029-86cb-4a5f-91c9-677f5aa134a4" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_UncollectibleReceivablesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:to="loc_us-gaap_UncollectibleReceivablesMember_dfa18029-86cb-4a5f-91c9-677f5aa134a4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesReturnsAndAllowancesMember_f9519971-412e-4174-96b6-186555bae1bc" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_SalesReturnsAndAllowancesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:to="loc_us-gaap_SalesReturnsAndAllowancesMember_f9519971-412e-4174-96b6-186555bae1bc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_06a91f61-9e92-4156-b3c6-b4bd2c3f0c37" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_731a0ade-acdd-4bd4-b305-39ab15fda570" xlink:to="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_06a91f61-9e92-4156-b3c6-b4bd2c3f0c37" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_cf9f8601-305e-4596-9bf8-fc9d3b9e5699" xlink:href="https://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_1397b147-9583-4859-9e99-ed7ee2ed0dc7" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_cf9f8601-305e-4596-9bf8-fc9d3b9e5699" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_MovementInValuationAllowancesAndReservesRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_cf9f8601-305e-4596-9bf8-fc9d3b9e5699" xlink:to="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_854a5c6d-3ff4-47e3-96ef-d9f3b220232d" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_854a5c6d-3ff4-47e3-96ef-d9f3b220232d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_34b7fc01-865a-4a5b-a9d5-ce8649476828" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_34b7fc01-865a-4a5b-a9d5-ce8649476828" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts_bb0001bc-264f-40cc-bbdf-360dbb61ac49" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts_bb0001bc-264f-40cc-bbdf-360dbb61ac49" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDeductions_95c2b223-a181-4541-9380-a139358a2173" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDeductions"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDeductions_95c2b223-a181-4541-9380-a139358a2173" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesAdjustments_cb1e38c9-20d9-4a1f-8ff3-284d8bb45cef" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesAdjustments"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesAdjustments_cb1e38c9-20d9-4a1f-8ff3-284d8bb45cef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_adefdc8d-8a8f-4226-9a65-43a87ddfc8d8" xlink:href="https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_a40fad96-2178-477e-900b-865148d7ce3a" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_adefdc8d-8a8f-4226-9a65-43a87ddfc8d8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>14
<FILENAME>cgnx-20211231_g1.jpg
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 cgnx-20211231_g1.jpg
M_]C_X  02D9)1@ ! @$ 8 !@  #_[@ .061O8F4 90     !_]L 0P " 0$!
M 0$" 0$! @(" @($ P(" @(%! 0#! 8%!@8&!08&!@<)" 8'"0<&!@@+" D*
M"@H*"@8("PP+"@P)"@H*_]L 0P$" @(" @(% P,%"@<&!PH*"@H*"@H*"@H*
M"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*"@H*_\  $0@$
M) 3R P$B  (1 0,1 ?_$ !\   $% 0$! 0$!           ! @,$!08'" D*
M"__$ +40  (! P,"! ,%!00$   !?0$" P $$042(3%!!A-180<B<10R@9&A
M""-"L<$54M'P)#-B<H()"A87&!D:)28G*"DJ-#4V-S@Y.D-$149'2$E*4U15
M5E=865IC9&5F9VAI:G-T=79W>'EZ@X2%AH>(B8J2DY25EI>8F9JBHZ2EIJ>H
MJ:JRL[2UMK>XN;K"P\3%QL?(R<K2T]35UM?8V=KAXN/DY>;GZ.GJ\?+S]/7V
M]_CY^O_$ !\!  ,! 0$! 0$! 0$        ! @,$!08'" D*"__$ +41  (!
M @0$ P0'!00$  $"=P ! @,1! 4A,08205$'87$3(C*!"!1"D:&QP0DC,U+P
M%6)RT0H6)#3A)?$7&!D:)B<H*2HU-C<X.3I#1$5&1TA)2E-455976%E:8V1E
M9F=H:6IS='5V=WAY>H*#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6V
MM[BYNL+#Q,7&Q\C)RM+3U-76U]C9VN+CY.7FY^CIZO+S]/7V]_CY^O_:  P#
M 0 "$0,1 #\ _?RBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BN1^/'QW^$7[,?P@U_P"/7QX\=67AKPEX
M8L&O-:UG4'(C@C!    +.[,51(U!=W954%F /X7^.O\ @Y%_X*;_ /!5']JR
M']CC_@B?\&;'PE;WLDC0>+_$VGP7FI)9QD"34;GSQ)::?;*&&5,<[DLBJQ=U
MC(!^_P!17YO?"K_@E'_P66TC0XO%7Q#_ .#@/QBGC*2,236^F_"W3;[1K:7
MR@@NF N$!'WMD.0?NBOES_@K1_P5I_X+H?\ !)[X.:I\&?VB?AS\//%4/C2P
MGTKP#^T?X'M;FP^SSM&=QN+(EXX=16/=)&@V197<OG".0  _<2BH;&1GL(9I
M7R3"I9C].M?BI_P5 _X.K]<\._'I?V*/^"2/PUTSXA^,[G7(]"_X3G48FNK&
MXU*240K:Z9;1NOVMO,8(+AW$18?*DJ$.0#]L:*^ ?@=_P3W_ ."PGB[X;6WB
MK]K/_@M/XPTCQUJ%JLUQHGPY^'GAR+2='E(S]GW363->!.A?$6[IR!N/QE^U
ME_P6/_X+ _\ !!S]JK1/A)_P4%NO#/[0WPK\4Q/<^&O'=AX=A\/ZI>VT;JDR
M)]E MX[J'>A>&2.0,)(R)E#D@ _<NBO*_P!C#]L[]GW]OO\ 9[T3]IG]FCQH
MNL^&M:0J1(@CN=/N4QYMG=19)AGC) 922""K*61E9OB;_@NE\2_^"I/[$WPD
MT/X]?L1_MFWFH77BGXH6/AJ'P#XD\ Z%<QQMJ<LB6D=I<+:)(!'((XL3&5F5
MPS294[P#]+:*_ER_8Z_X.QO^"F6B?M9^!8/VP_BYH^J?#<^*+>T\>:<G@FPL
MY8K"1_)FF#PPK(KPAO."@C<8MIX)K^HJVN;:]MH[RSN$EAE0/%+$X974C(8$
M<$$<YH ?17SI_P %6?VQ=<_8<_8=\8?&?P!8K?\ CF\2#0/AII'E"5]0\1ZA
M*MK81+&>)=LL@E9/XDA<5_-WXE_X.GO^"XWA3Q-J'A/5?VB_#GVO3;Z6TN1%
M\/=)9?,C<HV#]GY&0<&@#^L^BO%/@C\!/VJ_#/PKFT;XX_MT>)/%'BW4]#AA
MN=:L/!^@V-OI5[P9)[*!;%LC.5"W!G7 SC-?BI_P7-_X+ ?\%C_^"2_[;P_9
MK\#?MJV'BCP_JOA&S\1:'?ZQ\,]%CNXH)YKF PS&.W".ZR6LGSJJ@JR_*#F@
M#^A:BOQG_P""?/Q,_P"#AC_@HQ_P3TTK]N'X'_\ !2/X?6^NZK=ZE#9_#[Q'
M\&]/@@E>SNI8-AU"(,09/+R,P*%+8+8&ZO#OV)_^#OO]HCX:?M"-^SI_P5=^
M!>A6=G8:_+HGB+Q5X3L)K/4/#UW%,89FN[0R2QW"1R*P<0^6RA6*K(0$8 _H
M)HJOI.K:7K^E6NNZ'J,%Y97MND]G=VTH>.>)U#(Z,.&5E(((X(-6* "BORM\
M2_\ !?#2](_X.*],_P""<\?B.V_X5E_87_"&W]U\NW_A-9F6XCDW]2%81Z=Y
M?::5R>@Q^J5 !16-\0?#?B'Q?X.O?#GA3XA:EX4U"Y11;>(-(M;2>YLR'5B4
M2[AFA8D J=\;##$C!P1_/1_P6?\ ^"TO_!9S_@EG^W?KO[*GA7]L[2_$^B0:
M38ZMH>JZE\,M&BNC;7,981S!+?871U==R@!@ VU<[0 ?T845^3W_  3'U;_@
MMK_P4I_X)^^#/VT]&_X*V^'_  ?J'BXZH$\,W/[/&DWT,!M-2N[$ W*SQ,0_
MV8.3Y?R[R,-C)^4_VIO^#@G_ (+=?\$=/VP/^&;OV_/ 7PN^)FG?98=2L]0T
MG2I=-_MO2Y'=5N+.YA*K"VZ.2-A+;OL>-AM(VL0#^@VBO&?V _VZ?@?_ ,%&
M_P!ESP[^U9\ ;^=M&UQ'BN]-OE5;O2KV([9[.X520LB-W!(961U)5U)^'?\
M@X4_:(_X*1?\$T/V:(_VQ/V7/VX;N73[CQU%IFI>#O$_@#0[F*T@NQ.\/V6X
M2T23;$8UCVS>:[JP8R94[P#]2**_GM_X(5_\%?/^"QO_  5K_;=D_9N\>_MJ
M6/ACP]H_@Z\\2:[?:-\--%>\F@@GMK<0PF6V9(W:6[B.]E<!5;Y22*_:/]J[
M]JOP#_P38_8I\0_M*?M'^/\ 5?$MCX(T@/=:A<V]K#J&N7;R".W@6.WCA@$L
MLLD<8V(B+G<0 K&@#V^BOR&_X)N^*/\ @K%_P7-^'>H_MM?$;]O+5?V?OA7?
MZ]=V'@/X>_"#0[)KV>.WD\N2XN-0NXI)" X,>""':-V"0KM#=;^VO\6/^"U_
M_!&?X1:K^T/X>^+6A_M8?"?2+8OKUMXV\,QZ3XE\+Q]%NC/IVV.^M5)S+(T?
MF("#A45I% /U,HKP/_@EE\9?'?[0_P#P3D^"OQQ^)^NMJ?B/Q3\.=,U'7-0=
M0#<7<D"F5\#@9;/%>'_\%G_^"[_[.O\ P2'\'VOAS4=(_P"$U^*FOV1N/#G@
M*RO1"(H,E1>WTN&-O;[E8* I>5E*J %=T /NRBOR _X)@^+/^"[/_!8GX?\
M_#8GQE_;?M_V??A5K%W,O@[PK\-_AYILM]J\<<A1[A9M1CGD@@#JR*SO(TI1
MSL5=K-L?\%+F_P""Z/\ P2@^$EY^V3^SU^WDGQ[^'OA=DG\:>!OB=\.M,2^L
M+0N ;M;C3HK>2XA4L/,"M$T2_/AE#E #]9Z*^ ?^"*O_  7Y_9\_X*Y:#<^
M;O05\"_%O1;'[3K'@FYO1-%?VZD*UY83$*9H@2-\; 21%@#O7$C?0'[?'PD_
M;J\?_"_4=?\ V!_VKU\!>-M.TJ1M(T/6/"NFZCI.KW*DNL<[W$#36[/Q&)$?
M8G#&-N: /?J*_DV\(?\ !VG_ ,%FO#?C+3=8\5_&#PQKNG6.HQ2ZCH=SX&TZ
M"._A1P9+=I885DC#J"N]&##.0<BOZ8?V /V[/@=_P4<_9<\._M3_  $U?S-+
MUF'R]2TN>13=:-J" >?8W 'W98V(YZ.C)(N5=20#VBBOSS_X+P>/_P#@H_\
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
MB\:RZ@C>(HOA-I%\UG]FTZZO<B I%OW&WV??7&_/.,$ _I?HK\J_^"@NC?\
M!QI^PK\"/$'[3OP;_;[^'_QJT;PAI\NJ>)/#>I?!6ST6^BL(E+S30K!+*+@1
MQ@NX\R-MJ,5#'Y3P'_!$/_@Z?3]O#XW:5^R%^VM\-=!\(>./$3F#P?XI\+O+
M'I>KW04D6<L$[R/;3N =C"1DD<[ L;% X!^R=%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
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
MP\%?$G4=)6'QA>2:)8:7K!C,>KS/:SS/9K')Q,6MX+AS'@Y2-^" : /Y6O\
M@A'_ ,'&7CG_ ()3:/-^SG\:O -WXV^#VH:J]]';:7,B:KX>N),>=+:>80D\
M3XW-;NR#?EUD0EP_]('[)7[??[!7_!5#X.ZHW[/'Q=T+QMI.HZ5):^*?"EWF
M'4+6WG0Q20WEE+MEC1@S)O*F-^=C,.:_)C_@JO\ \&=UCXLUK5?C;_P2Z\66
M6DS74CW-S\)?$UV8[7><DIIUZV?*!/W8+CY 2<3(H"#\3];\-_MN_P#!+S]I
MRW&MZ7XS^$'Q0\*7 GLY&$EG=1C) DC<?)<6[X(RI>&5<CYE)% ']F'[+?P8
M\-_\$[OV%?#?P9USQH^K:+\)_!4D5QK;6?DM+9VB/(7,>]L$1K@_,<D=LU_&
M%^UW^TU\5_V]_P!K?Q=^TC\2KR6[\0^/?$KW$5L\I9;2)W$=M9QD](X8A%"@
M_NQCO7]1G_!-;_@H)XR_X+3?\$4_B#K^K:7;P?$U?"/B'P3XJMM.BV17.JMI
M9$-U#&/N+/'<POM'RK(9$7A17\G7PTU>T\,_$OP_KVJ?)!I^NVEQ<[A]U(YE
M9L_@#0!_=E\ _@_X8_9[^!O@[X#^"[6.'2/!GA>PT338XTV@0VMND*G'J0@)
M]2:T_B1X \+_ !8^'FO?"WQQIJ7FB^)=%NM*U>SD *SVMQ"T,J$'J&1V'XUL
MJRNH=&!!&00>"*6@#^%CX%?&SXL_L!_M@:+\9_A?K+6OBKX9^,3);R(Y1+AK
M>9HYH),=8I4$D3K_ !)(P[U_<1\*OB+X?^,'PO\ #?Q:\)NS:5XIT"SU?3&?
MJ;>Y@2:,GWVN*_A5_:-UFQ\1_M"^//$&F2*]M?\ C/5+BW9>A1[N5E(_ BO[
M</V"/ &O_"C]A?X+?"WQ9;O%JOAKX3>'-*U**489+BWTRWAD4@]"&0B@#^>7
MXN?\$*3^U;_P0B^#'_!0[]D_P>9/B9X8\):BWCWP]IT&9/%&EPZI>@7,:J/G
MO+>-<8^]+"NP9:*-&^6O^"$O_!8OQS_P26_:CCUC79[W4_A/XQFAM/B-X;@)
M<I&"1'J-NG3[3!N8X_Y:QEXS@E'3^C__ (-S?^4+/P*_[ FI?^G>^K\?O^#I
M'_@A/_PS#XTU#_@HM^R9X-\OX<^)=1W_ !"\.Z=!^[\,ZG,^/M<:*/DL[B1L
M$?=BF;:,)*BH ?K3_P %[/B)X&^+G_!!;XR_%'X9>*;+7/#WB'P+IVH:)K&G
M3"2"\M9=0LWCE1AU5E(-?=EA_P >,'_7%?Y"OXY_V5_^"PWCSX9?\$N_C5_P
M2S^+\U[K'@_QGH*S?#B[W>8_A[4A?07$UMR<BUG5)'P/]7-R!B61E_L8L/\
MCQ@_ZXK_ "% $M?AW_P>E?MO>+OAS\$OAQ^PMX%UJ6T@^(%S<Z]XU\B0JUQ8
M6;QI:6S?WHWN&>5A_>LX^V17[B5_-Y_P>[> ]?T_]K3X*?$^>!QI>K?#J]TN
MTE(^4W%I?M+* ?4+>PG\10!O_P#!D%\#=$UKXO\ QW_:/U*P1K_P]X>T;P]I
M,[KDHE]-<W%SM/8_Z!;?@WUK^B2OP<_X,<M;L)OAQ^T9X;21?M5MK?AJYD3/
M/ER0ZBJGZ9B:OWCH _G[_P"#X/X+Z'#J'P!_:(L-/C34KF'6_#NJW03YI8(S
M:W-JA/HC2WAQ_P!-374?\&57[;7B[Q?X#^)O[!'C/69;NR\)+!XI\$QS2%C:
M6UQ*8;^!<_=C$YMY54<;[B8_Q5H_\'P&LV,'[/7P%\/22*+FZ\9ZQ<1+W*16
MD"N?SF3\Q7SG_P &2G@#Q!J/[='Q<^*5M;N=*T;X3+I5Y*!\JW%YJ=I-"I/J
M5L9R/]TT >[_ /!\9_R3+]G3_L/>)?\ T3IU4O\ @QL_Y%3]I7_L(^$O_1>K
MU=_X/C/^29?LZ?\ 8>\2_P#HG3J^:_\ @UG_ ."?;?MX_#7]H+1D_;+^./PE
M;2I?#T*GX/\ CLZ/#J)G34N;Z,1-]J5/*PJ[EP)9!GYL@ _=KX:?MWZ'\8/^
M"IGCW]B3X>>+++4M,^&GPLLM2\5K:*C_ &;7+J_91;-(.0\=LL;,@. 9\'YE
M('JW[.O[-G@G]FFU\9V'@6YG:W\:_$/5O&%]#*B*L%YJ$BRW")M ^4R!GYYR
MYYK\J?\ @@1_P3-^*G_!*S_@KE^T#^SS\2?&G_"56NI?"[2]=\,^+Q;M$VL6
M$^I2IYLB,SF.998I4D7<WS)N!(92?V:H *_"_P#X.K?^"HFG?LZ?MA_LZ_ W
M3/!&F>,[?X;:PGQ,\3^$]6N66SOKY6D@TF.<IDCRREU,R$'<LL>1@\_NA7Q#
M^V1_P;T?\$R/V\/CAX@_:/\ VB?AOXFU#QGXD6W74-8L_&U] $6"".WB6.$2
M&&-5CC08"8)!)!))(!^=W[,G_!XG^Q]XGUZUT']K?_@G4GA*TE<)-XB\%W%K
MJ\<>3C>]K-!;NJ#J=DDC8SA2>#^T7[)?QW_97_:>^#UC\=_V0?%_AO7O">N#
M]WJGAR!8@9$',,\>U7BF3=\T4JJZ;N5&:_$G_@H9_P &7]EH7@S4?B+_ ,$V
MOCAJ^J:E90O.OP\^(4L#/?8&3':ZA$D2H_&$2:/:Q(W3+C)^:O\ @T^_:B^-
MW[+/_!69/V)_$JZII^B_$B#5='\5^%=21X_[/UC3;2XNHYVA;!CGC-K-;MD
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
MXRETL6D]K<:;X9^)NO>'X+R&8*)([F/2KVV6Z4A0,3!P 6 P'8'Y+_XA<?\
M@A1_T8S_ .9-\3__ "SH ^^[.\M=0M(K^QN$F@GC62&6-LJZ,,A@1U!!SFOY
M=_\ @\_U&RO?^"KOA:VM+E))+/X':1#<HK9,;G5-6D"GT.QT;Z,*_HB^"_\
MP3^_9P_9Z^&M[\'_ (13?$;2O#=YI*:;%IDGQL\572Z=:H<HEBUQJ3OIQ'0-
M:M$V.,XXKP;XC_\ !M__ ,$<?C'XSOOB/\7?V6]<\5>(M3</J6O>)/C'XMOK
MV[8*%#2SS:JSR$* ,L3P * /.O\ @TPU&RO?^"*O@:VM;E))+/Q3XAAN55LF
M-SJ,L@4^AVNA^C#UK]**^8/V5/\ @CE_P3__ &'M936?V3OAOXQ\#J-02^N-
M+T?XR>*O[.O)U "O<V,FIM;77  Q-&X(&"".*^GZ /._VLOVGOA3^QE^SEXO
M_:>^->MI8^'/!VBRW]ZQD"O<,HQ%;1 _>FED*11K_$\BCO7PS_P1P_8)_98_
M:Y_8QM?V\_VT_P!F?X8_%#XD_'WQ-JGCK7M8\8^"[#66TV.ZN&CM=-MI;N*1
MHK>"VAA41 @*Y<8KZG_;6_X):_L1?\%$KS3;C]L;X8:WXPM](@6/3M)_X6+K
MVGZ="5:1A-]BL;Z&W,_[QE,YC,I7:A<JB@._9#_X)?\ [&O[!\L,?[*7@_Q?
MX5T^W298O#W_  MGQ+?:.#*27?\ LZ\U"6T,A))\PQ;P22""<T <[\8O^"+G
M_!+CXL_";Q-\+[;]@;X,^')?$6@W>G0^(/#OPLTBTO\ 3'FA:-;JVFBMU>*:
M,L'1E8$,HYK^0KPUXA^-O_!,O]O*/6--GCM?'GP2^)<L,ZQR'R9+W3;QHIHB
M1]Z&0QNC#HR.1T-?VX_%OX2>%/C7X/?P-XRU3Q-9V4DRRM-X2\:ZIH%YN4$
M"[TNYM[@+R<J)-IXR#@8^,=;_P"#8W_@B%XFUJ\\2>)/V,;K4-1U"ZDN;^_O
MOBIXIEFN9I&+/+([:F6=V8EBQ))))- 'UK^RI^TK\,?VQ/V<_!W[3GP<U9;S
MPYXTT*#4M/8.&>$N,26\F/NRQ2!XG7^%XV':OYA_^#OK4;*]_P""QNIVUK<I
M))9_#K0H;E5;)C<I+(%/H=KH?HPK^B7]G#_@DE^PU^R#X!U[X7?LR>"_&_@G
MP_XDB":GI6@_&CQ7%$K>9'(9H/\ B9DVDY,2!IX#'*R;HRY1F4^4^._^#:__
M ((Q?%+Q??\ Q!^)O[)VK>(]?U6<SZIKFN_%[Q9>7EY+@#?+-+JC/(V !EB3
MQ0!S'_!K<=$\1?\ !";X1Z%=1V]Y"DWB>TU&TE19$._Q!J3&-U.008Y%)4]0
MWH:_"C_@XR_X(YWW_!+W]JYO''PGT&4?!OXCW4UYX,FC4LFBW6=\^D.W;R\[
MX2>6A(&6:*0C^E#]D[_@D-^P;^PQJD>H_LF_#WQCX*A2^^V2Z-IOQB\4OI=U
M/M"^9<:?-J3VMR=H _>Q/P!Z"O3?VL_V/OV;?VY_@Q>?L^?M6_"RT\7^$;Z[
M@NIM+N;J>W9)X7W1RQ3VTD<T+@Y&Z-U)5G4DJ[ @'YQ_\&NG_!:*+]N?X Q_
ML9_M"^+Q+\6_AOI:)IM[?3YF\3Z''A([C<3F2X@^6*;^)E\J4EBTA74_X/$-
M0LK/_@D%]FNKE(Y+OXI:)%;(S &1Q'=N5'J=J,?HIKVOP%_P;9_\$9?A5XPL
M/B'\+_V4=8\-Z_I4_G:7KF@?%_Q99WEG)@C?%-#JBO&V"1E2#R:[K]I'_@B=
M_P $Z?VPKV&\_:D^&?C?QZ+2ZEN;&T\3_'#Q?=6UE+(27:W@?53%;YSC$:J
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
MIG_@E!^Q/^V1H<7A3]IOPOX\\8:+%;6D(T#4OC9XL73G^S1K'#*]I'J:PR3
M(&:=D,KN6=W9V9CXUX>_X-D_^"(_A'7K/Q3X4_8VO-,U/3KI+G3]2T[XK>*H
M)[69&#)+'(FJ!D=6 (92"" 10 G_  <!_P#!(/0_^"J_[(4T'@;3+:'XM^ X
MI]1^'>IOM0W9*@SZ5*YX$=P$4*20$E2)B0N\-_-M_P $A/\ @I9\7/\ @CM^
MW-;_ !(U#2-4'AZ6[.@_%CP5-&T<MS9+*5E!B?&V[MG#/'NVD.K1DA9'S_8Q
M\)OA/X6^"W@V'P)X.U3Q+>6,$K2)-XL\9ZGKUX2W4-=ZG<7%PR\<*TA [ 5\
MM_M&?\&_7_!(3]K'XT:[^T)\>/V.K35O%WB:Y6YUW5++QAK>G+=S!%0RM!97
ML4(=@H+,$!=LLQ+,20#ZH^$OQ8^'7QV^&6@_&3X1^+K/7O#'B;2X=1T/6+"3
M=%=6TJAD<=QP<%3@J000""*Z&O$/V,/^"=/[)/\ P3XT"]\(?LC^!==\+Z+?
MG=+H-S\0=<U33XGW%C)#:ZA>3PV\C$G<\2(S\!B0!7M] !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
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
MHU2S\1W/P=\)SV7A_#,L>JWMQ?/'IT3Y"L TES )=H^4"0C(&: .H_X*<?\
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
M[?3M1_;!_P""*7CWP=8:K.8-/U>3XG:?>V,TP!/DBZL[:6$2%0S!"X8JI(!
M)K\>?^#4S_E-]\+?^P/XC_\ 3)>5_3]_P40_8Z\)_M]?L6?$3]DSQ9%9K_PE
M_AR>WT>^O8BR:=J:CS+*[X!/[JX2*0[>2%([T <O^V)^V7^T1^S?^SG=_M4?
M"O\ 9%L?B)X6T;P/_P )+XAM(OB&NF:I:PI"T\XB@DLI([A8X5WD^<KMAE6,
MD#=^9OPR_P"#T3P]\8?B1X?^$?PY_P"":?B/4O$/BG7+32-!TZ/XE6RM=7MS
M,D,$0+60 +2.JY) YY-?JC^UOX;N/"7_  37^)WA#4)HYI=,^!VM6<\D6=CM
M'HTR$C/."0>M?Q]?\$C5#?\ !57]FL,,_P#%^?"1Y_[#%K0!_:!\$?%7Q\\5
MZ+<WWQ[^#F@>#+P-&;*QT+QJ^M;T*Y?S7:RM1&RG POF \G=Z_'7_!47_@L7
M^TE_P2QLM.\;_$W_ ()SR>+O!>O>)SHF@>)O"/Q025I+E_,:VBN+:33UD@EF
MCC9@J^8@92GF,<;OONO@+_@XT@AG_8Q^':SQ*X'[1_@; 89ZZD ?T)'XT ?2
M'PX^,/[<?C+X/S^.?%G[&/A;POXGECM)=*\&ZE\73,Y1]QG6ZN8-+>.WDC 3
M"QB=7+,"Z;<G\S_VJO\ @[LOOV,/VA/%'[,'Q]_X)FZWIGBWPA?K:ZO:0?%"
MVFCRT:2QR1R+98=)(I(Y%/!*N,@'('[.U_('_P '1ZA?^"ZWQQP,9'ADG_PF
M=*H _>KX3?\ !87_ (*-?'?]G[0?VH/@W_P0[\3>)/!GB721J6CWVF_'303<
M3VQ) 86KHLY8X.$";N.E>7?!O_@[M_8<U7XQR_ C]KGX!?$SX(:]::FVGZI-
MXITV.YM=*N5;:T=V(RMS 0W!_<$+R6*@9KZI_P"""7_*'+]GG_LG5M_Z')7X
M3_\ !Y?X#\">$O\ @JSH'B+PI9V\&I>)O@_I>H>)1 H#3727VH6J2OC^(V]O
M G/.V)?:@#^H;PYXC\/^,/#]CXL\)ZY::GI>J6<5WINI:?<K-!=02*'CECD0
ME71E(8,"00017YD_\%+/^#AGX\_\$I?&^D^%/VI/^"8&H-I_B&*1_#WBKPY\
M5(KO3-1,>/,B21M.1DE3<I:.1%;#!@"IS5K_ (-'OB1\2OB#_P $=M$T_P"(
M5Y<W%MX9\<ZQH_A>:Z)8G34,,RJK'DHDT]Q&O90@48"@#0_X.-/V6_"7[;%A
M^S%^RCXYUR\TS2_'7QX;2Y]2T\*9K1FT'5#',H;ABCJC;3PP!&1G- $W_!('
M_@Y-_9L_X*M?&;5/V=[CX67OPR\9QV'VWPUI6L:_'>IK\2!C<)!(L46)HE <
MQ$$M'O=21&^/T,\=:AXUTKPC?ZA\.O#%AK6MQ0[M.TO5-7:PM[F3(^5[A89C
M$,9.X1/TQCG(_B4_:B_9K_:O_P""1_[;MS\,/&%[>^&/'OP_UN'4O#/B;2'9
M$NHTDWVFI6<A'SQ/M##/((>-P&5U']4?_!"[_@L+X"_X*U?LM1>(]4ELM,^*
M?A&*&S^)'AF!@H$Q!$>H6ZDY^S3[6('_ "S</&2=JNX!P>D_\%K_ -LK6/\
M@H#>?\$U[;_@DIJ*_$2PT;^V[NXD^,%H-+CTC*@:E]J%B0;<LZ1C"E_,;RR@
M<%1^AOAJZU^]\.:?>^+-'MM/U6:RB?4K"SOC<PVUP4!DB28QQF5%;*ARB%@
M=JYP/BO3;2V3_@Y*UB[2!1*W[$.G;G Y/_%7WG_Q(_(>E:/_  75_9&_;X_;
M-_8SMOA?_P $\_CU)X&\76GBNVU#54A\03Z2^LZ>D4R-:"[@^:/$KQ2[3A'\
MK!(P 0#SS_@N_P#\%VM3_P""-NJ?"_0?#_[./_"<W7CV:]N;V>^UAK&WMK*S
M:!98XG6*3?<,;A<9&V, $AMX ^__  1XIMO'/@O2/&UGI]S:0ZQI=O?16M['
MLFA66-9 DB_PN V".Q!K^?K]HJV_;K\$?!KX1?LC_P#!8CX7^#?C+XG^$_CZ
MS^(>F:SI'Q"CO==MO">GDG4AKZ^2[)IK1L@>^<EF"H"DSH67W/P_^R!_P<8_
MMG?\%(/A_P#ML^,OVJ/"7@7X1V?B*PU73M%^'7Q0EO\ 0TT!9$E>UBM[=1'J
M<D\6Y'FF&V4N3E(PB* ?M-1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% 'X$_P#!\GK'B*+2_P!FK0(FD729[CQ9<3A?N/<HND*F
M[W5)),?[[>E<'_P8_OI0_:)^/*3!/MQ\%Z.;?/WO*^US>9CVW&+/X5^CG_!S
M=_P3:\7_ /!0W_@G;<7GP>\/RZGX_P#A=JA\2^'--M8B\^IVPB:.]L8@,EG>
M(B5$4%GDMHT'+U^&?_!KQ^V[X2_8D_X*IZ-9?%37(M)\-?$O1+CP;JM]?2".
M&RN9I89K.60M@*/M-O'"6. HN&)( - ']<5%%8OQ'^(_@'X0> ]6^*'Q3\8Z
M=X?\.Z#8R7FLZUJUVL%M9P(,M)([$!0!_AUH VJ_CQ_X.9_^4XOQW_[".B?^
MF'3J_K6_9M_:!\ ?M5? SPU^T3\*C>MX:\7:>+_0IM1M#!+/:L[".8QMR@=0
M'4'!VL,@'('\JO\ P=9?"?Q+\-O^"UGQ(\2:UI\D5CXUT;0M<T.9T($]N-+M
M[)V4]P+BSN%_X#0!_1%_P0$_Y0U_L]_]B!%_Z.EK[ KXC_X-R?'F@?$#_@BW
M\";_ $#48I_[.\.7.EWJ1N"T-Q;7US"Z,/X3\H;!_A93T(-?2G[87[0_@O\
M9,_9:\?_ +2/Q UN"PTOP;X5O-2EFN) H>5(F\F%<_>DDE,<:*.6>15')% '
MR9_P:^@C_@AC\$,]V\3D?^%/JU;/_!6__DZC]B#_ +.9C_\ 3+J-=%_P0(^#
M/B/X!_\ !';X"?#KQ;I<MEJ!\&MJT]I.A62(:C=SZBJLIY5MMTN0>0<@\USG
M_!7!U7]JC]B#<P&?VF8\9_[ NH4 ?G%_P>F?L"[9/A]_P4?\#:+PVWP=X^>"
M/O\ O)].N7Q_V\P,Y]+=<]!6'_P:)_\ !4[P3\#O@W\:/V3_ -H+Q@MCH'@O
M0;WXD^'KFXD_U5E;Q :M FXC) 2WG2,=2UPV.IK]NO\ @H!^R'X1_;R_8S^(
MG[)7C/RDM_&?AR:TL;R9-PL;]<2V=UCOY5S'#+COLQWK^27_ ()/?\$\OBA^
MU%_P5:\,_L1>,-*U+1_[*\2WMM\5K6*5XGM-*L&==4M960_*)0C6G<%YU!!!
MH _I"_X)H?"/QMIW_!-WXG_MC?&S26M?B-^TG!KGQ%\40S<O86=W:.-)TX,<
M-Y=OIZVX5",HTD@K^5S_ ()[?\G]? __ ++!X9_].MM7]M'Q^M;/3OV<_&MC
M8VT<%O!X)U)(88D"I&BV<@"J!P  , #I7\2__!/<@?M\_ \D\?\ "W_#7_IU
MMJ /[G:_CM_X.7?^4X/QX_["NC_^F/3Z_L2K^1G_ (.JOA-XF^&G_!:WXE^(
M-;T^2*Q\::5H>N:',Z$"XM_[+M[-V4]P+BTN$X_N4 ?T5?\ ! [_ )0X?L]?
M]D\M_P#T9)7UVQ 4DGM7Q1_P;H^/- ^(/_!%[X#ZAH&HQ7 T_P ,3Z7>+&X)
MAN+6]N('1A_"<IG![,#T(-?1G[9G[0_@O]DW]E'XA?M'_$#6X+#3/!_A*]U%
MYIY HDF2)A#"N?O222F.)%ZL\BJ.30!\H_\ !KZI7_@A;\"PPQ^Z\1G_ ,N3
M5*^3/^#W#_DRWX.?]E1G_P#3=/7WC_P02^#/B/X!_P#!'OX"?#GQ;I<MEJ'_
M  A7]JW%I.A62'^T+F?4%5U/*L%NAD'D'(/(KX-_X/<"/^&+O@X,\_\ "T)_
M_3=-0!X;_P &.O\ R5G]HC_L7?#O_H^_K^B"OYWO^#'9U'Q;_:'0L,GPYX=(
M'L+B^_Q%?T0T %0:GJ>G:+IMQK&KWT-K:6D#S75S<2!(X8U!9G9CPJ@ DD\
M"OB2W_;CB^/O_!>+3?V(?A+XZGFT+X-_!?6]?^(L6FWS?9;G6[R\TVVMK.=5
M.V1[:"1I,'.UKIAPR$!?^"Y7QC\5:A\%/!W_  3J^"WB(V/Q%_:D\5IX)TZ>
M!LRZ9H! DUS4MO4I%9;XSCG_ $@$9Q0!Y_\ \$YO@-X4_P""G?A_]H[_ (*"
M?M"^'9;OP]^TN+SP/\/;&[CVRV7P]L!+96[QAQF"2ZG\^[8?WUBD4]#7\R?Q
M \)_'C_@EA_P4!OO#45^UAX\^"OQ%#V%\(RL<TUE<B2"X"YRT,R+'( >&CE
M/!K^ICP'_P $&].^%_@K2?AO\.?^"MO[:&AZ!H.G0V&BZ-I?Q8TR&VLK6) D
M<,4:Z2 B*H   P *_'S_ (.D?^"-M_\ L43>#/VT/#'Q\^*'Q1M/&.HOH7CC
MQ+\5-;MM2U&WOXK=38#S[>V@W1O;PS( ZDK]F4!L,  #^C']D']IGP'^V5^S
M!X%_:E^&<P.C>.?#=MJEM#Y@9K5W7]];.1QYD,HDB?\ VHVKT>OPA_X,O/\
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
M\K^N:OY&?^#4T@?\%OOA9D]=(\1X_P#!)>U_7-0!Y-^WO_R8M\:?^R3>(_\
MTV7%?QQ_\$C/^4JO[-?_ &7CPE_Z>+6O[/\ ]I;X>:E\7?V<OB!\*-&*_;/$
M_@G5=)M-[8'FW-G+"N3V&7%?Q6_\$ZO$UG\$/^"E?P-\6_$;.D6_A3XW^&[G
M7_[0'E&RCM]7MVG\P-C845'SGIM.: /[B*^!?^#BT%OV-/AVHZG]H_P* /7_
M (F8K[ZZ]*_/?_@NQXAT[XF^./V4/V'O#,ZWGBOX@?M,>'M;GTF$[I8O#^CM
M)=:C>,HY"1CR^3@'YN?E- 'Z$5_('_P=(?\ *=;XX_[OAG_U&=*K^OROY _^
M#H\@_P#!=;XXX/0>&?\ U&=*H ^]_AK_ ,%PO^"@7_!)_P#X) ?L\:Q-_P $
M[_#&I>!=<\*#3/!OQ$N?B!+<PW$J!I$%W9PVR-:R.OF,L1F.\1/M;Y&Q\4_L
M0_L^_$+_ (.:/^"EWBKQ1^U[^V#H_@WQ->V,6IR:9:Z.[SW^FP8C:QTF%F$4
M2P1A.)'9P',I68B9J_<__@G#^R'\&OV\/^#=KX2_LL_';11>>'O%7PJ@MY)H
MP//L+A9':"[@8@[9H90LBGIE<$%20?YH?CY\&/VMO^"*7_!1&3PE)K4^A>/_
M (8>(HM1\+^)+.,K!J5MDM;WL0/$EO/%D/&<C#20N,AUH _LI_96_9@^#?[&
M/[/OA?\ 9D^ /AG^R?"?A'31::7:M)OD<EB\DTKX&^661GD=\#<[L<#.*^9_
M^"L7_)SW[$O_ &<U'_Z8=4KT7_@E!_P4F^%O_!4S]CK0/VE? !@L=7VBP\;^
M&4FW/HFKQHIF@.>3&VY9(G/WHI$)PVY1YQ_P5FFAB_:?_8D6255+?M-1[03C
M/_$BU,?S('XB@"A_P7?_ ."-G@;_ (*T_LR/9^';>RTOXM^#;>:Y^'?B28!!
M,Q&Z33+E^IMIB  Q_P!5)MD&1O1_Y<_V//VK_P!JK_@D!^W';?%7PII-[H/C
M+P1J\VD^,?"&L*T*7\"R!+O3+M/[K%.O)1T21?F137]NU?C?_P '0W_!"?\
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
MO^%];M-7T._7X'JYMKRVF2:&4*VLE3MD16P00<<BOVJ^!'AO]H[PQX;ET_\
M:1^+_@_QEJ8,8M-2\(> +GP^@0+AC+%/J=_YCLW.4:-1R-OIW-% !7Q1_P %
M,O\ @C'\(_\ @I!^U5^S_P#M(^-KJRMQ\)O$SS>++"XMRY\1:.O^DPV)P""%
MO(H\AL#RKFYYW;0?M>B@ HHHH _-3_@K%_P0W_:[_P""O-AX;\)_'3_@H_X1
M\-^&?">H3WND:#X1^ EPBR7$B[/.N);CQ!*TCJF5&W8H#M\N3FO&?V%O^#7;
M]KS_ ()N_$O4/BQ^Q_\ \%FF\,:KJ^F?V?JZR_L_VU[;WMMO#A)(;G5G0E74
M%7 #KR P#,#^R-% 'YR?';_@E)_P6:_:#\)77@7Q;_P<*ZII.E7L1CNH?!_[
M.^GZ-,ZD8(^TV>IQW"@C.0) #DUO?\$//^"%UC_P1JN/B;JMS^TRWQ-U'XCM
MI0>^E\'?V0U@EF;LE<&\N3*9&NLDY7'E#KGC[]HH **** / OV[?V<_VO?VH
MOAEXA^"WP%_:Q\(_#'P]XK\+S:/K-Y?_  IGUW5X_/66.>2VN?[8M8(0T+J@
M#6\C(0[!\LHC_)?X=?\ !E%XM^%'Q!T+XI> ?^"K;:?KOAK6;75=%OT^!ZL;
M:[MY5FAD ;62"5=%;!!!QR*_>6B@#A/@-X9_:2\+>'9M/_:3^,?@[QIJ(\I;
M/4?"/P^N?#ZA0I#F:*?5+\2.QP<H8E'(VG(QW=%% 'Q)_P %5?\ @@E^P_\
M\%7-OC7XG:5?>$?B+:VJV]E\0_"@C2[EC482*[B<&.\C7@#=B10-J2(,@^;_
M +.7[#7_  7W_8D^&-A^S_\ !;_@H#\#OB?X1T.W2R\.7WQA\ :K'J6FV2#:
MD2O8W1,@10 JRR28 "A@JJH_2.B@#\EO%G_!M5\6/V\_VD+3]IW_ (+&_M[7
MWQ-GL(E@T_P%X T'^Q=*L[96W?98YF=G2%B3O\N..9_O&8MR/U%^$/P?^%_P
M"^&FC?!SX+>!-,\,^%O#UDMIHVAZ1;"&WM8ASA5'4DDLS'+,S%F)))/244 %
M?FS_ ,%8_P#@B#^U[_P5XTCP]X(^-_\ P4=\(^&?"OA;5)M0TG0/"7P%N%$M
MRZ&-9KB6X\02M*Z1LZ#9Y:_.QV9/'Z344 ?DK_P3"_X-M?VG/^"3GQJU/XT_
MLU_\%/?#U_+KFC_V9KVA^*O@%)<65];^8LB[A#K\4B.C+E61QC)!# D']7/#
M-OXDM?#FGVOC'5;&_P!7CL8DU6^TS3WM+:XN0@$LD4#RS-#&S[BL;2R% 0I=
MR-QO44 ?FU_P5'_X(A?ME_\ !4+XNZ#XT\7_ /!4ZR\&>%O!'B%M6^'_ (*\
M/_!0R0Z7<+)F&YN)I-9S>W:(%7SF5$^^8XHA(ZG[B_9U\(?M/^"_"LVD?M0?
M'7PCX^U)&C%CJ_A7X=3^'#L"X<W$4FIWRRR,V#NC\E0.-AZCT.B@#P;]OO\
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
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
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
M_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8
M_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"
M2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/
M_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'
M_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8
M_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"
M2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/
M_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'
M_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8
M_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"
M2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/
M_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'
M_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8
M_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"
M2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/
M_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'
M_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8
M_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"
M2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/
M_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'
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
M 'K?@?Q%IGB_P7H_BS19%>SU32[>[M'0_*T4D:NI'MAA7XI_\&UOA^^^(/\
MP65_;W_:,TR-GT5_'NJ6D5T!\DCWWB&_ND"GOA+4DXZ!E]1GZU_9N^,/_!5'
M]EO]BS1_V)]=_8#\0^,?C#X(\/IX7\(?$73?$>D_\(9JUM;Q^18ZM=74]VEU
M J0K&TUNUL9I&C.T?O/D]=_X(Y_\$R-"_P""6?[(T/P9O/%$7B3QMXAU:77_
M (C^*XT8+J>K3!0PC+@/Y$:*L:;L%L-(55I&4 'U=1110 5X7X!_Y2">/_\
ML1-*_P#1C5[I7A?@'_E()X__ .Q$TK_T8U 'NE%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !6=8>$?"FE>(M1\7Z7X8TZVU;5XH(]6U2WLHTN;U( XA6:0#=((Q(X
M0,2%WMC&36C10 4444 %%%% !1110 4444 %%%% !7A?@'_E()X__P"Q$TK_
M -&-7NE>%^ ?^4@GC_\ [$32O_1C4 >Z4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %>%^ ?^4@GC_P#[$32O_1C5[I7A
M?@'_ )2">/\ _L1-*_\ 1C4 >Z4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%8^
MD^/_  3KOC'6/A]HWBJQNM<\/P6LVMZ3!<*T]C'<B0V[2H.4$@BD*D]=C8Z4
M ;%%%% !1110 4444 %%%% !1110 5X7X!_Y2">/_P#L1-*_]&-7NE>%^ ?^
M4@GC_P#[$32O_1C4 >Z4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
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
MQ16/]B\;_P#0;LO_  &/^-'V+QO_ -!NR_\  8_XT ;%%8_V+QO_ -!NR_\
M 8_XT?8O&_\ T&[+_P !C_C0!L45C_8O&_\ T&[+_P !C_C1]B\;_P#0;LO_
M  &/^- &Q16/]B\;_P#0;LO_  &/^-'V+QO_ -!NR_\  8_XT ;%%8_V+QO_
M -!NR_\  8_XT?8O&_\ T&[+_P !C_C0!L45C_8O&_\ T&[+_P !C_C1]B\;
M_P#0;LO_  &/^- &Q16/]B\;_P#0;LO_  &/^-'V+QO_ -!NR_\  8_XT ;%
M%8_V+QO_ -!NR_\  8_XT?8O&_\ T&[+_P !C_C0!L45C_8O&_\ T&[+_P !
MC_C1]B\;_P#0;LO_  &/^- &Q16/]B\;_P#0;LO_  &/^-'V+QO_ -!NR_\
M 8_XT ;%%8_V+QO_ -!NR_\  8_XT?8O&_\ T&[+_P !C_C0!L45C_8O&_\
MT&[+_P !C_C1]B\;_P#0;LO_  &/^- &Q16/]B\;_P#0;LO_  &/^-'V+QO_
M -!NR_\  8_XT ;%%8_V+QO_ -!NR_\  8_XT?8O&_\ T&[+_P !C_C0!L45
MC_8O&_\ T&[+_P !C_C1]B\;_P#0;LO_  &/^- &Q16/]B\;_P#0;LO_  &/
M^-'V+QO_ -!NR_\  8_XT ;%%8_V+QO_ -!NR_\  8_XT?8O&_\ T&[+_P !
MC_C0!L45C_8O&_\ T&[+_P !C_C1]B\;_P#0;LO_  &/^- &Q16/]B\;_P#0
M;LO_  &/^-'V+QO_ -!NR_\  8_XT ;%%8_V+QO_ -!NR_\  8_XT?8O&_\
MT&[+_P !C_C0!L45C_8O&_\ T&[+_P !C_C1]B\;_P#0;LO_  &/^- &Q16/
M]B\;_P#0;LO_  &/^-'V+QO_ -!NR_\  8_XT ;%%8_V+QO_ -!NR_\  8_X
MT?8O&_\ T&[+_P !C_C0!L45C_8O&_\ T&[+_P !C_C1]B\;_P#0;LO_  &/
M^- &Q16/]B\;_P#0;LO_  &/^-'V+QO_ -!NR_\  8_XT ;%%8_V+QO_ -!N
MR_\  8_XT?8O&_\ T&[+_P !C_C0!L45C_8O&_\ T&[+_P !C_C1]B\;_P#0
M;LO_  &/^- &Q16/]B\;_P#0;LO_  &/^-'V+QO_ -!NR_\  8_XT ;%%8_V
M+QO_ -!NR_\  8_XT?8O&_\ T&[+_P !C_C0!L45C_8O&_\ T&[+_P !C_C1
M]B\;_P#0;LO_  &/^- &Q16/]B\;_P#0;LO_  &/^-'V+QO_ -!NR_\  8_X
MT ;%%8_V+QO_ -!NR_\  8_XT?8O&_\ T&[+_P !C_C0!L45C_8O&_\ T&[+
M_P !C_C1]B\;_P#0;LO_  &/^- &Q16/]B\;_P#0;LO_  &/^-'V+QO_ -!N
MR_\  8_XT ;%%8_V+QO_ -!NR_\  8_XT?8O&_\ T&[+_P !C_C0!L45C_8O
M&_\ T&[+_P !C_C1]B\;_P#0;LO_  &/^- &Q16/]B\;_P#0;LO_  &/^-'V
M+QO_ -!NR_\  8_XT ;%%8_V+QO_ -!NR_\  8_XT?8O&_\ T&[+_P !C_C0
M!L45C_8O&_\ T&[+_P !C_C1]B\;_P#0;LO_  &/^- &Q16/]B\;_P#0;LO_
M  &/^-'V+QO_ -!NR_\  8_XT ;%%8_V+QO_ -!NR_\  8_XT?8O&_\ T&[+
M_P !C_C0!L45C_8O&_\ T&[+_P !C_C1]B\;_P#0;LO_  &/^- &Q16/]B\;
M_P#0;LO_  &/^-'V+QO_ -!NR_\  8_XT ;%%8_V+QO_ -!NR_\  8_XT?8O
M&_\ T&[+_P !C_C0!L45C_8O&_\ T&[+_P !C_C1]B\;_P#0;LO_  &/^- &
MQ121AQ&HE8%MHW$#@FEH **** "BBB@ HHHH **** "BBB@ HHHH \>^+7[8
M7@CX-_MB?"7]D[QDUI9S?%[P[XGN_#VI7-Z(S)J&DMI3+8HA&':6"^N90<@C
M[)M ;?Q\V_&#]GW]F#]IG]HO]LSX8?MB:+I5QX ?X<>"+O6[_50JC2$ALM:<
MZA%*P_<2P -(LHP5VGL2#]&_MB?\$^OV/_V^-'T32?VK/@Q:>)Y/#%S+<>&-
M42_N;&_T::0QEY+6[M)8IH"QAA)VN 3$A(.T5\X>%O\ @@]\#M4^/'C_ ,0_
MM"?$?XB_$7X=>(K#P]'H_@[Q;\7]=ODNY+!;K>NJHTJB_B1I8C!',\RJ/,RH
MS@@'B_\ P:9:EXS^#W_!&'5/B'^T/XE_L7P39^/M>U?PKJWB*X%M;6?AV*WM
MC/<EY"%BMQ=Q:A(23M!\QLX.:_3'X,_'CX*_M%?#NU^+GP&^*WA_QAX8O=XM
MM>\.:M%=VKLO#KYD;$!E/#*<%3P0*GU?X.?"C7?A'=? /4_AUHS^";SP^^AW
M'A1-/1+!M->$P-:"%0$6'RB4V  !>!BOC#X7?\&U7_!)#X1>)+W6/"7P2\2_
MV;?R[[SPK=?$?6'TFXP3M2:V%R!<H <;)C(I'!!H Q/V(?A/X<_:*_X+<?'C
M_@I_\*3#<> ++X>6/PQT3Q+:<VOBK589K>;4KNVD'$\-L;2"S\X91W1PA;RR
M1X)XK^%EW_P3[_X.P?#WQ_\ $$!LO O[5/@FZT73=8<;;:'6TM;8263,?^6L
MEQ86C@<[FOD Z';^O7A/PEX5\!>&;#P5X&\,Z?HVC:5:):Z7I.E6:6]M9P(
MJ1111@+&B@ !5   XKB_VGOV4/V??VROA?)\'?VD?AK:>)="-Y%>6L<TLD%Q
M8W<1)BNK6XA9)K6=,G;+$ZN Q&<$@@'P3_P=<>+M:U[_ ()TZ#^Q[\-M-DUC
MQW\</BCHOA[PKX:LL-<WYAG%V[(O=%DAMD9NBF=,D UY[_P79_X)->(9/^#?
MCP)\#?A38'6?$'[-6CZ/JD@L(BTFI6UI8M:ZHZ+C/(E>[(X.+<@<X!_0+X'?
M\$V_V8O@;\6H?V@([/Q5XT\?V>G-IVE>-OB=XUU#Q'J6EV;##6]G)?S2"T5@
M6W&((S[FWLV37O+HDJ&.1 RL,,K#((]* /$_V+_VL?AU\>/^"?\ \/OVPKGQ
M;90:#JOPWM-;US4Y[@"*P:*U!OA*V<*8)8YT?T,3>E?GE_P:I?L\^,-<M?V@
M_P#@J#X\\/W.GK^T!\1[JX\'Q7L12233(KV[N);E1W26XNC&#ZV9(X()^RK_
M /X(J?L"7?\ :OAVR\%^+-,\$:]J[:IKWPGT3XBZO9>$=0NV8.TDFD0W*VVU
MF"LT*JL+%%W1G%?4?AOPUX=\&^'K'PCX0T&RTK2M+M([73=,TZU2"WM((U"Q
MQ1QH J(J@*%4    "@"[1110 5X7X!_Y2">/_P#L1-*_]&-7NE>%^ ?^4@GC
M_P#[$32O_1C4 >Z4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %>%^ ?\ E()X_P#^Q$TK_P!&-7NE>%^ ?^4@GC__ +$3
M2O\ T8U 'NE%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !7A?@'_E()X__ .Q$TK_T8U>Z5X7X!_Y2">/_ /L1-*_]&-0!
M[I1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 45Y/^V7^VK\ _V#_@_P#\+G_:!\0W
M5O97.IP:7H6D:38M=ZEKNISDB"PLK9/FGN)"#A1@  LQ55+#Y2T/_@KE^V-H
M_P ;OBC#\1/^"6GQ.E\$>"-#T#4YM*\.:EH=[XET6VO8KR1I[FRCU _:C((
MP@MF>6$1N'!)& #]!:*\[_9-_:G^#7[;'[//AG]J']G[7;G4O"'BRVEFTB[O
M-/EM93Y4\EO*CQ2@,K)-#(AXP=N5+*03V/C;QIX3^&_@[5?B%X]\16FD:'H6
MG3W^L:K?S"."SM84,DLTC'A45%9B3T H TZ*^4?^"47_  5C^%/_  5J\!^/
MOB?\&_AWJ^A:%X,\<2Z!97.LW"-)JL0B2:.[$:@& .DBGRV+%3P2:[W]N+]O
M_P""/[!WA7P_>_$>UUC7_%/C?7(]$^'GP]\*6BW.L^*-2<JHM[6)F10JET+R
MR,D<89<MN9%8 ]QHKY1\,_\ !3ZX\#_'WP;^S=^W)^S)KOP1UWXE.\'PYU;5
M/$>GZOHVMWJ;=VFF]LY"+:].]=D4J!9<XCD=B%/T_P"*O%/AKP-X8U'QKXRU
MZSTK1](L9KW5=3U"X6&"TMHD+R32.Q"HBHK,S$@  DT 7Z*^(=#_ ."R>O\
MQ)^$FL?M<? 3]@+XF>-O@1HCW3R?$>RO].M+S5;*U=ENM0T[2+F9+F[MDV.0
MS&*1PC[8R5Q7U9^S[^T#\'_VI_@SX>_:!^ ?CFS\2>$?%%@MYHVKV1.V5"2K
M*RL T<B.K(\; .CHRL RD  [*BBB@ KPOP#_ ,I!/'__ &(FE?\ HQJ]TKPO
MP#_RD$\?_P#8B:5_Z,:@#W2BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@#\E/^#J[P
M1^T=X*\,?LY_\%"?@?X-F\2:3^SG\4#XE\5:+&K/&H\ZQGMKN=5!(@22R:)Y
M #L%T#P,D>N_\$:_^"B/[/'_  4F_:M^//[1'P&U>>&#6/!_@077A_5T$5_I
M]Q!#JJ7$3IG$BQNZ+YL9:-MZX;)P/T%U&'2-3AD\/ZM%;7$=[;2++97*JXGA
MX60%&^\GS@'@CY@#UK\$?VVO^")/Q5\!_M]?&S]I_P#X(M>)3\+/''P:T?PY
MXBT[P+X<WQ0ZN=0@OI;R*TRS)&6^R "R9#;RB1H\(,*0#]N/V9OV>O"/[+GP
MG7X.> Y<Z1!XDUW5;&$0+&MJFI:O>:E]F15X"0F[,2^JQJ3R:^:?VAFE_P""
MG/[54_[$/A^1IO@A\*-4M;_X_:G"<P^)]:79<6/A)&Z/%'^ZN[\#/R_9[<[3
M)(!\Y_";_@O1\??VC_\ @@KXB_;K^$_P0O=3^,VBZW_P@^IZ5X4T62^CMM8?
M[/G58;49:2)+>ZCN1"3M\P&(ML!>N*_9+_X+U?!/]COX#:)\!?AM_P $EOVN
MKFVTQ))M3UK4O *2WVMZC.YEN]1NY#+F6YN)WDE=CW? PH  !=_X,Y8XX?V9
MOV@(88U1$^.MR%51@ "R@P *Q/A]\2]1_;5_X/"=9TGQ#*;S0/V=/AO?6WA6
MRD.8[><6EO#<S;.GF&ZU68;NN(HN?D7'@O\ P:L_\%)M,^"6L>*OV5Y_V6_B
M?KTOQ5^-HGB\7Z%H*S:1X?\ /ABBVW\VX&%DV[F&#A2#7L'_  3L\.77P9_X
M/ ?VG/"OBR(Q3^*/A_J=YI#2# G2[FT/44*$_>_=+(..A1AV- 'TG_P=D_#>
MU\5_\$<_$WQ-B=X-4^''C7P]X@T2_@<I-:7#ZA'I_F1N,%6VWS<@]<'M7RQ_
MP75_X*:_$#XC?\&WWP-\766MO!XA_:$MM%LO&=Q;ML,L5M://J07;RJR7EO$
MI4<&.1U/!(/V!_P=6>)K/0?^"'OQ8TNZE"R:UJ?ANRM@3]YUUVQN"!_P&!S^
M%?ES_P %G/V=?''@3_@VQ_8>\1:IIDZ1Z$T#:DC(<V_]L6$U] 7'\/RIM.>C
M,!P3B@#^A']DCX/:'\"OV3?AO\"=)TN*"Q\*^ =*T=;4(-I$%G%$V1W)*DDG
MJ22>M?E5_P &M?Q-U/X0_M3?MB?\$S#?2-X=^&GQ5O[[P;9,Y*V<<>I7>G7:
M+GHA^SV3!1P&WGJQ-?L1X'\1:9XO\%Z/XLT617L]4TNWN[1T/RM%)&KJ1[88
M5^*?_!M;X?OOB#_P65_;W_:,TR-GT5_'NJ6D5T!\DCWWB&_ND"GOA+4DXZ!E
M]1D _<"BBB@#RV__ &V/V4M+OI],U#XY:'%<6TS13Q/*V4=20RGY>H((KS?X
M)?&/X8>/_P!N3QUXK\&^-++4-.N/!.G1PW=NY*.Z2$.!D=1N'YU[_+\-/AQ/
M*T\_P_T1W=BSN^E0DL3U).WDUXS\,?#OA_2?V^?'MAI6A6=M G@;2RD-O:HB
M*3(V2 !@9P/RH ]O_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ
M%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_
M]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\
M/C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJK
MG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[
MZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H
M/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]
M!J#_ +ZJY_9VG_\ /C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH
M_P"$Q\,?]!J#_OJKG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#
M_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J
M#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% %/_A,?#'_
M $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_ -^A1_9VG_\ /C#_ -^A0!3_
M .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:?_SXP_\ ?H4?V=I__/C#_P!^
MA0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ%']G:?\ \^,/
M_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_]^A1_9VG_P#/
MC#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_ -^A1_9V
MG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:?_SXP_\
M?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C
M#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\
MSXP_]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9V
MG_\ /C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#
M_OJKG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0
M:@_[ZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_
M $&H/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q
M\,?]!J#_ +ZJY_9VG_\ /C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_
M +ZH_P"$Q\,?]!J#_OJKG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?
M]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,
M?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% %/_A,
M?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_ -^A1_9VG_\ /C#_ -^A
M0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:?_SXP_\ ?H4?V=I__/C#
M_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ%']G:?\
M\^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_]^A1_9VG
M_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_ -^A
M1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:?_SX
MP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_
M //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=
MI_\ SXP_]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJ
MY_9VG_\ /C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?
M]!J#_OJKG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?
M#'_0:@_[ZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,
M?#'_ $&H/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J
M/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]
M!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$
MQ\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^
M$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% %
M/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_ -^A1_9VG_\ /C#_
M -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:?_SXP_\ ?H4?V=I_
M_/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ%']G
M:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_]^A1
M_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_
M -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:
M?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_
M9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^J
MN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_
M +ZJY_9VG_\ /C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$
MQ\,?]!J#_OJKG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC
M_A,?#'_0:@_[ZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJ
MC_A,?#'_ $&H/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H
M/^^J/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q
M\,?]!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3
M_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4
M 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_W
MZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\ /C#_ -^A1_9VG_\
M/C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJKG]G:?_SXP_\ ?H4?
MV=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[ZJY_9VG_ //C#_WZ
M%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H/^^JN?V=I_\ SXP_
M]^A1_9VG_P#/C#_WZ% %/_A,?#'_ $&H/^^J/^$Q\,?]!J#_ +ZJY_9VG_\
M/C#_ -^A1_9VG_\ /C#_ -^A0!3_ .$Q\,?]!J#_ +ZH_P"$Q\,?]!J#_OJK
MG]G:?_SXP_\ ?H4?V=I__/C#_P!^A0!3_P"$Q\,?]!J#_OJC_A,?#'_0:@_[
MZJY_9VG_ //C#_WZ%']G:?\ \^,/_?H4 4_^$Q\,?]!J#_OJC_A,?#'_ $&H
M/^^JN?V=I_\ SXP_]^A1_9VG_P#/C#_WZ% $J.LB"1&RK#(([BEH  & , =
M** "BBB@ HHHH **** "BBB@ HHHH **** /CO\ X*-^&/V__!G[4?P,_:__
M &'O@EIGQ*T_P+I/BK0OB9X$F\46^E7^J:7JK:/*ALY+HK"9(I=,$N'<9*(@
M!#L5\ \*?MJ_MC^)/VP?VCV_95_X)P_$S_A9/B;P=X+M-*L/B%<:/I>G>&+B
M.WU1%O-3G6_E#P@R>8D=L)GF$+K^[R#7ZAUG6'A'PII7B+4?%^E^&-.MM6U>
M*"/5M4M[*-+F]2 .(5FD W2",2.$#$A=[8QDT ?,G_!&?_@FCIW_  2I_8BT
MO]FRX\60Z_XEO]7N/$'CC7+5&6"[U>Y2))/)# -Y4<4,$*E@"XBWE5+%1]64
M44 ?FU_P;7_L"?M:_L!? _XP^#_VMOA/_P (GJ/BKXLSZSH-O_;MA?\ VJQ:
MVB19=UE/,J?,K#:Y5N.E==_P4F_X)Z?&F?\ ;>^$O_!7/]A[PI::[\3_ (8*
M^D^,_ 4VHQ6)\:^')DFCD@AGE(BCO(DN)_+,Q"-N3+ PHK?>]% 'YN?MR?LV
M?M)_\%P]<^'?[//Q _9K\7_!KX ^%O%UOXG^)6H?$&\L(M;\43P1ND6DV-I8
M75SY<6)I/,N9709*F-7,0W_6G[>O["'PB_;V_8L\6?L6>.;:/2M%U[1H[;1[
MRRM%)T6Z@*O9W,*<#$4D<9V J&0,F0&->WT4 ?GI^S=\8?\ @JC^RW^Q9H_[
M$^N_L!^(?&/QA\$>'T\+^$/B+IOB/2?^$,U:VMX_(L=6NKJ>[2Z@5(5C::W:
MV,TC1G:/WGR>N_\ !'/_ ()D:%_P2S_9&A^#-YXHB\2>-O$.K2Z_\1_%<:,%
MU/5I@H81EP'\B-%6--V"V&D*JTC*/JZB@ HHHH *\+\ _P#*03Q__P!B)I7_
M *,:O=*\+\ _\I!/'_\ V(FE?^C&H ]THHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH *\+\ _\I!/'_P#V(FE?^C&KW2O"
M_ /_ "D$\?\ _8B:5_Z,:@#W2BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHJGX@U_2O#&DS:WK5T(;>!<LQ
MZD]@!W)Z 5ABL5AL#AIXC$34*<$Y2E)V44E=MMZ)):ME0A.I-1BKM[(GN[VS
ML(O/OKN*%,XWRR!1^9K)O?B5\/[#(N?&6G9'54NU<C\%)->%^+O%GBCXS>+8
MK*PM'*%RFGV*'B->[-VSCDMVQZ"MVR_9A\9RX-]K6FP@]D=W(_\ '0/UK^7I
M^._''%.88B' ^1O%8:G+D5:;DHR=M[>XHWW2<^;E:<E%NR^Q7#>78.E%YCB.
M2;5^5=/S_(]!O?CW\+K3(7Q TS#^&&TD/ZE0/UK;\,>./"OC&#SO#VLPSD#+
MPYVR)]5/(^O2O.+3]E==N;[QH<X^[%8\ _4OS^5<QXG^"7Q"\$S_ -I:4CWD
M41W)=:<2)$]RH^8'Z9'O6=;Q*^D)PTUF.?</TYX7[4:#O.*_F;C5K-*V_-"W
M=Q''*>%\7^ZPV*:GT<MGY:J/Y_>?0E%>"^$?VA_&/A]EL_$,:ZG IP3,=DR_
M\"[_ / @3[UZWX%^)/AGX@VTDNASNLL(!GMIUVNF>_<$>X-?J? ?C5P)X@U(
MX; UW3Q+_P"7-5<L]%=\NKC.R3?NR;LKM(\;,N'\RRM.=2-X?S+5?/JOFC?H
MHHK]9/$"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ KPOP#_RD$\?_P#8B:5_Z,:O=*\+
M\ _\I!/'_P#V(FE?^C&H ]THHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
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
MGZQX.TS5M/?Q+\>O&/A:^:UU2'2(X)+E-(MKA,/:-/'&GF31X?%W %8+YBL
M?IE17Y5_\%4]#N_^"$WA7P#_ ,%#/V&3XAL_!>E>,[/0?C1\*[SQ7?ZAI?B'
M1[H,%O%2]GE^SW\4B*B7$95F,X\S>H96^H/^"FO_  5-^'/[#?\ P3*U+]OS
MP1+9^(!KFAV#?#*VG)$.KWNHQA[%F ()B$;&X=00QBA< @D4 ?6E%?G3^RK_
M ,$J;K]HO]AG0/CO^U'\>_B1=?M'?$7PG#XDF^*UEX[U*RN_"FHWD(N;6WL+
M:VGCMK>WM?,CC-NL?ER;)-P(8 =/_P $"/\ @II\0O\ @H7^S+XB\&?M'1VT
M7QD^#?B5_"WQ)^RQK&M](A=8-0\M0%C,OE3(ZJ OFV\K*JJRJ #[OHHHH *\
M+\ _\I!/'_\ V(FE?^C&KW2O"_ /_*03Q_\ ]B)I7_HQJ /=**** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
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
MH7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O
M_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*
M%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>
M_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0
MH7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O
M_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*
M%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>
M_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0
MH7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O
M_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*
M%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>
M_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0
MH7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O
M_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*
M%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>
M_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0
MH7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O
M_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*
M%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>
M_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0
MH7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O
M_?2UL44 8_\ PDNK_P#0H7O_ 'TM'_"2ZO\ ]"A>_P#?2UL44 8__"2ZO_T*
M%[_WTM'_  DNK_\ 0H7O_?2UL44 8_\ PDNK_P#0H7O_ 'TM>=_&#XVWD%M-
MX0T&VDM;ILI>SF0%HE[HN.C'N>WUZ;GQJ^+L?@VT;P[H$X;59T^9UY^RH?XC
M_M'L/Q],\)\&OA-<>.=0_P"$E\1H_P#9L4I)WDYNWSR,_P!W/4]^GKC^8O%G
MQ#SK/\Z7 '!CYL95TKU4]*,/M1YE\+2^.6\%[L;U)6C]ADF5X?#8?^T\PTIQ
M^%?S/H[?DNN^V[OA!\-[NYNH?%^N^&;FZM%^>S@"@+*W9FSU4=AW^G7V'_A)
M=7_Z%"]_[Z6M>...&-8HHU5%4!548  Z "EK]>\./#S)?#;AV&6X%<TW9U*C
M5I5)]6^R6T8WM%=VVWX6;9IB,VQ3K5-%T71+^MWU,?\ X275_P#H4+W_ +Z6
MC_A)=7_Z%"]_[Z6MBBOOSS#'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI:V
M*HZEXF\-Z-G^U_$-C:XZ_:;M$Q_WT1ZBJC"<W:*NR93A!7D[(J_\)+J__0H7
MO_?2T?\ "2ZO_P!"A>_]]+7A?[2?_!47]E?]G5)])3Q8/%FOQ@A=%\,R)/L;
MTEGSY47/499Q_<-? 7Q]_P""HW[7?[46JGP-\/I;CPQIFH2>3:Z!X1$CWEUG
MHCSJ/-D)&05C"*PZJ:_2>%_"CBWB:*K>S]A0W]I4O%6[QC\4O)V4?[R/S/BK
MQ;X0X8DZ'M/;U]O9TK2=^TI?#'S5W+^ZS]8-)^*6EZ]JE_H>AVT=[>Z5(L>J
M6=I?PR2V;L"565%8F,D D!@,XK1_X275_P#H4+W_ +Z6OQ-\'^(?VK_^">/Q
MBTOQM?\ AS5/#.KW=HMPVGZQ"PAU6T<Y:*5<X=2>",AT89^5@,?K?^R!^V+\
M+OVQ/AVOB[P1<BTU2T54U[P]<2@W&GRD?AOC;!V2 88 @@,&4:\<^&6-X2P]
M/'X2JL3A)I?O(I64MM;.2LW\,DVOLO6U\N _%#!<78FI@,72>&QD&_W4F[N.
M^C:BVTOBBTG]I:7MZ'_PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM;%%?EY^IF/
M_P )+J__ $*%[_WTM?//[='_  4?\,?LE^''\.:9H27WCB_MBVEZ1/,"EJIX
M%Q<!3D(.R<,Y& 0,L)/VQOV_]*^%6CZC\/\ X!-9^(/&PW0/<%PUCH[]"TK]
M))5[0KD@CY]HPK?FG!\&/%WQ$^)+>./CUXXN+\:C??:==N[28RWMSDY8*TBA
M5)^Z#R$&,*0-M?IG!'#_  NL1]>XGQ,:5&&JI7;J5.JO&-Y1B_DY=--3\PXY
MXAXJ>&^H<+X656M4T=:R5.GT=I2M&4E\U'K=JQL? #]G/]H;_@HS\:=0\;^)
M-2U&[M9+U9?%7BRYBW+$#C$,0.%,FW 2)<*BX^ZH%?2GQ7_X(I?#>STZXUOP
M%\6/$&@6]NADE;Q1;6UU"@_VI4:#8/<@_C7:>"OV^_"?P8^'UG\,?@3^SQ8Z
M)I6FP&.R2YU=I!N[R2*L:L[D\LQ?+$G)KSW4_$G[3G[8_BC^SU_M+7"D@9;&
MT3RK&SST)'$:>FYSN/J:]C/_ !GXFQ.:J>33^K8:FN6G348M<JV<DTU>VR6D
M5HNK?C</^"G"^&RIPSJ'UK$U'S5*CE->\]U%IIVONWK)ZOHE\NZO^R/)X;\6
MS:3<_$K2]6L(&XO=%24^9ZC]ZB@?4%QZ$U]/?L6_M'>)/V7_ !:-&U7Q%JNK
M^#-11(K[3+^\>X:PD7A;FW+$E?1XQPP.1RH!^@?@G_P31\/:3Y.N?'#7?[3G
M&&_L73)&2W4^DDO#O]%V_4BL/]O;]CBQ\.>$)/C5\"/!BA=(M]WB'PYIL>#+
M;(.;FW3IYB 9>/HZC<,.#YGSF:\><8<:5HX7&5U)27*H6C&#;^27,WM)M6>S
M1])E7 /!O!-"6+P="491?,YWE*:2WZM\J5[Q2=UNF?4/ASXE6OC#18/$?A;2
M9-0L+I-UO=VEPCHX]B#U[$=0>#5[_A)=7_Z%"]_[Z6OS&_9S_:J\9_"VZ7Q/
M\*?%27&GSN#>Z7.2]O/[21Y!1\?Q###UQP?H[XJ_\%+4UKX90V'PP\/76E^(
M[Y&2_GNBKIIXQRT+?\M&.>"0-N,D$XKX3$8?$82O*C7@X3B[.+333[-/5,^^
MPV)P^,H1KT)J<)*ZE%III]4UHT=O^U7^W!#\)[2X\!^!]/#>*9(]LDDKJZ::
M"/O,!D-)CD(>G!;C ;\^/'OQF\/Z7XMA?QYXAN;B\U.]#ZC=X,\L2NWS3R G
M+=<XSD]JPOC)\:AX8DGM;6\-[KETQDFEF<N8BW)DD)^\QSG!ZYR??=US_@F=
M^T G[)-U^UEXC,QU,R"_F\,RP$W0THJ2UVY/(<</Y>.(@6)S\H_6^!O#S+L9
M"CF/$M7V&&K24*4;\LZLI;-?RP7\SWTV3N_R'COQ&S+!U*^6\,TO;XFC%SK2
MMS0I1CNG_--_RK;71M67T_H__!._QQXATBUU_0O'5C=V5];I<6=W;VK/'-$Z
MAE=6#8*D$$$=0:M#_@FO\2\C=XJMP,\D6#?_ !5<I_P1G_;=\U$_9#^)NK_,
MH>7P1>7#]1R\EB2?3EX_;>O9!7Z*U\-QCPKCN#L^JY=B-4M82Z3@_ADOR:Z2
M370^ZX,XKP/&>04LRPVC>DX]837Q1?YI]8M/J?%ND?\ !-&Z0A]>\<ZC(.\=
MGHJ)_P"/-,?Y5U6C_P#!.KX1V>'U>'QE>L.JB\MHD/X"+/\ X]7U117RY]4)
M&Q>-79"I*@E3U'M2T44 %%%% !1110 4444 %%%% !1110 4444 >,_MB?\
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
MN0P/!!!ZBFVMK:V-K'965M'###&$AAB0*J*!@* .  . !4E?F/&'%^9<8YN\
M9B?=BM*<%\,(]$O/N^K[*R7ZEP;P?EO!F3K!8;WI/6I-_%4GU;\NRZ+N[M_C
MK_P4?_9#UW]BWX]VOQ(^%GVBQ\+ZU?\ V_PS>VC%3I5XC"1K8,/NE&P\9[I@
M<E&-?HO^P#^V#I'[8/P/M_$UU+##XHTC9:>*M/CP-D^WY9U7M'* 67L"'7G9
MFNY_:1^ '@K]IOX/:O\ !_QU#BWU&'-I>*@,EC<KDQ7"?[2MV_B4LIX8U^1/
MP7^)7Q<_X)F?M?7%EXITZ4-I5X=/\4Z5&Q\O4K!B&\R/.,Y7;+$QQSC/!85^
MPX"I3\8."'@:K7]J8)7@WO4AMJ_[VD9=IJ,F[2:/QK'TZG@YQRL=23_LO&NT
MTMJ<]]%TY;N4>\'**5XIG[845\=:E_P7 _8ZL<_9= \<WF/^?;1;<9_[^7*_
MY%8&I?\ !=_]G>+/]D?!_P :3^GVE;2+/7^[,_M7Y=2\,./ZWPY?4^:2_-H_
M5*OBEX?4?BS&G\FW^29]R4445\&??!1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !7A?@'_ )2">/\ _L1-*_\ 1C5[
MI7A?@'_E()X__P"Q$TK_ -&-0![I1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%<O\
M7/'2>!/",U[!(!>7.8;)>X<CE_HHY^N!WKR,_P \R_AK)<1FF.ERTJ,7.3\E
MT7=MZ175M(WPV'JXO$1HTU>4G9'E_P"T%XZ;Q-XF7PMIDA>UTURK!.?,G/#?
M7;]T>^[UKJ)_$O@/]DOX#:A\2_B?J2V=M96WVO5).#))*>([>,9^9R2$5<\L
M2> 2:Y'X&>$K75M<G\<>))XXM-T93/-<7+A4\P MN9FX 4 N2>F!GK7P)_P4
M(_:T\9_MS?%3_A!OA0DY\ ^&[IDTZ0YCBOKCE6O9"?4$B-3R$). 785^3_11
M\.,?XI\6X[Q)XDDJ-&HVHSD[1I44^5\KEI>2BJ5-[VC.334M>/Q=XUAP3DE+
M*,M@ZV*GI3IQ3;G/>[2UY8WYI>;BKKIPOBSQ'\=_^"H?[7$4&G6I^UZK-Y.F
M69<M;:'IJ-G+''"("6=L9=V.!EE6OU ^&>I_LG?L'_#/3_@;:^/;"R;3(M]^
M C37=W<L!YD\R0JS!W('!Z*%4?*HK\__ -GS6/$O[/?@:[\)?#:X%GK&O%5U
MS7[-#]LN%S\EM$_6&($YPF'=B2S8VHONWP=_X)\?&/XI6O\ PD7C:]7PO:3_
M #QMJ5NTMW,3SN\G<I4=?OLI]CG-?V-XE\<X7/JE/*,G7)E^'LH)72FTK<S3
MULMHWUWD]79?E/ACP)BL@IU,XSE\^88F[FW9N";ORIK2[WE;3:*TC=^Z^)O^
M"E_P%TC=%H&D:]JSC[KPV:0QGZF1PP_[YKSWQ%_P5/U^5RGA/X16<"C[LFHZ
MH\I/OM1$Q],FNQ\,_P#!+_X2:?MD\5>.M=U)UZK;>5;1M]1M=OR85Z%X;_8B
M_9B\,J#!\+[>[D'WI=2NIK@M_P !=RH_ "OR@_6SY=UC_@I7^T/J.1867AW3
MP>AMM-D8C_OY(P_2N=G_ &SOVN/%\QMK#X@WSD](=+TF!2/^_<6[]:^]='^"
M_P '_#V#H7PK\.6A7H]OHL"-^83)KH[>VMK2(06END4:_=2- H'X"@#\Y?\
MA/?VY=?_ ./;5OB/-NZ?8X+Q?_1:CU_E1_PB'[=6O_\ 'SIWQ-ES_P _DM\O
M_HPCTK]':* /@;X0_P#!/[XT_$O6WU3XH"7PY8>;NN;B^(EN[@GD[$R>3W9R
M.O1N17V/\'_@'\+O@9I']E_#_P .1P2N@6ZU&?$ES<_[\A&<9YVC"CL!7944
M %%%% !1110 4444 %%%% !1110 4444 %%%% !7SY^VE_P3K^%'[9^K:/XG
M\1:[>:#K.E1-;OJ>F0([W=L266*0/UVL25/;>PYSQ]!T5Z>49QF>0XZ.,P%5
MTZL;VDO-6:L[IIKNCS,XR;*\_P !+!9A252E*UXOR=T[JS33ZIGP_IO_  0B
M_9LBQ_:_Q:\<3^OV:>SB_P#0K=_:M_3?^"(O[&MCC[5JGC6\Q_S\ZY",]/\
MGG;K_DU]@T5]15\3>/JWQ9A4^32_)(^5I>%_A_1^'+J?S3?YMA1117PA]Z%%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %>%^ ?^4@GC_\ [$32O_1C5[I7A?@'_E()X_\ ^Q$TK_T8U 'NE%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 445P?Q[_:
M7^#'[,V@6/B/XR>,H=*@U*_2TLDV-)+*S, S!%!8H@.YVQA1[E0>C"8/%8_$
MQP^&IN=26BC%-M^B6IS8S&83+\-+$8FHH4XZN4FDDO-O1'>45!IFIZ=K6G6^
ML:/?PW5I=PK-:W5M*'CFC8 JZL.&4@@@C@@U/6#3B[/<Z$U)76P4444AA111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
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
MZ,:@#W2BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHKS#]J_]J_X9?LB_#*;X@_$&\\VYEW1:)HD$@%QJ5P!D(@/W5&07<C"@]R5
M4]> P&,S/&0PF$@YU)NT8K=O^MWLEJ]#CQ^/P65X*IB\744*<%>4GLE_6RW;
MT6H?M7_M7_#+]D7X93?$'X@WGFW,NZ+1-$@D N-2N ,A$!^ZHR"[D84'N2JG
M\A/'?B?]J+_@HI\9M6\7VOAO4/$>J6VGS72:5I<9,&EV$0+>5$I.% Z 9+R.
MW\3MSK?\9-_\%2?VF^]UJ%V?]I=/T#3PWX[(US[M(Q_B9J_67]E#]E#X9?LB
M_#*'X??#ZS\VYEVRZWK<\8%QJ5P!@NY'W5&2$0'"@]R68_T33EDG@CE:E)1Q
M&;5EJOLTXOI=:I?<YOM%'\XU(YYXYYK*,'+#Y11;L_M5)+K;9R^^,%WD]?SU
M_P""8O\ P4CN_@'JMM^S_P#';5I&\&7,_EZ5J=T26T*9FY5L\_9V8\C_ )9D
M[AP6K]5K>XM[NW2ZM9TEBE0/')&P974C(((X(([U\ ?\%3?^":/_  E::A^T
MU^SUX?\ ^)HH:X\6>'+.+_C] Y:[@4?\M1U=!]_EA\^0_ _\$M_^"EC?#2XL
M?V;OV@=>/_".2N(?#6OW<G_(*<G"V\S'_EW)X5C_ *H\'Y#E/.XMX9RKQ"R:
M7%7#4;5E_O%!?%S;N22^UUT5JB]Y>_=/TN$.)\V\.LZCPGQ-*]%_[O7?P\NR
MBV]H]-7>F_=?N--?J!12*RLH96!!&00>M<QXW^-_P8^&@<_$3XM>&M"*?>35
MM<@MV^FUW!)]J_ J&'Q&)J>SHP<I=DFW]R/Z"KXC#X6G[2M-1CW;27WLZBBN
M0^$GQ\^#7QYLK_4/@]\1=,\00Z9<B"_?3YMWDN5W+D$ X(SAAP<'!.#CKZ>)
MPV)P=9T:\'":W4DTUUU3U6@L-B<-C*"K8>:G![2BTT^FC6CU"BBBL#<****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BJ^J:MI
MFB63ZCJ]_%;0(,M+,X4#\^I]J\J\=_M* ;].\!6N>QU"Y3]40_S;\J^$XW\2
MN#O#[">VSC$J,VKQIQ]ZI/\ PP6MO[TK1762/2R[*<?FD^6A"ZZMZ)>K_3?R
M/2_$WB_PYX/LOM_B'5([=#G8A.7D/HJCDU7\'_$'PKXYMC/H&I*\BC,EM)\L
ML?U7T]QD>]>&>&_A[\0_BOJ!UBX>5HI&_>:E?L=I'HO=OH.![5)XP^$_CKX9
MW8UJPEDGMX6W1ZC8Y5H_=@.4^O(]Z_G^7CUXF57_ *PT.'Y/)HZ-OF]JU_S\
M4MN5);JFZ:^%U+V:^G7#641_V66*7UA^EO2W?YW\CZ)HKQSP!^TC/!LTSQ[
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
MS<G!=\!5R=D:(N6*EC^6?_!.SPY=?!G_ (/ ?VG/"OBR(Q3^*/A_J=YI#2#
MG2[FT/44*$_>_=+(..A1AV-?5/["GCG_ (.#OVB_VNM"O?\ @H[^SAX,^"?P
MF\)Z?>ZI):^!?$-I=3^)]29/L]K97+0ZI>2"!!.]R0%B1GMD#E@0E;W_  4F
M_P"">GQIG_;>^$O_  5S_8>\*6FN_$_X8*^D^,_ 4VHQ6)\:^')DFCD@AGE(
MBCO(DN)_+,Q"-N3+ PHK &)_P=6>)K/0?^"'OQ8TNZE"R:UJ?ANRM@3]YUUV
MQN"!_P !@<_A7Y<_\%G/V=?''@3_ (-L?V'O$6J:9.D>A- VI(R'-O\ VQ83
M7T!<?P_*FTYZ,P'!.*_37]N3]FS]I/\ X+AZY\._V>?B!^S7XO\ @U\ ?"WB
MZW\3_$K4/B#>6$6M^*)X(W2+2;&TL+JY\N+$TGF7,KH,E3&KF(;_ *T_;U_8
M0^$7[>W[%GBS]BSQS;1Z5HNO:-';:/>65HI.BW4!5[.YA3@8BDCC.P%0R!DR
M QH ];\#^(M,\7^"]'\6:+(KV>J:7;W=HZ'Y6BDC5U(]L,*_%/\ X-K?#]]\
M0?\ @LK^WO\ M&:9&SZ*_CW5+2*Z ^21[[Q#?W2!3WPEJ2<= R^HS]:_LW?&
M'_@JC^RW^Q9H_P"Q/KO[ ?B'QC\8?!'A]/"_A#XBZ;XCTG_A#-6MK>/R+'5K
MJZGNTNH%2%8VFMVMC-(T9VC]Y\GKO_!'/_@F1H7_  2S_9&A^#-YXHB\2>-O
M$.K2Z_\ $?Q7&C!=3U:8*&$9<!_(C15C3=@MAI"JM(R@ ^KJ*** /$M4_8(^
M#6KZG<ZM<^*O&ZR74[S2+%XON54,S%B  >!D\#M7#? +X'>$?AO^VSXX\':%
MJ>LS6MMX+T^6.34-6DGE)DE);+MR1\HP.W-?4U>%^ ?^4@GC_P#[$32O_1C4
M >N?\(/I'_/S>_\ @6U'_"#Z1_S\WO\ X%M6Q10!C_\ "#Z1_P _-[_X%M1_
MP@^D?\_-[_X%M6Q10!C_ /"#Z1_S\WO_ (%M1_P@^D?\_-[_ .!;5L44 8__
M  @^D?\ /S>_^!;4?\(/I'_/S>_^!;5L44 8_P#P@^D?\_-[_P"!;4?\(/I'
M_/S>_P#@6U;%% &/_P (/I'_ #\WO_@6U'_"#Z1_S\WO_@6U;%% &/\ \(/I
M'_/S>_\ @6U'_"#Z1_S\WO\ X%M6Q10!C_\ "#Z1_P _-[_X%M1_P@^D?\_-
M[_X%M6Q10!C_ /"#Z1_S\WO_ (%M1_P@^D?\_-[_ .!;5L44 8__  @^D?\
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
M=P*ZK_A!](_Y^;W_ ,"VKQ/XA?![Q-\.;K^W=%GEN+&-]\=Y#D26Y[;\=/\
M>''TZ5U/PU_:)C=4T;X@-M886/4D3@_]= .G^\/Q'>O*X+\<,=E6:+AKQ"H_
M4\;'15FDJ51;)MKW8W_GB_9O76%K&^8<.TZU'ZWE<O:4W]G[2_5^CU]3T/\
MX0?2/^?F]_\  MJ/^$'TC_GYO?\ P+:M2UN[6^MDO+*YCFBD7='+$X96'J".
MM25_2\)PJ04X.Z>J:V:[H^1::=F8_P#P@^D?\_-[_P"!;5XQ\8/&UM/J\GAC
MPE?W+6D.8[J;[0S>>_=1_LCI[G/;%=O\>OBG_P (W8-X0T*YQ?W4?^DRH>8(
MCV]F;]!SW%>6:%XO^"WP1L;3XJ?M">/M-\/Z?+*XT.'4'.^]DCQO=(U!>0)E
M?N@\D>V?Y@\4.)>(_$?BZEX9\&.4JU1_[54@F^2"^*'NZV2UJ):MN-*]W)'U
M674\MR#+)YYFLHPIQ^'F:2OT;;T5WM?U['=?#+]GG[3"FN>/5= P#0Z<IP?8
MR'M_N_GZ5Z.G@318T$<<]VJJ,*JW3  >E?-/B'_@L'^S6]U)IOPH\,>*O&,Z
MG N+'3!:6@_WY+ED9?\ O@GVKS_XA?\ !3#XS>+;"2P\&>%]-\+)*N#-'.;V
MY3_=D=$09'_3,D=F[U^_\*^$&6^$>4QP&'PWL9RLYN;7MJC[S7QI;V3C&"UY
M5KK\=_KEA>+:[K8>M[6*V<$W37E&=N1OO:3?<^K_ (G^,/@W\'-*_M;XB>-W
MT\,I,%NUZS3S^R1KEF],@8'<BOD_XS_M[:SKLDNC_!C2[K1[/E?[3U&X,EU(
M/54!*1?CO/N*\+TRQ^+_ ,=_%%P/ WA3Q!XXUJ67;=W-OF1(W])[J4B*'Z.X
M/H*]L^&__!)7XJ^/O+O_ -HSXM1>'].?!?PWX-/F7#*?X9;N1=JGL0J.I]:_
M0L'D$I157'UHX>F];SNYM?W:<;S=^C:C#^^CP\9Q!&$G2R^C+$U%I:%E!/\
MO5)6A&W5)RGV@SYZC\4^)_BS\3+?P)X1BO?%WC'6;C9':17!D<M_$\TK$B-%
M RS,?E SC%?HC^S/^Q=X0^!_AJ"]\17(U+Q7/$#J6K0$I'"2.8;<'E8QTW'Y
MG/)P-J+TG[/O[(O[/?[+]E)!\&_AW;:==7$(BO-5E=I[RY7(.'FD);:2 =JX
M7(' P*])J,WKY)%+#Y7"7(OBJ5+<\W_A3<8172*;;WE)Z):9/A\]DY8C-9QY
MW\-.G?D@O.32E.3ZR:26T8K5O'_X0?2/^?F]_P# MJ/^$'TC_GYO?_ MJV**
M\(]XQ_\ A!](_P"?F]_\"VH_X0?2/^?F]_\  MJV** ,?_A!](_Y^;W_ ,"V
MH_X0?2/^?F]_\"VK8HH Q_\ A!](_P"?F]_\"VH_X0?2/^?F]_\  MJV** ,
M?_A!](_Y^;W_ ,"VH_X0?2/^?F]_\"VK8HH Q_\ A!](_P"?F]_\"VH_X0?2
M/^?F]_\  MJV** ,?_A!](_Y^;W_ ,"VH_X0?2/^?F]_\"VK8HH Q_\ A!](
M_P"?F]_\"VH_X0?2/^?F]_\  MJV** ,?_A!](_Y^;W_ ,"VH_X0?2/^?F]_
M\"VK8HH Q_\ A!](_P"?F]_\"VH_X0?2/^?F]_\  MJV** ,?_A!](_Y^;W_
M ,"VH_X0?2/^?F]_\"VK8HH Q_\ A!](_P"?F]_\"VH_X0?2/^?F]_\  MJV
M** ,?_A!](_Y^;W_ ,"VH_X0?2/^?F]_\"VK8HH Q_\ A!](_P"?F]_\"VH_
MX0?2/^?F]_\  MJV** ,?_A!](_Y^;W_ ,"VH_X0?2/^?F]_\"VK8HH Q_\
MA!](_P"?F]_\"VH_X0?2/^?F]_\  MJV** ,?_A!](_Y^;W_ ,"VH_X0?2/^
M?F]_\"VK8HH Q_\ A!](_P"?F]_\"VH_X0?2/^?F]_\  MJV** ,?_A!](_Y
M^;W_ ,"VH_X0?2/^?F]_\"VK8HH 2-!%&L:DX50!D\TM%% !1110 4444 %%
M%% !1110 4444 %%%% !6=8>$?"FE>(M1\7Z7X8TZVU;5XH(]6U2WLHTN;U(
M XA6:0#=((Q(X0,2%WMC&36C10 4444 %%%% !1110 4444 %%%% !7A?@'_
M )2">/\ _L1-*_\ 1C5[I7A?@'_E()X__P"Q$TK_ -&-0![I1110 4444 %%
M%% !1110 4444 %%%% !1110 445\9?\%(_^"G6D_L]VMY\%?@;J,%]XYEC,
M>H:BF)(="4COU#W&.B'A.K=E/N\.<.9MQ3FD,!E\.:<MWTBNLI/HE_P%=M(\
M'B3B7*.%,JGF&8U.6$=E]J3Z1BNK?X;MI)LV_P#@HM_P4J\.?LLZ5/\ "_X6
MW-MJ?Q NX.5.)(=$1AQ+,.C2D'*1'V9_EP'^ M'_ &GO^"EGQ0LO[1\)?$;X
MGZM;R,46?08+ID+#@@-;IC()[=#BNL_8)_X)\?$#]M3QC)\7/BU?:A;>#!?O
M-J>KW,C&ZUR?<3)'$[9)RV=\QS@Y RV=OZX>#/!GA3X=^%;#P1X'T"VTO2=,
MMU@L+"SC"1PH.P'YDD\DDDDDDU^Y9CF_!/A10CE.$PL,=C-ZTYI6B[;)VE:W
M2"V7Q-R/PC+LGXX\6\1+-\9BJF!P>U&$&[R5_B:O&]^LWN_A2B?C=_87_!6#
MQ;\T]K\>[A6Y!N7UA$]>-Y QQVK5^%7_  34_;7_ &A/BE96?Q<\,:_H=C*!
M_:?B?Q5(TCP0)U50[EY'YPJ<#)Y*@$C]CZ*\2KXZYO3HRC@,#0H2::4E%MJ_
M5;+3S37=,]VEX#9/4K0EC\?7KQ33<9223MT>[5]M&GV:.*^ /[/WPQ_9I^&]
MG\,/A5H*V=A;#=/.^&GO9B &GF? WNV.O0 !5 4 #M:*Y_Q'\4O ?A5V@U?Q
M%")EZV\&9'!]"%S@_7%?@&?\28#+U/,<ZQ<::DVY5*LU&[>NLI-7;^\_=LNR
MV-*C#"8&E:,$E&,5HDMDDMD=!17E&O?M1:;%NB\->&I9CVEO) @_[Y7)/YBN
M/U3X[?%#79\6FIBU .X0V-N!T]SEL?C7X3Q!])?POR6;IX:K4Q<]K48-J_\
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
MCBCCP(XUSP@X'XULW?P<U+X6^%G^)%W\*+_1M)M"IDUPZ!+'%%N.%)FV<9)
MSGJ0.]?J7\._@1\(/A3:Q0>!/A_IME)"H47GV<27+>[3/EV_$UT^H:?8:M83
M:7JMC#<VMS$T5Q;7$0>.5&&&5E/# @D$'@@UY=?B?.<?*%+&XFI.BK+DC+DB
MHKI&*7)'3;W;+L>IA^%LER^,ZN!PU.%>5WSRASR<GUE)OGEKO[]WW/QV^&_Q
M ^&7Q(\>V7@1?B3I>C/?R>7%JFO":"S#GHKR"-MF>S, OJPKW;XC?LI_M$_L
MYWL?C72%GN;6V DB\0>&+B1O(&,Y;:!)&/\ :(V^YJ/]O3_@CU);_;?BY^R-
MI;.GS3:EX'4Y9>[-9$]1W\@\]=A/RQUYA^P7_P %0_'O[,FHP?!_X[_;]8\&
M12_9T\Y6:^T$@[2$#?,\2]#">5Q\F,%&_3<3X:9%Q)P^LSX.KRJR@OWE&HX^
MT3\K**OV5K2M[LKZ/\OPWB=GW#/$+ROC/#QI1F_W=:FI>S:\[N3MW=^:-_>C
M9W7TA\%?^"D_B[0%BT'XUZ(-<LL!#JEDBQW2KT^=.$EX_P!P^I->S6?AWX/?
M'O2Y/%?P'\8V3SA=]SI98H4)[-&?GB.?;:>W'-,\;?LJ_LS_ +5/A6W^)GPY
MOK2T;5H//LO$/APJ8;G/>2(85CG(;[KY!!(((KY:^*G[/7QX_9)\2P>,+&]G
M%M!+_H/B;178(I/\,G>,GH5;Y6R0"W-?S+QKP%PWQM@)9=GN&4^5NS?NU*<M
MFXR^*+[K9VM)-:'[_EF;8C!RCB,)4TDD]-8R73R:?1_<?1VB>*_B)\'=8;39
M8Y8 &S-I]VI,4@]1_P#%*?SKT:;]I+PU+X1FU*UM9(]550D=A*"07/\ %N'!
M4=3T/;'.:\5^"G[<_@+XKZ?!\/?VE--M;.\;"6^OHFRWD;IE\<P/T^8?(><[
M1Q7H7B/]G/6$O8+GP9J<5]IUTZE9GD :%&_C)'#KCG*\GTK^8<SX.\;/!_"5
M:'"6(ECL!43C&$H\U6@Y:*48W^RW>\+P;O*=-+4^RHX_A[/9QECH*G56K:T4
MK=&_/SUZ)F-\.?!6I_%/Q7-JNNW+FSCD\[5+QSC=GG8#V)_0?A7Q7^V#XFL/
MVIOC[=^,-3W'PGH$?]E^#-*C8I&;6,G=<L!C_6OE@.#L$8;I@?0'[5O[4^CZ
M/X<F_9X^!NH!M.16A\0Z["W-ZQXDBC(ZH>C-_$/E'R_>S_\ @G;^SMH'Q@U>
M]^+OC"Q%WH>AWWV73;>1,Q7MZF"['/WXXLJ,<AG)!/[ME/\ 1'@+P)C?"+AR
MOB:+;S+$)/$8A.\H\S^"$]UJ[<R?-)\[VE9? \<3RWBW&T,/C4I8>$FX4G\,
MW%:.4>JCOROW;\M]4K\/\!?V(?BY\5K6WFT3PU%X?T$@%-2U&$PQLGK%&!ND
M]B %/=A7UW\)OV"/@'\-[1)?$'A^/Q3J&W$MUKD*R0G(P0MN<Q@>FX.1_>KV
MP  8 HK]%E5JRJ.I*3<F[WOK?O?N1&E2A35.,4HI6M;2W:W8KZ5I.E:%I\6D
MZ)IEO9VL"[8;:UA6..,>BJH  ^E6***B4I2;;=V7&,8I)*R04444AA1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %>%^ ?\ E()X_P#^
MQ$TK_P!&-7NE>%^ ?^4@GC__ +$32O\ T8U 'NE%%% !1110 4444 %%,N+B
MWM(6N;J=(HT&7DD8*JCU)/2N-\2_M)?L\>#-P\6_'?P=IK+U2^\2VL3?3:T@
M)/M71A\)BL7+EH4Y3?\ =3?Y'/B,7A,)'FKU(P7]YI?F=K17RA^T'_P6$_96
M^#]K)8?#_4IO'FL;/W=MH;;+1#V\RZ<;<?\ 7-9#Z@5\-?&G_@HO^VQ^UUJ4
MO@_PA<ZAI6F7.57PYX'M91)(GI)*F9I,CJ,A#_=%?HV0>$_%.<4?K6+BL)AU
MJZE9\EEW47[WS?+%_P Q^:<1^+_".15/J^'F\57>BA1][7LY+W?DN:2_E/U6
MUK]J?]G#PY\0HOA3KWQO\,VGB&7(72Y]6B5U8$#RW.=J.<C",0S=@:[X$, R
MD$$<$5^*^A_\$Q/VG=?\$OXM)\,VM^<-;^&KWQ'$E_<*1G(ZPHW3Y))5;MC/
M%)\,/VP_VXOV$_$*>!-0O]6M+6UP3X2\96<DML8^WE!R'C0]0T+JIZ\U[^'\
M,N$>**52GPAGU#&UZ.E2"G"7O>3IRER^2::O]L^6AXP<09)6C4XHR:KAJ%76
M$U&6B[24U&[ZNSB[?8/VIJ*]O;+3;.74=1NXK>WMXVDGGGD")&BC)9F/   )
M)/2OBGX/_P#!<+]GWQ+X8N)_C)X0UCPSK%I:M(+>PB^W6]ZX'"1.-K(['H)
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
M:0@ZEY3C QUQ@>M=/\0/A[\$=2@;5M%^)NB: 8\M<2/?126^W!Y*F5=O..C
M8SQSD?"_[7'PC^''CR[FMS^VIKOB#8Y,&CZ3X-5=/A8=,L;J-7QS\_[QN>M:
M8?@'Q\\2,U_LKC/B:E@\%'^)B:5.4JU=/IRT:<)2G;XG4E34KWDZLKGBXK,<
MCX.RKFX<RJ>)J?8I2J1C"G_V]5FW&/914K;14(V/8?"?[3_[(>JZO+:>+/VD
MM$TU892LF(9Y6D/^RZQF,CG[VX_0U[!X4UO]B3XDA(O G[2.AW,[ !;>/Q-:
MB4^YB<!_T%?F9X=_9T\%Z6RR:O/<:E(#TD/EQG_@*G/YL:]"TO\ 98U&^19-
M)^ >H7*L,JT7AZ:4$>H^0YK]>H?1R^B]PWE[P6$HXG&S?Q5JR@^9_P!U?NW%
M>2C%[7<GJ?)9?QCXV9C-5\?#"T(]*<95.9+S:YXM_-_(_1Z;]E[3+J(7&D>-
MWV.,HSVBR!A]585\T?M[_&CP_P#L:^'1X8TO7[76/'.LVY.CV"0Y33XB2IO)
MU.<X((CC/#L"3E496\E\/? 7X_\ @6 S^$/@MXRTE!EC_97AN[A/UQ'&#3?!
M'P6^,_QM\::C8>'? >L7^LVL:R:K/JD#6[Q@_*OF2W.P;C@@*6W$*<# ./+X
M=\ _!+)N):6=2R-XFEAY<_(YU%3DT_=]I%RJPY+V;BU:6B>C9[F?<2<7YEDT
M\NI8^&%KUERJ:2G)+[7)_#DY6O9_9WW1YO\ L%?LHZ+^T9\3YOBI^TEXSM-+
M\'Z=>FYU2?7=52";7;HMO,*M(P9E).Z60<X.T'<V5_2_QI^VU^S+\*=$ATW0
M_$L&J?9H%BLM+\-0+(D:*-JJ&&V)%   &[@= :^9=&_X)O\ [2.J8^W0:'IN
M>OVW5=V/^_2/7<^"_P#@EKK;WR2_$3XGVD=LO,D.BVS/(_L'E"A?KM;Z5^Z<
M;\<9EQMF$:U:*ITH*U.G%WC!=>BNWU=EHDK))'Q_ O N6<#9;*A0DZE6;O4J
M-6E-].KLET5WK=W;;.9^*G_!27XN^+?,T[X<Z5:^&K1LA9P!<W9'^^XV+GV3
M([-7&>'?V:_VJ?V@;A_%]YX>U6[\U-PU3Q'>&+S1V"&8[F'IM!4>HK[>^%?[
M*WP,^#PCN/"?@>WDOH\$:IJ(^T7.[^\&?B,_[@4>U>AU\4?<'YTW?[ 7[5-H
M<P?#V&XQWAUJT'_H4HJI=?LO_M@>%+:2[7P'K\*0H7;[!J"R$ <G BD))]@,
MU^D-% 'Y.?'3QWXP^.?P4'P<^)$W]I7.C70N?#.KWV?M>G3 ;7A9S\TD3KE2
MK<J0C G8$-7_ ()C_%.;X;?%JZ_98^+WF6.C^-IE_L:XFY6RU=1MBD0]"LR_
MNFQ]YA$.,5^AO[1'[&7PQ^/$<NM10+HOB$KE-8LXAB9NPG3@2#_:X;IS@8KX
M,^/_ .S5XW^#VMQ>'_B;H(53*9=)U:TD/ERLA!$D,HPR.IVG'RL,C(P1G[/
M\28'&\'XO@_/\.L3EN*C)2B_B@WKS0V3LTI<MUJKJ46W?\_SW@N5;B;#\3Y3
M5]CCJ#6OV*D5HX3MJKQ;CS*]E:\796_1_P '_ CP-X6V7-U:'4KI>?.O "H/
MLG0?CD^]=FJJJA54  8  Z5\+:=_P4Y^,UAHMIITOA#0+NY@MDCGOKI)MUPZ
M@ R,J.H!;!) P,G@ <54O?\ @IG^T)= BWT7PO;9'!ATZ8D?]]S&OR[A_A7A
MSA+!_5,GPT*-/^Y&W-;K)_%)^<FV?I&)QN+QT_:8B3D_-[>79?+0^\Y8HYXV
MAFC5T=2KHPR&!Z@CO7CGQ9^ DEEYOB3P+;,\/+7&G(,M'ZF/U'^SU';/0?/7
MPL_X*3_%C0?$KR_%6SM]=TFX90\5I;1V\]J,\F(J 'X/*OG.!AEYS]??"CXX
M?#'XUZ/_ &O\/?%$%X54&XLV.RXM_:2,_,O/&>5/8FO#\0?#CAKQ&R=X'-(7
MDKNG4CI.G)]8MK;^:+]V7JDUTY5FV,RNO[2CIW3V:\[?@]T>5>#_ (^^+?">
MB-HDUO%?A% LY+ISF$?W3CEE]!D$>N.*S[WQ%\4_BS>&R22\O5)YM;5-L*>F
MX#"CZM^=>T:K\&_A]K7B ^(]0T3=*_,L2R%8Y&_O,HZG]#W!KD?VF/VFOAM^
MR/\ #];ZYTH7FJW:,GAWPKIBJDU]*.^ ,11*2-\K#"@CJQ53^#Y/]'WQ6XF<
M,ASO/Y2P%-\E.%-OFJ06W.Y<L8I+K4=502MI%)GOX_B_A_*:,L=3PZ4]Y-K9
M]HI7;;>B44G)O2[=CQ?]I?7_  ?^R)\*W^(WQ@UJ-]0NMT7A_P +V$H-QJ-P
M!G:7/$<:Y!=P&"@C&695/P1\%/@_\=O^"DO[1#V]Q?NL.Y9=;U8QM]DT2RW'
M$<:D]>H2/.7;+,?ON-CXP6OQ4_:F^(5S\5OVA/&;O>S_ "6>E:;Q!I]ODE8(
MMV0JC/8$DY8LQ)->F?!7XA_%3X3>"T^$OP*OKK2[2:8S7$>BV2F[O)B #))*
MJF5FQ@  @    "O[A\,>$_"#Z.O#U:'"=&-?.*L>6>)DG/E751J22O%=53C&
M$Y)-JR2/YMXGP''?B_G]*>>WPV4TGS1HW2G4:V<XQ;Y6_P"\^:$;I>\VS](?
MA%\)OA=^S1\*]/\ AQX%L[?2=$TJ'!FN)55II#]^:9SC=(YY+'Z    4_$G[
M4?[/'A/<-9^,.A;D^]':7HN7'L5AW'/MBOA^P_9B_:^^,5TNI:UX0U^X9CDW
MGB:],14'O_I#!S^ -=UX;_X)?_%R_P!K^*/'6@Z<C=5MO-N77ZC:B_DU?+8C
M$5\7B)UZ\G*<FVVW=MO5MOJV?KF&PV'P>'A0H1480244E9)+1)+HD>S>)/\
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
M$Z4H=*5!.\5'SF_>D_M)0?2R****_,S]."BBB@ HHHH **** "BBB@ HHHH
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
M.>KH?[+&N:4W\)L]3#@?43(^?SK@?$G_  2OB.Z7PA\8&']R#4M)S^;I(/\
MT&OKRB@#X(UO_@FG^T'IT^S3-0\/:A&3P\&H.A ]Q)&N/P)JC_P[F_:6_P"@
M9H__ (-E_P *_06B@#\^T_X)R?M*LX5M/T903@L=6&![\"O3OAO_ ,$N]-@\
MN]^+/Q$DG;@O8:%%L3/IYT@)8?1%/O7UM10!Q'PX_9P^"/PG$<O@GX=Z?;W,
M>-M_/'Y]QGU$LFYE^@('M7;T44 %%%% !1110 4444 %%%% !7G_ .TU^SWX
M<_:;^$UY\,-?U2?39'GCN=,UBT0--I]S&?EE0$C/RET(R,J[#O7H%%;X7$U\
M'B(5Z+M*+33T>J\GHUW3336C5C#%86AC<-.A65X2336JT?FK-/LTTT]4[GR=
MX0_X)$?!?2-D_C+XP>/M=E'WX_[6BM(&_P" PQ!Q_P!]UZGX0_8._90\%[6L
M/A+!?,O5M=U&YU'<?=;F5U_#&/:O7J*]'%9_F^,TJ56EVBE!?=!17X'FX7A_
M)L'K3HIOO)N;^^;D_P 3Y[_:/_X)_P#P\^)^DG5_A'9Z=X2\06T.VWCM;01Z
M?=@=$FBC \L]O-C&X9RRR !:^'-7E^)/[/OQ.7PKXMM=2\'^*K-M]I^_*?:$
MSCS;:=#MGC/JISU#*""*_6>N+^.W[/GPF_:1\$2^ ?B[X3AU*S;+6TWW+BSE
MQ@2PR#YHW'J.#T(()!,#BLNJOV.8Q?*_^7D+<\?.SLJB_NMI_P LXK1F.PN9
M45[;+9+F6].=^27DFKNF_P"\DX[N4)/5?(FB?\%+OC/IG@B30-2T'2[_ %@
M+;Z[,A4A<<EX5PKOZ$%1QRIKS'PEX1^-'[7GQ2NC9W,VM:S(J/JFIWLFV*SB
M).SS& Q&GWML:CG#;%.#6UK_ /P2E_:IT?XNVGPW\&_$^WN_ -[(TC^,+P)]
MNTVW4C,+QD@R2D'"E,JV,DQC('WG\#/@5\.?V=_A]:_#CX::0;>S@.^YN9GW
MW%].0-\\\G621L#)/    "@ =V:Y/EN4X=3AC85W4UBJ=_A[U.9+D?\ T[LY
M:7;2Y7+@RG.<RSC$.$\#.@J>DG5Y?B[4^5OG5O\ EY=1L[)-\RCY;\$O^">?
MPE^'D4>J_$-5\4ZIC++=Q;;.(^BQ?Q^F7)!Z[5KW30O#/AOPM:#3_#/A^QTZ
M =(+"T2%/R0 5>HKYD^H"BBB@ HHHH **** //?VH?V</ W[5'P=U/X2>.(0
MBW*^;INH+&&DT^[4'RYT]P201D;E9ESAJ_$WQ[\#/C3\+?B_J/[-6IZ%J#Z\
MVIQVATC3][KJ3Y_<21J/]:K!MR$CH_8YK]]*YZ\^%'PWU#XDV?QAOO!=A+XG
ML-->PLM;D@!GAMW;<T:MVYSSU 9P" S _JGAWXGXS@>C7PU2G[:C-.48WMRU
M%L_\+LN:VNB:U6OY/XC>%N#XZK4,33J>QK0:C*5K\U-[K_$M>6^FK3T>GSM_
MP3D_X)R>'_V4- C^(_Q'MK;4/B#J%MB:88>+1HF'-O">A<CAY1UY5?ER7^JJ
M**^#S[/LTXDS.IC\?4YZD_N2Z1BND5T7ZW9]_D&097PSE=/+\OI\E.'WM]92
M?63ZO\DD@JOJND:5KNGRZ3KFF6][:S#$UM=PK)'(,YPRL"#R >?2K%%>1&4H
MR33LT>Q*,91::NF16-A8Z9:I8Z;916\$8Q'#!&$51Z #@5+110VV[L$E%604
M444AA1110 4444 %%%% !1110 4444 %! (P1D'J*** /%_C5_P3W_9$^//G
M7?C/X.:=:ZC-DG5]"7[#<[C_ !LT.%D/_716KY/^)O\ P0:)UR"Y^#GQS TV
M2[07-EXELOW\,!8;V2:$;9'"Y(4QH"0,L,Y'Z,45]MD?B-QIP]%0P>,ER+[,
MO?BO12O;_MVQ\/GOAMP3Q%)SQF#ASO[4?<D_5PMS?]O7,?X?^!?#/PP\#Z3\
M._!NGK:Z5HNGQ6=A /X8XU"C)[L<9)ZDDD]:V***^,JU:E:I*I4=Y2;;;W;>
M[?J?:4J5.A2C3II*,4DDMDEHDO)!1114&@4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 ?G3_P7_\ V^_BI^R_>?L]?LG?";XGW'P\F_:&^*4/A[Q+\3+(H+KPWH<=
MS8PWLML\@*PSD7\968@^6L<A&&(=><^&?_!)/]F_Q9^VS^T+\-_"GQ%^+GA3
M6] \*>"IO#WQ#T+XQ:]_;UG>W-OJAFNY+B6[<7C,T2,8[A9(^"%10:^AO^"Q
M/_!)SX3_ /!7/]E[_A2GC37Y/#WB;0KQM2\">+88/-.F7Q0HRRQY'FV\JX61
M 0?E1@=R+7Y&_L,_\%3?VI_^"$G[=?B_]E?_ (+*:+JGB>RU[3/#^D/\4-+O
M_P"TI=.L+)+H:?<;E4/>V[17$A8/B[18^4=E\N@#]HO^"6MU^TG)^Q#X8T;]
MKWQW<^*/B-H.M^(M!\2^(KNS2!]2?3M>U"QBGVHJ@J\%O$5?&74AR6+%C^>/
M_!W)K_[;7P/_ &.M(^,GPR_;4\0>'_">M?$&W\-ZEX#\*:<FEK-:SV5W.LD]
M]'(US.P:U*-'O2%UE'[H%,M^NWPX^)'@'XP> M(^*/PL\8:=X@\.:]81WNC:
MUI-TLUM>6\@RDD;J2&!'^'6ORL_X//?^44'A?_LN&D?^FS5J /U6^'KO+X!T
M.21RS-H]L69CDD^4O-?G+_P4?_;&^*G[3G_!5+X7?\$0_P!G+XGZQX.TS5M/
M?Q+\>O&/A:^:UU2'2(X)+E-(MKA,/:-/'&GF31X?%W %8+YBM^C/PZ_Y)]H7
M_8&M?_12U^)__!,NZO/B#_P=\_M4>(_%#&2ZT?P5K*632G)5(+G0[&+'T@(
M]J /=?\ @JGH=W_P0F\*^ ?^"AG[#)\0V?@O2O&=GH/QH^%=YXKO]0TOQ#H]
MT&"WBI>SR_9[^*1%1+B,JS&<>9O4,K?4'_!37_@J;\.?V&_^"96I?M^>");/
MQ -<T.P;X96TY(AU>]U&,/8LP!!,0C8W#J"&,4+@$$BO+?\ @Z9M;*X_X(8?
M&F6Z0%X)_#3VQ/9_^$CTQ<C_ ("S#\:_([_@K]\1/&6L_P#!MK^PAX?U:ZF:
MUNYIVG5F.#]AMI[6TS]()6 ]J /UA_95_P""5-U^T7^PSH'QW_:C^/?Q(NOV
MCOB+X3A\23?%:R\=ZE97?A34;R$7-K;V%M;3QVUO;VOF1QFW6/RY-DFX$, .
MG_X($?\ !33XA?\ !0O]F7Q%X,_:.CMHOC)\&_$K^%OB3]EC6-;Z1"ZP:AY:
M@+&9?*F1U4!?-MY6555E4?;W@_0[+PSX1TKPWIJ*MMI^G06UNJ= D<:JH'M@
M"OQ+_P"#=35+S2/^"\/[?W@K1F*:/-XXUZ=XD^YO@\47D</Y)/*![$T ?N+1
M110 5X%X6U?2]#_;W^(6I:QJ$5M G@32=TLSA0/WC<<]3[5H:I^U+\9;#4[F
MPMOV+?&]U'!.\<=S%<VVV90Q <9;H0,CZUX='XJ^)/Q:_:P\5SO\$-<TB\N/
M#VFF;2;ORWGA$8F".S!@BH^X@$D#(&:^9XRS7.\DX9Q..RC"?6L3"*<*2;7,
M[I/9-OE3<N5:RMRIINYUX"CA\1BX4Z\^2#>K[?UMY'T'XY_:5BCWZ?X#L]YZ
M?;[I,#ZHG4_5ORKPCXH?'#2-&NFU'QMXBFO;]NEM&PDFQ[+D!!]<#TK0UK]G
M[]JWQH#:Z=I-EX8LVX=IKOS;HCZQ!E7Z!O\ @55O#_\ P3:=I?M7C?QGK%T[
MG=*FGZ?'&<]_GDD?/UVU_.F%\(O$7Q.Q,<?XAXYTJ%[QPE%I)?XK7A'U_>3:
MTYXL^JGGF591!TLKIWEUG+].K_!>3/'?$W[4OBNY<P>#_#=A9H#Q<Z@[W#,/
M^N:>6%/_  )OI6AI/[8_C3PW8K;:%X,T&2X ^?4M7M6NK@G)((&4B7&<<1@X
M R3UKZ0\-_L'_ #0MIU+X<>(M8*]]1U<KD_2#RQ7?^&_@K\&_"6TZ%^SEID;
MI]V:73XII!_P.3<WZU^WY!X3^&_#-.,<!E=%2CM*4?:3OWYZG/)>B:2Z)'S%
M?-<UQ-1SJUYN_3F:C_X#&T?G:_=GQE<?MM_M6>(7%AI?CR2$'[EMI>C6ZD?3
M;$6_6HSK?[<GC[_477Q)O(WZBV2]2(_78 M?H#9:K<:;#]GT[P%/;QCHD*H@
M_(5-_P )+J__ $*%[_WTM?H*BHJR6APMMGY]1?LB?M>^.)1/J/@'59B3DR:O
MJD2$>_[Z4']*Z+1?^":_[16IX.H7'A_3@>HN]2=B/^_4;_SK[C_X275_^A0O
M?^^EH_X275_^A0O?^^EI@?)&C_\ !+#Q9,!_PD'Q>TZV_O"STN2?'_?3QUU>
MC_\ !+7X>08_M_XHZU<_WOL=K#!G_OKS,5]&?\)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM 'B]I_P $V/V<[>V\B:;Q#.W_ #VEU1 W_CL8'Z54O/\ @F1\
M +C)MO$?BJ ]@FH6Y'_CT!/ZU[G_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\
MWTM 'SQ<_P#!+CX6NX-G\2-?C7/(EC@<X^H05TOAG_@G%^SAH>UM7M-9UEA]
MX:AJ912?I (SC\:]B_X275_^A0O?^^EH_P"$EU?_ *%"]_[Z6@# \,?LU_ +
MP?M;0?A%H,;I]R:?3TGD'T>7<WZUU=GX=\/Z=C^S]#LX,=/)M47'Y#VJG_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PD
MNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+J_\ T*%[_P!]+1_PDNK_
M /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM &Q16/_ ,)+
MJ_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM &Q16/_PDNK_]"A>_]]+1_P )+J__
M $*%[_WTM &Q121L7C5V0J2H)4]1[4M !1110 4444 %%%% !1110 4444 %
M%%% 'CWQ:_;"\$?!O]L3X2_LG>,FM+.;XO>'?$]WX>U*YO1&9-0TEM*9;%$(
MP[2P7US*#D$?9-H#;^/FWXP?L^_LP?M,_M%_MF?##]L31=*N/ #_  X\$7>M
MW^JA5&D)#9:TYU"*5A^XE@ :191@KM/8D'Z-_;$_X)]?L?\ [?&CZ)I/[5GP
M8M/$\GABYEN/#&J)?W-C?Z--(8R\EK=VDL4T!8PPD[7 )B0D':*^</"W_!![
MX':I\>/'_B']H3XC_$7XB_#KQ%8>'H]'\'>+?B_KM\EW)8+=;UU5&E47\2-+
M$8(YGF51YF5&<$ \I_X- ?#_ ,8-"_X)'>;\2OMPT6_^)VL7/P]%\K+G1S':
MHS1 _=C:]2^8 <;BYR<US7_!Y_(B?\$HO"JNX!?XXZ0%!/4_V7JYQ^0/Y5^L
M7ACPQX:\$^'+#P?X-\/V6DZ1I=G'::9I>FVJ06]I!&H6.**- %C15  50
M *^?_P!L3_@DW^PK^W]?QW?[7WPU\2^-+>WO%N[31[OXI^)+;3+6X$0A$L-C
M;:A';0OL!!9(U)W.2278D ]T^&SI+\.M EC8,K:+:E6!X(\E:_(_Q7\++O\
MX)]_\'8/A[X_^((#9>!?VJ?!-UHNFZPXVVT.MI:VPDLF8_\ +62XL+1P.=S7
MR =#M_5+X!?L\?#3]F?P+#\-OA._B5=&M8XX[.U\2>.=6UUK6*-!&D44FIW5
MQ)%&JJ (T8(,=*I_M/?LH?L^_ME?"^3X._M(_#6T\2Z$;R*\M8YI9(+BQNXB
M3%=6MQ"R36LZ9.V6)U<!B,X)! /@G_@ZX\7:UKW_  3IT']CWX;:;)K'COXX
M?%'1?#WA7PU98:YOS#.+MV1>Z+)#;(S=%,Z9(!KSW_@NS_P2:\0R?\&_'@3X
M&_"FP.L^(/V:M'T?5)!81%I-2MK2Q:UU1T7&>1*]V1P<6Y YP#^@7P._X)M_
MLQ? WXM0_M 1V?BKQIX_L].;3M*\;?$[QKJ'B/4M+LV&&M[.2_FD%HK MN,0
M1GW-O9LFO>71)4,<B!E8896&01Z4 >)_L7_M8_#KX\?\$_\ X??MA7/BVR@T
M'5?AO::WKFISW $5@T5J#?"5LX4P2QSH_H8F]*_/+_@U2_9Y\8:Y:_M!_P#!
M4'QYX?N=/7]H#XCW5QX/BO8BDDFF17MW<2W*CNDMQ=&,'ULR1P03]E7_ /P1
M4_8$N_[5\.V7@OQ9IG@C7M7;5->^$^B?$75[+PCJ%VS!VDDTB&Y6VVLP5FA5
M5A8HNZ,XKZC\-^&O#O@WP]8^$?"&@V6E:5I=I':Z;IFG6J06]I!&H6.*.- %
M1%4!0J@    4 7:*** "O"_ /_*03Q__ -B)I7_HQJ]TKPOP#_RD$\?_ /8B
M:5_Z,:@#W2BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ KPOP#_P I!/'_ /V(FE?^C&KW2O"_ /\ RD$\?_\ 8B:5_P"C
M&H ]THHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH *\+\ _\I!/'_\ V(FE?^C&KW2O"_ /_*03Q_\ ]B)I7_HQJ /=****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH ***XKX[_ +1_P!_9>\$GXC_M
M%_&7PUX)T,3"%-3\3:Q#9QRRD9$49D8&20X.$3+'L#0!VM%?+_[(7_!8G_@G
MW^V9#8:3\._VB_#.F>*-1NKJ&T\$^(-;@M-5F$-U+;J\4$C@S"01>8OE[CM=
M<@'('U!0 45X#XU_X*H?\$Z_AU\3[SX/>-OVP?!&G:[INHII^K13ZJ/LVFWC
M-M6VNKL V]K-NX\N61&!(!'->^0S0W$*7%O*LD;J&1T;(8'D$$=10 ZBBB@
MKPOP#_RD$\?_ /8B:5_Z,:O=*\+\ _\ *03Q_P#]B)I7_HQJ /=**** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH *_&?XJ?M7^ /AW_P=J#PM^WCJMK9>
M$=-^$UKI7P!N_$A"Z=I>JWL5E.UZAD_=Q2S3)J5H)^"6$<>?E7;^S%?)O_!5
M[_@CI^RK_P %;?A1!X1^-5C-HGBS1(I/^$/^(&C0J;_26;DQLK8%S;,P!:!R
M >2C1O\ . #P31_^"?\ X"_X**?\$.+GX,ZQX%TO4_%MOJGC._\ AUJ=[&B3
M:=K4/B75);8QSL,PI)(BQ2$$ QR.#D5UW_!RI_P4$\9_\$^O^"9&N^)/A-K\
MNE^-OB!K$'A'PQJEK)MFTXW$4LMS=1D<JZ6T$RHX(*2RQ,#D"OS*_P"";'_!
M4G]N7_@A3I?@_P""_P"W;X!U#Q=^ROXG\0:KIO@;Q_I]F'ET22WU*ZM[EH60
MDLOG13RO93'S=I,D+$ K)[3_ ,'J6KP>-_V,?@!\0_!FK1:CX:U#QG=W%MJ-
MG)O@N5N-.66VD5APP:-9&4]P30!^E/[ ?[ _P0^$W_!*_P $?L6>)?A]87VA
M:Y\.((?'ME<VX(UB^O[57U&>8D99Y)9)"&.64! "-BX^1_\ @UV_:R^)&N>!
MOC-_P3/^-?BRYUK6_P!FCQU+H7A_4[^4M/+HOVFZMH[<DY+"WFLY5&3\L<T,
M8 5!7ZG>'S8G0+$Z6P-L;.+[.5Z&/8-N/PQ7XA?\&ZL5[K/_  7H_;[\5Z6&
M.E'QKX@5V3[F^7Q1=O#^)6.7'XT ?N31110 5X7X!_Y2">/_ /L1-*_]&-4^
MJ?L$?!K5]3N=6N?%7C=9+J=YI%B\7W*J&9BQ  / R>!VKY_UG_@GC\%/C#^U
M?XG^#WB;Q?XX@TK0_#=AJ-G-8^*9%N6EE+*P>1U8LN.@[4 ?=M%?'/\ PY"_
M9-_Z*-\4_P#PMC_\:H_X<A?LF_\ 11OBG_X6Q_\ C5 'V-17QS_PY"_9-_Z*
M-\4__"V/_P :H_X<A?LF_P#11OBG_P"%L?\ XU0!]C45\<_\.0OV3?\ HHWQ
M3_\ "V/_ ,:H_P"'(7[)O_11OBG_ .%L?_C5 'V-17QS_P .0OV3?^BC?%/_
M ,+8_P#QJC_AR%^R;_T4;XI_^%L?_C5 'V-17QS_ ,.0OV3?^BC?%/\ \+8_
M_&J/^'(7[)O_ $4;XI_^%L?_ (U0!]C45\<_\.0OV3?^BC?%/_PMC_\ &J/^
M'(7[)O\ T4;XI_\ A;'_ .-4 ?8U%?'/_#D+]DW_ **-\4__  MC_P#&J/\
MAR%^R;_T4;XI_P#A;'_XU0!]C45\<_\ #D+]DW_HHWQ3_P#"V/\ \:H_X<A?
MLF_]%&^*?_A;'_XU0!]C45\<_P##D+]DW_HHWQ3_ /"V/_QJC_AR%^R;_P!%
M&^*?_A;'_P"-4 ?8U%?'/_#D+]DW_HHWQ3_\+8__ !JC_AR%^R;_ -%&^*?_
M (6Q_P#C5 'V-17QS_PY"_9-_P"BC?%/_P +8_\ QJC_ (<A?LF_]%&^*?\
MX6Q_^-4 ?8U%?'/_  Y"_9-_Z*-\4_\ PMC_ /&J/^'(7[)O_11OBG_X6Q_^
M-4 ?8U%?'/\ PY"_9-_Z*-\4_P#PMC_\:KA?VFO^"0G[-/PH^ GBGXB^&O'_
M ,29+_2-+:>U2]\8L\3,& ^91&"1SZB@#] **^)O!/\ P18_96U[P9I&N7OQ
M$^*"S7NF6\\JQ>-"%#/&K' \K@9-:?\ PY"_9-_Z*-\4_P#PMC_\:H ^QJ*^
M.?\ AR%^R;_T4;XI_P#A;'_XU1_PY"_9-_Z*-\4__"V/_P :H ^QJ*^.?^'(
M7[)O_11OBG_X6Q_^-4?\.0OV3?\ HHWQ3_\ "V/_ ,:H ^QJ*^.?^'(7[)O_
M $4;XI_^%L?_ (U1_P .0OV3?^BC?%/_ ,+8_P#QJ@#[&HKXY_X<A?LF_P#1
M1OBG_P"%L?\ XU1_PY"_9-_Z*-\4_P#PMC_\:H ^QJ*^.?\ AR%^R;_T4;XI
M_P#A;'_XU1_PY"_9-_Z*-\4__"V/_P :H ^QJ*^.?^'(7[)O_11OBG_X6Q_^
M-4?\.0OV3?\ HHWQ3_\ "V/_ ,:H ^QJ*^.?^'(7[)O_ $4;XI_^%L?_ (U1
M_P .0OV3?^BC?%/_ ,+8_P#QJ@#[&HKXY_X<A?LF_P#11OBG_P"%L?\ XU1_
MPY"_9-_Z*-\4_P#PMC_\:H ^QJ*^.?\ AR%^R;_T4;XI_P#A;'_XU1_PY"_9
M-_Z*-\4__"V/_P :H ^QJ*^.?^'(7[)O_11OBG_X6Q_^-4?\.0OV3?\ HHWQ
M3_\ "V/_ ,:H ^QJ*^.?^'(7[)O_ $4;XI_^%L?_ (U1_P .0OV3?^BC?%/_
M ,+8_P#QJ@#[&HKXY_X<A?LF_P#11OBG_P"%L?\ XU1_PY"_9-_Z*-\4_P#P
MMC_\:H ^QJ*_.OPM_P $FOV<M7_:N\5?!VZ\>_$8:5H_ABQO[65/%["=I978
M,&?R\%>.!@8KT[_AR%^R;_T4;XI_^%L?_C5 'V-17QS_ ,.0OV3?^BC?%/\
M\+8__&J/^'(7[)O_ $4;XI_^%L?_ (U0!]C45\<_\.0OV3?^BC?%/_PMC_\
M&J/^'(7[)O\ T4;XI_\ A;'_ .-4 ?8U%?'/_#D+]DW_ **-\4__  MC_P#&
MJ/\ AR%^R;_T4;XI_P#A;'_XU0!]C45\<_\ #D+]DW_HHWQ3_P#"V/\ \:H_
MX<A?LF_]%&^*?_A;'_XU0!]C45\<_P##D+]DW_HHWQ3_ /"V/_QJC_AR%^R;
M_P!%&^*?_A;'_P"-4 ?8U%?'/_#D+]DW_HHWQ3_\+8__ !JC_AR%^R;_ -%&
M^*?_ (6Q_P#C5 'V-17QS_PY"_9-_P"BC?%/_P +8_\ QJC_ (<A?LF_]%&^
M*?\ X6Q_^-4 ?8U%?'/_  Y"_9-_Z*-\4_\ PMC_ /&J/^'(7[)O_11OBG_X
M6Q_^-4 ?8U%?'/\ PY"_9-_Z*-\4_P#PMC_\:H_X<A?LF_\ 11OBG_X6Q_\
MC5 'V-17QS_PY"_9-_Z*-\4__"V/_P :H_X<A?LF_P#11OBG_P"%L?\ XU0!
M]C45\<_\.0OV3?\ HHWQ3_\ "V/_ ,:H_P"'(7[)O_11OBG_ .%L?_C5 'V-
M17QS_P .0OV3?^BC?%/_ ,+8_P#QJC_AR%^R;_T4;XI_^%L?_C5 'V-17Y__
M +37_!(3]FGX4? 3Q3\1?#7C_P"),E_I&EM/:I>^,6>)F# ?,HC!(Y]173^"
M?^"+'[*VO>#-(UR]^(GQ06:]TRWGE6+QH0H9XU8X'E<#)H ^V:*^.?\ AR%^
MR;_T4;XI_P#A;'_XU1_PY"_9-_Z*-\4__"V/_P :H ^QJ*^.?^'(7[)O_11O
MBG_X6Q_^-4?\.0OV3?\ HHWQ3_\ "V/_ ,:H ^QJ*^.?^'(7[)O_ $4;XI_^
M%L?_ (U1_P .0OV3?^BC?%/_ ,+8_P#QJ@#[&HKXY_X<A?LF_P#11OBG_P"%
ML?\ XU1_PY"_9-_Z*-\4_P#PMC_\:H ^QJ*^.?\ AR%^R;_T4;XI_P#A;'_X
MU1_PY"_9-_Z*-\4__"V/_P :H ^QJ*^.?^'(7[)O_11OBG_X6Q_^-4?\.0OV
M3?\ HHWQ3_\ "V/_ ,:H ^QJ*^.?^'(7[)O_ $4;XI_^%L?_ (U1_P .0OV3
M?^BC?%/_ ,+8_P#QJ@#[&HKXY_X<A?LF_P#11OBG_P"%L?\ XU1_PY"_9-_Z
M*-\4_P#PMC_\:H ^QJ*^.?\ AR%^R;_T4;XI_P#A;'_XU1_PY"_9-_Z*-\4_
M_"V/_P :H ^QJ*^.?^'(7[)O_11OBG_X6Q_^-4?\.0OV3?\ HHWQ3_\ "V/_
M ,:H ^QJ*^.?^'(7[)O_ $4;XI_^%L?_ (U1_P .0OV3?^BC?%/_ ,+8_P#Q
MJ@#[&HKXY_X<A?LF_P#11OBG_P"%L?\ XU1_PY"_9-_Z*-\4_P#PMC_\:H ^
MQJ*^.?\ AR%^R;_T4;XI_P#A;'_XU7F/A;_@DU^SEJ_[5WBKX.W7CWXC#2M'
M\,6-_:RIXO83M+*[!@S^7@KQP,#% 'Z*45\<_P##D+]DW_HHWQ3_ /"V/_QJ
MC_AR%^R;_P!%&^*?_A;'_P"-4 ?8U%?'/_#D+]DW_HHWQ3_\+8__ !JC_AR%
M^R;_ -%&^*?_ (6Q_P#C5 'V-17QS_PY"_9-_P"BC?%/_P +8_\ QJC_ (<A
M?LF_]%&^*?\ X6Q_^-4 ?8U%?'/_  Y"_9-_Z*-\4_\ PMC_ /&J/^'(7[)O
M_11OBG_X6Q_^-4 ?8U%?'/\ PY"_9-_Z*-\4_P#PMC_\:H_X<A?LF_\ 11OB
MG_X6Q_\ C5 'V-17QS_PY"_9-_Z*-\4__"V/_P :H_X<A?LF_P#11OBG_P"%
ML?\ XU0!]C45\<_\.0OV3?\ HHWQ3_\ "V/_ ,:H_P"'(7[)O_11OBG_ .%L
M?_C5 'V-17QS_P .0OV3?^BC?%/_ ,+8_P#QJC_AR%^R;_T4;XI_^%L?_C5
M'V-17QS_ ,.0OV3?^BC?%/\ \+8__&J/^'(7[)O_ $4;XI_^%L?_ (U0!]C4
M5\<_\.0OV3?^BC?%/_PMC_\ &J/^'(7[)O\ T4;XI_\ A;'_ .-4 ?8U%?'/
M_#D+]DW_ **-\4__  MC_P#&J/\ AR%^R;_T4;XI_P#A;'_XU0!]C45\<_\
M#D+]DW_HHWQ3_P#"V/\ \:H_X<A?LF_]%&^*?_A;'_XU0!]C45\<_P##D+]D
MW_HHWQ3_ /"V/_QJC_AR%^R;_P!%&^*?_A;'_P"-4 ?8U%>$?\$[$N+7]G^Y
MTJ?4[N[33_%NJ6EO+>W+2R"**;8@+-R< "O=Z "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH *^&]&_X*X_";X _\%(_C;^Q9^W!\2(_A_IZ:WHN
MI_!KQ3XVA&FZ+JFFS^'],^UV4%]*J0L\5^MT^7?+-<NBDF+8OW)5'Q%X8\->
M+]*DT+Q;X>L=4L9<>;9ZC:)/$_U1P0?RH _#3]JKXW?![]L#_@B?H_\ P3!_
M9C_LWXL?'+XC_$74F\-^$_"5Q'?S>'88_&5Y>/J]])$633[?[,"@EE9-R76X
M9CWD?:'_  4:_P""/&N_M0?\$./#?_!/3PWJ]OJGCSX5>!] _P"$(U*:0)%>
MZQI%@MKMW/C8MS%]HA!8@(9U8\*17V%^RS^RM\(/V//A3!\'O@QHGV72X;^]
MO'FFAA6>:2YNYKIO,:&.,,$:=D3Y?E157)QD^CT ?GU^R+_P6L_95\&?\$YO
M#OBC]I?XEVGA_P"+?@+PO;^'O'/P?U.;R?%<WB2SA6W:R@TMO])EDN98PT6U
M&4K,"6&Q]N;_ ,&XO_!.OXN?L;?LX^-OVA_VHO#CZ1\6?C[XL;Q/XJT:==LV
ME6FZ5[2TF'59MUS<S.IY3[0$8!HVK]!)_!7@VY\2Q>-+GPEIDFL01>7#JSV$
M9N8TP1M64KO P3P#CFM.@ HHHH *\^\.?!G4]$_:2\2?'&76H'M-<\/6>G16
M*QL)(FA8DN3T(.:]!HH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH *X[]H+X9WWQE^"_B+X7Z9J<5E<:WIS6T5U.A
M9(R2#D@<D<5V-% &?X2T:7PYX4TSP]/,LCV&GPV[R(,!RD:J2/8XK0HHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH \^\.?!G4]$_:2\2?'&76H'M-<\/6>G16*QL)(FA8DN3T(.:]!HHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH X
M[]H+X9WWQE^"_B+X7Z9J<5E<:WIS6T5U.A9(R2#D@<D<5T/A+1I?#GA33/#T
M\RR/8:?#;O(@P'*1JI(]CBM"B@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ KS[PY\&=3T3]I+Q)\<9=:@>TUSP]9
MZ=%8K&PDB:%B2Y/0@YKT&B@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH \^_9K^#.I_ SP%>^$-5UJ"_DNO$
M-]J*S6\;*JK/*7"8/< X->@T44 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% '+_&#Q9\2/!O@BXU?X2_"=O&>O%O+L-%;7(--A9B
M"0\]S-N\J($ %DCE?+#$;#)'P3_P0A_X*J_M;?\ !2KXV_M+^&/VI/ /ASPB
M?A/XDT?1M'\)^'HVD_LR5I-5BNTFN79FNI-]G&"XVI\A*HH8BOT>K\>/^#9,
M ?M^_P#!1@ 8 ^.\6/\ P:^(Z /TX_;'_:>T+]CW]GC7OCMJ_A#5/$EU8?9[
M/P_X4T./??:_JUU.EM8Z?;J 29)KB6*/(!VAF<@A37YA?M(?'S_@[<^$W@/4
MOVOX_@_\$8O#>DV[ZEJ'PAT"+^T]1L;&-2[K*=X>Y=4^_P#9KDLQ4E$'2OUZ
M\0^#O"OBVXTRZ\3:!:W\FBZDNH:4UU$'^RW2QR1K,F>CA97 /;=D<X-5_B/\
M0/!_PG^'NN_%+XAZW#IN@>&]'N=4UO4;@XCM;2WB:6:5O941B?I0!\R_\$:/
M^"JO@7_@K?\ LB0_'[0_"P\.>)-&U-M&\;^&1<&5+'4$C23?"Y +P2QR(Z$C
M()="6,98^D_\%%OVD]3_ &2/V)_B)\=O#%L;GQ#IF@M:^#K)5#->:[>.EGID
M 4_>WWD]NN/0FOB;_@U)_9.\3_ _]A+Q3^T5XL\+RZ#_ ,+R\>7'B?PWH4L>
MPVFA*HCL25[;\S2+V,3PL.#7T/\ MI_\9%_\%!?V>/V,[;]]I/A6^N_C#X_B
M7^&WTG%IHL3YX(DU2Z6<+U/]FL>V0 >Z^#K+XT_!?]E_PYH6JVU_\4/'NB>&
M-/LM4N'U&VLY-;U)8HXY[J2:79'$C2;Y6*J2J9"1NP5#\._\$C_^"K_[:'[<
MG_!27]H?]ES]I[X5^%_ MA\(;1+.R\*>'YVO9+>\2^D@DDEOFQ]JW*HPR1Q(
M5VD(#DG]*J_'C_@B^ /^#B+]OL 8_P")A%_Z7&@#]AZ^-OVSO^"J]W\./VE-
M*_X)Y?L._"JW^+7[0>M6HN[W0YM1-MHO@S3R%)U'6KI%9H4"NCB!!YL@9!E#
M+")/7O\ @HW^UG:_L+?L,?%#]K*:TBN+CP7X3N+O2K6X_P!7<:@^(;.)\<['
MN985;'.&.*_(W_@W?\8_M;?";]D/Q[^W#\-?^">/CWX\?%CXQ^+;W6/%?C?6
M?$VF>';:\M(976.UM;F_<RWCM/\ :IG:"$PYD2,R;XMB@'[!_L[_  P_:Q\-
M3CQ5^U!^U#8>*]1N+3$_ASPEX)M])T2SE;!/E&5KB]D"<JK/<#<.2@) 'K5?
M'/\ P2M_X+0? '_@J%<^*_AMI'@37_AU\4_ $[Q>-?ACXN"B^L0DODO+$P"^
M=&DO[J3*H\<A"NBAT+_8U !1110 4444 %%%% !1110 4444 %%%% !1110
M5^7/_!P1_P %@?V_O^":7@GP_J/P$_9I\/:5H'BGQ,VA6OQ&\4ZQ%?SK<*AD
M'DZ; VV,/&DC1RS2.2$8/ AQG]1J_'C_ (/0P/\ A@+X2''/_"][+_TU:E0!
M^P]?!'[;O[7/_!4OXR_'KQ!^R5_P2!^$/@Q9/ WV>W^)'QC^)D[+I.FZE/!'
M<QZ58Q(&-Q<)!+#+*^R58_.5&56P3][UF^&/!WA7P7;W=KX4T"UT^._U*XU"
M^6UB"^?=3R&2:9_[SLQ))/L.@ H _'G]GS_@MO\ \%.?V&?^"@?A3]@+_@M]
M\)/"Z6/Q#O(+7P?\3/"%LL,'FSS"&&8M&WDSVWG%(G&R&:#>'<%< _LQ7Y1?
M\%XO@=;?MZ?\%+_V,?V)/ MBMWK^A^)-0\=>.+R%,OH7A>">R$DTC?P"X>VD
MBCSPTL:+W%?J-X_\<^%_AAX$UOXE>-]42QT7P]I%SJ>KWLOW;>U@B:660^RH
MC'\* / /AO\ &3XG?&C_ (*C?$3P!X:\87,/PW^#/P[TO2=;TF-4\G4?%>K2
M?;BS-@L3:Z=%:_+N !U(Y!(!'SS_ ,' 7_!57]N;_@F3^SVWQ0_9R_9DT&;1
M[K7H-#;XA^*]<CG6UN9X'E22#3(&WR)\CH)9I$VR)@PNC*S>[?\ !'GP-XGL
M/V-;;]H+XD:4]GXO^.WB74?B=XGMY?OV[:O*)K*V/<>1IRV%OM/(\C''2OEK
M_@\% /\ P1ZN21T^)FAX_*XH _2'X%>*]9\>?!'P;XX\13))J&L^%=.OK^2.
M,(K336T<CD*. "S'@=*^&?\ @I?^W5_P5VTO]JZU_9=_X(]?LH>%OB))X8\.
MQW_Q2\0^,T$=AIMY='?:6"3RW]G&)Q;J)WC#2.4NH&PHR3]J?LL?\FQ?#C_L
M0]'_ /2*&NQTS0=#T6>\NM'T:TM)=1N_M6H26UNL;74^Q(_-D*@;WV1QKN.3
MM11G % 'XH_M+_\ !2G_ (.O?V0/@9XA_:0_:%_8H_9]\/\ @WPM:I/K>K/J
M$,_D(\J0H!'#KS2.S22(@55))8 "OUL_8O\ &7QT^(_[)GPZ^(O[36E:38>/
MO$/@^QU/Q5IVAV<EO:V5W<0K,UND<LDCJ8PXC;+MED8YP17QU_P6V7_AJW]H
MC]E__@E+IO\ I%E\3?B6/%_Q+MDY4^%M 3[5-!-V5+B4JJ$_\M( /8_HD  ,
M 4 %%%% !1110 4444 %%%% !1110 4444 %%%% !7+_ !@\6?$CP;X(N-7^
M$OPG;QGKQ;R[#16UR#3868@D//<S;O*B! !9(Y7RPQ&PR1U%% 'YP_\ !"'_
M (*J_M;?\%*OC;^TOX8_:D\ ^'/")^$_B31]&T?PGX>C:3^S)6DU6*[2:Y=F
M:ZDWV<8+C:GR$JBAB*^S_P!L?]I[0OV/?V>->^.VK^$-4\275A]GL_#_ (4T
M./??:_JUU.EM8Z?;J 29)KB6*/(!VAF<@A37YC_\&R8 _;]_X*, # 'QWBQ_
MX-?$=?KKXA\'>%?%MQIEUXFT"UOY-%U)=0TIKJ(/]ENECDC69,]'"RN >V[(
MYP: /R%_:0^/G_!VY\)O >I?M?Q_!_X(Q>&])MWU+4/A#H$7]IZC8V,:EW64
M[P]RZI]_[-<EF*DH@Z5]L?\ !&C_ (*J^!?^"M_[(D/Q^T/PL/#GB31M3;1O
M&_AD7!E2QU!(TDWPN0"\$L<B.A(R"70EC&6/TU\1_B!X/^$_P]UWXI?$/6X=
M-T#PWH]SJFMZC<'$=K:6\32S2M[*B,3]*_-7_@U)_9.\3_ _]A+Q3^T5XL\+
MRZ#_ ,+R\>7'B?PWH4L>PVFA*HCL25[;\S2+V,3PL.#0!]L_\%%OVD]3_9(_
M8G^(GQV\,6QN?$.F:"UKX.LE4,UYKMXZ6>F0!3][?>3VZX]":Z/P=9?&GX+_
M ++_ (<T+5;:_P#BAX]T3PQI]EJEP^HVUG)K>I+%''/=232[(XD:3?*Q5253
M(2-V"H?"OVT_^,B_^"@O[/'[&=M^^TGPK?7?QA\?Q+_#;Z3BTT6)\\$2:I=+
M.%ZG^S6/;(^O: /S5_X)'_\ !5_]M#]N3_@I+^T/^RY^T]\*_"_@6P^$-HEG
M9>%/#\[7LEO>)?20222WS8^U;E489(XD*[2$!R3^@_QB^*W@OX$?"3Q1\;_B
M/J+6GA[P=X=O=;UVZ1-S0V=K \\SA?XB$C8@=SQ7Y-_\$7P!_P '$7[?8 Q_
MQ,(O_2XU^K'[0/P8\*?M'? CQI^SYX[,HT7QSX4U'0-6:W($BVUY;26\C(3T
M8+(2#V(% 'R#^Q#\7?\ @HC_ ,%-OV?[#]M72/VA_#WP5\(>,WNI_AUX&T;P
M+;ZY>0Z='/)#%<:I>7<NV6:0QLQAMTA5$*C>6)V]5_P3=_X*'?$WX^_'_P",
MW[!/[5/A_0K/XP? G5;6+5]6\*PRQ:7XFTJ[C$MIJ4$,KR/:R&-H_-@:1PC2
MH5<@E4_*[]DW_@J'^U'_ ,&S7CW6O^"6G_!0WX67/CCP'I]O>:K\'?%/AZ\B
MA:2&>65X@K3,%6RFN-Y<-^]M9'E.)5VJ/U _X)&_L17?PMO?B%_P4,^,7Q2\
M->-_BM^TA>VVNZ_K/@J[^TZ%INF*A^PZ;ILYYN((XV4&<X\W9'QA S 'VI11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 ?ES_ ,'!'_!8']O[_@FE
MX)\/ZC\!/V:?#VE:!XI\3-H5K\1O%.L17\ZW"H9!Y.FP-MC#QI(T<LTCDA&#
MP(<9_4:OQX_X/0P/^& OA(<<_P#"][+_ --6I5^P] 'P1^V[^US_ ,%2_C+\
M>O$'[)7_  2!^$/@Q9/ WV>W^)'QC^)D[+I.FZE/!'<QZ58Q(&-Q<)!+#+*^
MR58_.5&56P3\O?L^?\%M_P#@IS^PS_P4#\*?L!?\%OOA)X72Q^(=Y!:^#_B9
MX0MEA@\V>80PS%HV\F>V\XI$XV0S0;P[@K@']AO#'@[PKX+M[NU\*:!:Z?'?
MZE<:A?+:Q!?/NIY#)-,_]YV8DDGV'0 5^6G_  7B^!UM^WI_P4O_ &,?V)/
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
MOXB?M >#(;G5?VD=5U?Q_P"/M$U*(/')!KA+6]A*AZI%I?V*U*-VB(/I7UP
M , 8 Z"@#\XO^"%/_!;?Q]_P49\1>.?V2_VO/A%;^ OCQ\+P[^(]'LK>6"WU
M"VBG%M/*L$K,]M-#.T<<L19ES*C(<,R)]T?'OQM\8_ GP_GU;X#_  17Q[XE
M<LEAHMQXDM])M0P1F#W%S*',<9*A,QQ2MN=?E"[G7\U_^"4'P.MOCM_P7F_;
M&_X*=>![)8O -M<I\.?#=["F(-7U2"/35U2XA8<2*DNFJ2X^5C=Y!)!Q^KM
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
MP6(_:@_;[NQ]J\/?#(6GP2^&]R?F0&R87FMLIZ?\?CQ[77JDA&?7]#:^>_\
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
M[P9<:/K]KI<^G?!/X;:H TG@/1;C'G75TH)4:Q>J%,Y7/V>();!B5D9O+O\
M@J=_P2!_;)_X*/?'#PS\0_!G_!5'4/A-X6\#74.H>#/!V@?#-KIK'5%CPVI2
MW0U2$W%R&+^4_EJ(%.$ 8R22>,ZE_P &_P!_P5GU6U-G=_\ !S%\9E1NIM_"
ME_"W0C[T>O@]_6@#Z!_X.%/@Q-^UK_P1V^.G@#X7W<&KZUX9L+?5VM-.G6:2
M*;2[JVO[B!E0DB7[*DF(S\WSIQR,ZO\ P;Q_$S2/BK_P1D^ FNZ1=)(-.\(-
MHURJMS'-8W4]FRL.Q_<YY[,#T(KV_P#82_9"T/\ 8C_9(\)?LMV_C"Y\62Z%
M8S'7_%&J0%9_$&HW,TEQ>WTRO)(VZ:>:5RK22$!@I=L9/S[\'?\ @F'^T_\
ML&ZEXV\$?\$TOVF?!?A3X8^.M=GUJ#P/\1? 5SK'_"%ZA.JK/+I,MM?6VZ!@
MJLMK.K(C1KAR&<, ?&_[,O@#4?VFO^#Q'XU?';PY TWA[X->#HK:\U%1F..^
M?1+/2_LY(Z.9);X@>EL_I7[5UX#_ ,$^?^">7PG_ ."?/P[U[0_"'B#4_%/B
M_P <^(9_$/Q+^(?B$)_:7B?5YF9Y+B78 L<89W\N%?EC#-]YF=V]^H ****
M"BBB@ HHHH **** "BBB@ HHHH **** "OQX_P"#T+_DP'X2_P#9=['_ --6
MI5^P]? G_!9/_@CC\>_^"OWAK0_A9XA_;9\-^ O!7AGQ*=<T?3--^$,]]J#7
M(MW@0W%V^M1I(%667&R"+_6<YP* /ONO*OVM/VKO"7[*O@:SU*YT"\\3>+O$
MM_\ V5\/? &BNO\ :/B?564LEK &XC10#)-</B."%'E<A5YZ;X)Z!\<_#7@F
M/2?V@OBAX:\7Z]&X']L^%_!DVA021B-!\]O+?WI\PN'8LLBKA@H0;<M^=7[4
M7_!"#_@HA^TE^V#J_P"V1IW_  7'\1>"-<N;6;3/#ECX2^%,EM'X?T=Y XT^
MW9-:4[240R/PTSH&?.   ?7_ .PY^QKK7P)U#Q9^T?\ M Z[8^)/CA\4[B&\
M^(7B2R1A:6$,2[;71-.#_-'I]HAV)G#S/OFD^9PJ\%_P5E\86'QP_9T\!?L?
M?##Q/!?O^TYXXTOPK%J.C7BRA_##*VHZU>1/&2LD1TJUN4#@[3]ICYY!KY0\
M3_\ !NA_P4I^)-@WA7XM?\'&_P 9==\.7H$&N:&OAN^@34+1B/-@8C72N'7*
MY9''/*L.#][V_P"QDL?[:O@?]H7^U-.@\%_"WX2W7A3X=^#K:W<-IE]>7$ N
MKW<?E %G9VMM&HR0IFR?F% 'NFG:?8:1I\&E:79Q6]K:PK%;6\"!4BC4 *J@
M<     = *^8_VN_C9\3/CMX\O?\ @GQ^QIXKDT[QA>V,;?%+XCV2AXOAQHTZ
MGYE;[K:Q<Q[A:6_6,$W4F(T02^Y?'[PC\7?'WP;\0^"_@-\7;3P%XNU/3S;Z
M)XROO#0UA-(D9@&G%FT\*S.$W; T@4.59E=5*-^6'P[_ .#;?_@I'\([/4K#
MX8_\'$?Q+T*+6M:N=7U@:9\/KB(W^H7#;I[J8KKF99G(&Z1B6. ,X   /T]^
M!'P6^ ?[%?P+\*?L^?"?3=.\*^$M B@TG0+.>Z5/.FD?@%W(,UQ-*S,S'+R2
M2,>2U>A5^=/[#/\ P0__ &F?V>OVN_#O[4_[8G_!6CXA?M$0^#K.^?PGX3\7
M:3=P6FFZG<PFW^WH)M4NH]ZV\MQ&%6)3F4$.-FT_=_Q;TCXQZWX0>P^!?C_P
MWX:UUI1MU/Q3X3GUJU6/:P(^S07UDQ;<4(;S< *1M.X%0#\G_P#@T8_Y%;]J
MK_LN\W_H$E?L/7Y^?\$C?^"-/[1?_!*+Q#XS71_VZO#7C[P]\0O$<.M>*M,U
M7X-S65V;E=X=K6YBUIDA+B0@[X90"JD*.0WZ!T %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
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
M)XZ_9Y_9E\<_'#X9?!O4_B%X@\+>&[G4=(\%:,S"YUB>-,K!'M1VR>IVH[$
M[59L*?RL_P""F'_!3_\ :MM_^"V/[-O[*P_9$\>V/@3PWXKN/$FG:#8SZ8^L
M^/[E+2]M$N;>-[U((K:+,YC2>:-GRSNJD1H/OS]H'_@J9\+?V3?V4V_:O_:<
M_9U^,?@VRC%RTWA2;P0NIZG:I#(D?F7,NESW5A9QN9(]DEQ=Q*V\#(;*@ [3
M_@GG^TO\4OVP?V.O!7[1OQI_9[U7X6>)?$ME/+J7@G6C)Y]EY=S+"DG[V..0
M)*D:3('16"2KUX8^T5XY_P $_P#]LOPA_P %!?V0_!W[8/@'PCJ6@Z/XSAO)
M;#2M8DC:Y@2"]GM?WAC)7+& M@$@!@,G&:\XU7_@I_'\1_B1XP^%?["W[+GB
M_P".U[\/M3;3/&NO>'=7TO2M"TW4D +Z:M_J-S$MU=H"N^.!)%CW 2.A.* /
MJJBOES]@[_@K1^SG^W9\0_%O[/VG>'/$_P /?BWX!E9/&7PI^(-A':ZM9*K*
MC3Q>7))%<P;F3]Y&YP)(V95$B%N!^/W_  7R_8X_9]_;8\)_L->+O"OCJTU_
MQ%=.=0\3>)/"\VA:+I5C&LYDOC<:B(6N8 ;>0":!'A;8Y$OR\@'W#17YO?&/
M_@Y7_9S^ 7Q>\-Z+\8?V/OCOX6^%WBK5ET[1?C9XH\!RZ9HMZ['BYACN2DTE
MML_>;MHE\L%Q$PZ_H]!/!=0)=6LR212(&CDC8%64C(((Z@CO0 ^BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "OS>_X*;?'O]M?X>_M37?A
MSX&>*_&%GH"Z+9R1PZ+8O) )64[R"(R,YQGFOTAHKZGA#B+#<,9J\97PD,3'
ME<>2=K:M.^L9:JW;J?*\8<.8GBG*5@Z&+GAI*2ESPO>R37+I*.COWZ'XM_\
M#6?_  4X_P"A_P#B-_X*I/\ XU1_PUG_ ,%./^A_^(W_ (*I/_C5?M)17Z;_
M ,1CR7_H08?_ ,E_^5'Y=_Q!C._^B@Q'_DW_ ,M/Q;_X:S_X*<?]#_\ $;_P
M52?_ !JC_AK/_@IQ_P!#_P#$;_P52?\ QJOVDHH_XC'DO_0@P_\ Y+_\J#_B
M#&=_]%!B/_)O_EI^+?\ PUG_ ,%./^A_^(W_ (*I/_C5'_#6?_!3C_H?_B-_
MX*I/_C5?M)11_P 1CR7_ *$&'_\ )?\ Y4'_ !!C._\ HH,1_P"3?_+3\6_^
M&L_^"G'_ $/_ ,1O_!5)_P#&J/\ AK/_ (*<?]#_ /$;_P %4G_QJOVDHH_X
MC'DO_0@P_P#Y+_\ *@_X@QG?_108C_R;_P"6GXM_\-9_\%./^A_^(W_@JD_^
M-5^D/_!,GQQ\8OB%^RS:>(_CGJFK7FOMK5Y')-K4!CG,2L-@(*@XQG'%?0=%
M?+\7^(.7<3Y4L'0RNEAI*2ESPM?1-6TA'1W[]#ZK@[P[S+A;-GC*^:U<3%Q<
M>2=[7;3YM9RU5NW4_.#_ (.N/A+XI^*7_!&3QSJ'A6SEN7\)>(='UZ^@A4EF
MM8[I896P.H1;CS&]%C8]JZW_ (-FOB9X;^)?_!%/X,-H%W&\V@66I:-JL","
MUO<P:E<C:V.A:-HI1_LRJ>]?;WCGP1X2^)?@O5_ASX_\/6NKZ%KVF3Z=K.E7
MT0>&\M9HVCEA=3U5D9E(]#7Y"_ C_@GY_P %3O\ @@3\=_%=Y_P3S^&%O^T5
M^S;XUU;^T;[X9W'B6'3O$&@38"B:%[@A)950)$7C#F=(T#Q1E%D'YB?J)^QU
M>#?\%0OC-XU_9^_X)T?''XR_#*[>'Q)X9^%NLWVC7,#?/:7(M)1%<#_KFW[S
M_MF:\U\&?\%%OVT_C);CP_\ "S_@C]\6]!UV1=K7_P 6-?T;0M$LG/!DEN(K
MJYNI8U/.(;61V'11G->M?"W]D2U'PK\:Z!^TWK]OX]\3_%?3I;3XG:H+1K>S
MNK22"2!=+LX2S-;Z?!#-+'%$69B99IG9I9Y78 ^1_P#@T^A\-+_P14\ 7NBB
M,W]WXF\13>()5.7DO/[5N%#.>I;R%MQD\X"U\R_\%B-'U3]G+_@YO_8U_:$^
M#$36.M_$>ZTG0/%8LA@WULVI'3KF24#[V;&[\LD\!;=/[N:]$_X)L?L[_P#!
M0C_@@9\1O'O[+MU^R_XP^/?[.OB?Q%)KG@+Q;\-+BPGUG1;ET6-H;NPNKB _
M/''"'9&$:O$70MYC*GO7PP_8B^-W[:7_  5&T#_@J=^V!\))?AYX>^%_A1]$
M^"GPPUC4;6\U9KB8S--K.J?9))K>WDVSLL=M'+*RE8W8HT>' /G/_@LQI7C7
M]DG_ (+S_LJ?\%2OBMI]X_P.T31U\(^)/$:PM)9^&+RX?4H#<714$01LNIPR
M"0_>^S2 9***3_@YXN?"/_!13X4? G]AW]BKQ1HWQ"^+'B;XL6VMZ3;>$=4B
MOCIFBI87<$^H7,MNSBUM?,N;9_-<JI$3$$[#COO^"V^N_P#!2:'_ (*%? -/
MV&OAAX.^,UCX:\-:MXAO_@=KM^B W2EK4ZW>I)-#%Y4:3QQVDDDF5N!+L1F)
MQP/@K_@I5_P7=^ @FE3_ (-R=&L[)V#ZI;^ M5CMY+DKU(^S"?<<$X^5^O>@
M#ZV_X+\Z9/:?\$1_CMI>J7K7LUOX!A6:ZE7!FD2ZMOWA'8EAN^M6O^#?+P]H
M'AW_ ((U? *+P_HEI8K=^"EN[I;.V6,37$D\K22OM W.S'+,>2>IKR/]L_\
M:&^-/_!7O_@BAXGT?]B[]C7QKJWC#XF65UX<U?PKJ^K:1I4G@_5++4HX;^VU
M!M1O+9]R&&8)Y4;EB%WK$20/4?\ @D?I?[5_[*'_  3'\"_ /X]?L/>.-.\:
M?#7PY'IDVB:;XF\,78UL_:)=KV<RZL(AB,HSBX:#!)"[\<@'Q[_P:CW \&:)
M^V38:#IX-IHGQGG?3M-BX0;%NP$4#ID1HOX"I?\ @V0TW]HG]IS_ ()ZZ]\6
M?!'[<^I^&=7U7XO:_>>-].M?!6DW[RZO<&"XDN99KJ)I6>2.6$_,<8  Z5VO
M_!NS^R9_P4&_8=^)7QRTC]KW]B+7?">F_%KQVOB31O$%IXU\.ZE:Z=_Q]M)!
M=);:BTX/[R)4:**0$EMVP#)\"\1?\$[?^"S'_!#3]MOQO\;_ /@D5\+K#XL_
M!3XCZDU[?_#RYF1Q8;G=TMI;8S0S!X/,D2&Y@9@8]HE!/RD ^Z?AM_P1)\+?
M#_\ X*CZ;_P5<\??MB>+/$/Q&EADLK[3YM&TW3['6$.DOIZQ/';QJ25@59!M
MY+6ZL>AK@_\ @YT_8D^&W[1'[&6E_'_1O$,GA[XS_#?Q'9-\'M5TF*1M2UG4
M[BYC2+1+=809999Y CP[ 3'+"'RD?G&O2_V#_"W_  4[_:H^*FD?M=_\%.OA
MIX;^&%AX*M[H_##X,^%;T74RZA<V[V\VL:E<>=(IF%K+/;P0JRA%NIRZJV"7
M_ /PS^V)^TS_ ,%)M6^/G[:_[%'B?P-X#^'ND?9_V?+?4O%GA[4+6TNIA)'J
M.K7\-AJ,\JZC+$8X8-J/'! TZ[P\C.X!YA_P;6_M*?#_ /;*^!_Q _:3^(GB
MFZUC]H_4_% L?CB^M6B6]UIZV^^/3+.V@4#[/8) K;$ &;C[66RV:_2ZOQR_
M:=_8<_X*2_LG?\%RW_X*'_\ !*O]A_6-;\%^*--BB^,NC7/CGPYI>G^*YI9"
M;R2UBGU%98V91#,))8D(NXW?#I(V[]=? 'B76_&/@W3_ !-XC^'NK^%+Z\@W
MW/AW7I[.6\L6R1Y<KV5Q<6[-QG,<KK@CG.0 #\T_^#O?X2^*?B7_ ,$?+[Q)
MX:LY9XO!'Q%T;7M66%22MJ5N+$L0.P>^C)] "3P*]V_X-Z?B7X;^*?\ P1H^
M FL^&KN.1--\'?V->(C#,5S97$MK*K#L=T6[GJ&!Z$&OK#XI_##P%\;/AKKW
MP@^*?ABVUKPWXGTBXTS7=)O%S'=VL\9CDC;'(RK$9!!'4$$ U^2'[-'[$?\
MP5F_X( _%;Q1X6_8Q^$L?[37[,_BG66U./P;'XCM]-\2>')F 0RQB?"2R;%C
M1_*#K.(D8I;G- '[&U\Q_P#!9GXU^.OV??\ @EG\=_BM\+K^6V\0Z5\/+Q--
MN[5R)K)[C%M]I0CE6C$K2*W8QY[5S?A#_@H1^VU\;K<>'O@]_P $D/BAX9UJ
M4>6^L?&77M(T/1-/8\>;(]M<W5W<(IYV0VQ9P.J9W#U#PE^Q/X9UC]GWQU\(
MOVDO$)\>:Q\6]/NH/BGX@:V^S+J0N+<VQM[6+<_V.T@A/E6\(9C&%\QFDFDE
MED /G'_@U[M/"MM_P0^^"\OA>*%3<#7I-3:,#<]W_;M^KE^Y;"J!G^$+VQ7R
M%_P43T?5/V:/^#M3]FGXL?!:)K.]^*WAO3[3QI;V@P-01Y;[3KB24#[X%I%;
MMR.&M5;JHQZ9_P $O_@__P %%_\ @A)J?C']C'X@_LH^,OCQ\#-0\1SZQ\-?
M'_PJEL+C4-/>4*LEM=V%W=0-$KA(W;#;$E\THTHDRGN_P _87^-G[3W_  5)
M_P"'NO[97PP'@1?!_@P>%O@A\,+[4K:]U+3;=S<&?5=3DM7DMX[F07=RJ012
M2[%FPS[HE) /F#_@IUX0\+^,?^#L']C72_%6@VNH6P^'?VH07<(=/.MIM>N+
M>3!_BCFC213V90:_5;]J33[ ?LU_$N[%E");CP!JR3RB,;I%6RGVJQZD#<V
M>F3ZU^9/[=7[.'_!2SXJ_P#!>'X(_P#!1/X0?\$X_%FJ_#WX0Z"NB:H;KQ_X
M3MKW54>74A/<VL+ZOPHBOE:-96C9VC(81YS7Z7?M :M?Z[^R'XYUK5/#-]HM
MS=_#K5)9](U.2![BS=K&4F&1K>66(NIX)CD=,CAF'- 'YS_\&<O@KPAH_P#P
M2DO/&^E^&K*#6=9^).J1:MJL=LHN+N.!(!#'))C<R1[Y-JDX4R.0 68GQ?\
M:6^$6G?LK?\ !XM\$O%7P-TY=._X6]X0;6?%MA8*$BN)9[76+*\=D7@[EL8[
MECCF4-(?FR:F_P"#53]IOX\? ?\ X)MW>B:O^QWXZ\=^"+_X@ZG<>&_%'PV%
ME?3V]SY=NEQ97EG/<PRQ895DCG021L)65C&4&[['_9*_85^.GQW_ ."H'B'_
M (+#_MI?#G_A"M0L/"J^$O@A\,KO4+>\U#0-)Q)YM_J$ML\D*74WGW.((I)!
M$EW(K,S $ 'S'_P1R^+FJ?';_@Y1_;?\7_$V8R^(= M;OPUX;2<Y:VT;3]7B
ML@D0/W49;>U<XX+2%CRQ)]>_X.X_@SX4^(W_  1S\2?$C6;")M3^'GB_1-7T
M2[*CS(GGO8].D56Z[6CO"2O0E%)&5!'/_MG?\$U/VQ/V.?\ @K/9?\%FO^":
M7PQM_B#!XEM&L/C3\(8M7AL+S4H)(XXY[BSDF*QOO$,$Y0G>+F!7 E65E3NO
MVZOAS^U9_P %NOA/H'['-C^RCX^^!WPJU/Q-8:I\6O&7Q3DTVVU*>RM)1.NF
M:98V=W<O)-)*L;&XF\N*,1<"0G;0!X+_ ,%5_B5X\^-7_!HGX7^*OQ6N)[KQ
M%K'@/P#=:G?7>3+=S&^T]3<L3U:5?WA/?S">]?HM_P $KO _@[PQ_P $Q_V>
M-"T#PQ8VEG#\'O#5[%;0VRA5N9M-@GEG Q_K'EEDD9^I9V8G)-?.?_!>_P#9
M3_:1_: _X)FS_P#!/#]@W]CO5_%/VZ'0K;3+RQ\2Z)INEZ'8:==12+;L;^_A
MG=PEK&BJD3)MD!+@J5KZ&_X)8K^T%X8_8B^&_P %OVE_V:-=^&WBKX?> ]&\
M.:E!JFNZ1J%MJ4MG:);-<6LNFWMP?+(A5R)EB8&4* ^TM0!\[>'O%'[)GP&_
MX*=?&3PY_P $TOV>+WXG?M(>/(+2\^,M[/XKDL_"_A!!_JSJ%ZZS?9Y97.\V
MMK#/,[*WRQA3CYC_ &(['XSZ5_P=U_%Q/CWKOAF^\5W7P*ADU>;P=I5Q9Z>
M;/0S'%&EQ-+(^R,1H9&8>8R%PD8(C75_9<_9J_X+"_\ !*#_ (*B?M%>(O@A
M^PS9?'7X;_M!^,7U^R\3GXAV6B_V>YO+RYA>YFG$DB>4M_/'+&829"JO$3C:
MTNA?L/\ _!:?X4?\%^-7_;JTWX*?#SQ9;_$/X;Q:/JWC2#6#8^'?#&^VM82O
MD/*U]>M:M:1@($C-V#NS:AV\D T/^"I'_*T?^Q'_ -BG<_\ HS5*^Y?^"U\,
M4_\ P2._:-29 P'P@UM@".XM7(/Y@&OE'_@M)^Q%^WWJ7_!1S]FO_@IK^Q)\
M![3XM7?PIA?3?$O@O_A(K729YD,TC"19+EPBI(ES.A<;S$RHQ1ESCW']O?1/
M^"@_QZ_X)6_$3X0W'[)R^(?BI\6?"^IZ7:^#O!GBS2ET_P (PW*)#%!=:AJ5
MU:?:W2-GD>6"-@TN]%54".P!\]?\$Y/C%XX_9]_X-)+?XU?#.>6#Q#X:^#7C
M*]T6[A^]:W*ZCJGEW ]XV(D_X!7H/_!I]#X:7_@BIX!OM%$9O[OQ-XBF\02J
M<O)>?VK<*&<]2WD+;C)YP%KKO^")W[,'QV^&G_!*31?^"=W[>?[)>K>$YM'T
M#6=#\0+J'B'1M0T[7K#4+V\D9(7TZ^GD7,%UL<2)'R#M+5\]_P#!-C]G?_@H
M1_P0,^(WCW]EVY_9?\8?'O\ 9U\3^(I-<\!>+?AI<6$^LZ+<NBQM#=V%U<0'
MYXHX0[(PC5XBZ%O,94 /._\ @L3H^J?LY?\ !S?^QK^T)\&(FL=;^(]WI.@>
M*Q9#!OK9M2.G7,DH'WLV-WY9)X"VZ?W:Z;_@LOX9\.>*/^#D3]A?2_$N@V>H
MVLUL3-;7ULLL;F.]N)(R58$$JX##T(!'(KZ7^&'[$7QN_;3_ ."HV@?\%3OV
MO_A'+\//#WPN\*/HOP4^&&L:C:WFK-<3&9IM9U/[))-;V\FV=ECMHY964I&[
M%&CP_B/_  4I_9A_X*+_ !V_X+6_L^?MI_!G_@G]XIUKX=_!)TM]9U"3QQX6
MM;K5E:\G:::S@EU96*"%T9!-Y+LV598\9H ZC_@[ZTO3]0_X(Y:I=WEHDDEC
M\1="GM'=<F*0O+&6'H=DCK]&-??O['-U<7O[(OPKO;N9I)9OAQH;RR,<EF-A
M 23^-?$7_!Q'\!/VV/\ @H%^P':_LL_LI_L4>*M<U[7M=TK6-1NM1\6>&["V
MTB* R/);RM-J@:2X#>6N(E>+#$B4[<'["_8(N/BW;_LE> _"'QQ^!&M_#WQ/
MX9\)Z9HVKZ+K6JZ9>[Y[:SABDE@ETZ[N8WA+JP4N4D(&3&O% 'L5%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 ?EA^T1^RU_P %IOV+/^"FWQ,_X*%_L'>$
M_!GQ\\)?%O3]-M/$'P[\4:Y'I>J:1;V,6V&"UGGDCB2-"TK*4=MWG/O@9PLA
M]:^&W[67_!>;]H9U\(+_ ,$L? /P(\Y?+N/'GQ#^,<'B&"TS]Z2+3--B2:=P
M#E8WEC1F !D49(^]:* /._V6?V=/#O[+/P9L?A/H6OWNM7/V^]U7Q#XCU14%
MWKFKWUU+>7^H3! %#S7,TLFU0%0,$4!54#T2BB@ HHHH **** "BBB@ HHHH
M **** "BBB@ KR/]N'Q'\2-(_9G\8:#\)?@/XD^(.OZ_X9U'3-+T;PW<Z?"R
MW$UK)'&\TE]=6Z)%O90S*68#)"GI7KE% 'YI?\&S_P"SY^V'^PU^QK<?L@?M
M=_LD>*/!FK6_C#4=8L_$,FL:/>Z;<6\\<&U"UK>R3)*'20;3%MQM._D@?I;1
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 445GZCXM\*Z/<FRU?Q-I]K, "
M8;F]C1@#T.&(- &A161_PL'P%_T.^C_^#*+_ .*H_P"%@^ O^AWT?_P91?\
MQ5 &O161_P +!\!?]#OH_P#X,HO_ (JC_A8/@+_H=]'_ /!E%_\ %4 :]%9'
M_"P? 7_0[Z/_ .#*+_XJC_A8/@+_ *'?1_\ P91?_%4 :]%9'_"P? 7_ $.^
MC_\ @RB_^*H_X6#X"_Z'?1__  91?_%4 :]%9'_"P? 7_0[Z/_X,HO\ XJM#
M3M5TS6+87ND:C!=0EB!+;3*ZY'494D4 >6_M9:!^VOJG@6ZU']B?XG_#W1O$
MEI8R/::7\0_!]WJ%GJ,XR4C:>VO;=[53P-X27'7:>E?GY_P0H_X.(/$?[?7Q
ME\3_ +%?[<WAWPKX.^,6F:C<_P#"-+X;22#3];BM\K<VB++/,?M4)1W^60K+
M'N*@>4Q;]7*_GB\5?\$8_%7[6O\ P2J\(?\ !0?]B"&ZT;]H;X7?$+QM?VTF
M@L8;KQ):6OC#5I8T1DP?MUN5WP./F< PG.8M@!_05XRL?%NI^&KJQ\"^([/2
M=6D519ZC?Z8;R&$[@26A66(OE<C&]<$@\XP?B_\ X)_?M"?\%)/V@?VJOCI\
M*OCU\4OA1%X8^"OQ$M?#D#>&/AQ?0WGB".2VCO3*SS:K(EH?L\T*X"R_.['.
M$&_*_P"""7_!9KPM_P %6?V=&T3X@S6ND_&CP+;QVWQ"\/!1%]L ^1-4MX^,
M0RL,.@'[F7*$!6B9^I_X)D?\GI?MN_\ 9>M._P#49TN@#[/K\Y?^"CO_  7*
M\-?L1?\ !5_]GS]A@WVG_P#"/>+I&;XL7LZJ6TV/4";32<2?\L=EPK3S9_Y8
ME#P&S7Z!?$/Q]X1^%/@#7/BAX_UJ+3="\-Z1<ZIK6HSG"6MI;Q-+-*WLJ(S'
MZ5^%?[>G_!,WQA^W;_P14^)'_!47QEX-FB^-7C;QG)\8]/@ECS=V'A&.'[-9
M:-N')CBT98[L #)E7% '[V5X1_P4H_;X^&7_  31_8\\5_M<?%'2Y]3M]"BB
M@TG0K281RZMJ,[B.WM5<@A SG+OAMD:.^UMNT^=_\$,?V\5_X*(_\$T?AY\<
M]9U@7?BK3;'_ (1WQV6?=)_;%DJQRROZ-/&8;K'87(%0_P#!=/\ X)X>+O\
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
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !7R9^V#^Q]\9_C1\9Y_&_@BR
MT][!]/MX5:YOQ&VY 0>"/>OK.B@#\^O^'<W[2W_0,T?_ ,&R_P"%'_#N;]I;
M_H&:/_X-E_PK]!:* /SZ_P"'<W[2W_0,T?\ \&R_X4?\.YOVEO\ H&:/_P"#
M9?\ "OT%HH _/K_AW-^TM_T#-'_\&R_X4?\ #N;]I;_H&:/_ .#9?\*_06B@
M#\^O^'<W[2W_ $#-'_\ !LO^%'_#N;]I;_H&:/\ ^#9?\*_06B@#\^O^'<W[
M2W_0,T?_ ,&R_P"%?6G['WPG\7_!?X,0>!_&\,$=_'J%Q,RVTXD7:[ CD5ZC
M10 5\7_\$ ?^49>@?]E%\>?^I=J]?4GQET/XW^(/")T[X!?$KPSX5UMI#NU7
MQ5X-GURW6,HXPMO#?V1#ARC;C(RX4J4.X,OSM_P2T_X)_?M-_P#!.?X26_[/
MOC/]L7PU\3/!]MK.IZI#YGPHFTG54GOIY+J51<KJ\\/E_:)9),&W+?O&7<!M
MV@'YX?\ !=+_ ()V?'+_ ()L?M0V?_!>?_@E]8G3KS2-1-W\8O"-C 3;2I(0
M+B_>%,>9:7 )6[08*.1< @EY(_IG_@W8_:W\*_MX:G^T_P#M<^#/#MWH]AXX
M^+FF7PTF^=6DLYE\.:;%-"67APLL<BJ^!N4!L+G _2/6-'TGQ#I-UH&OZ7;W
MUC?6SV][97<*R17$+J5>-T8$.K*2"I!!!(-?+_\ P37_ ."6_P -O^"8'_"W
M?"WP"\0;?"?Q#\=?\)'X;T*ZMF?_ (1X-:11-9[]^9XED1BA)5A&51BS*78
MX'_@M5+XM_:6T3X=_P#!)OX3>+9-'U_]H77)5\7:Q;P"5]%\':8JW>J717(&
M96%M:(K$+(;ATSUKJ?\ AA?_ (**?\(U_P (;_P]IE_LC[#]B_LS_AG_ ,.>
M1]FV;/)\O&W9L^7;C&.*Y3P%_P $R?V\O"__  4;U7_@HYXJ_P""BO@?Q!K6
MK^"QX1_X1*Z^ =S'INFZ(+F*Y^SV17Q"9H',T7F&1WDW-(Y96&T+]T4 ?@Q_
MP09O/%G_  1[_P""TOQB_P"",OQ=\5/=^'O'"KJGP^U6XA\F.]NH(#=6TJ)D
MJC7%@\JR ,?WUFD8R17[-?M/_M/>$_V6=)\&>(/&UFC:?XN^(VC^$3=R7@A6
MRFU&5H()FRI##SO+0J2O#YW#;@_ W_!03_@WT_:6_;U_;N\-_M^2_P#!2G1?
MA_XM\#VUC;>"E\)_ ^0FPCL[R:[MY)9)M<8W$PDG?<Q"HR@+Y8&0?H_]NS_@
MF[\2/^"C'[%FD?LC_M-?M":>;P^,-.U3Q)XQ\">%9-%>:WM69P+:VN+J^$,[
M-M^=I&09)"C 6@#O_P!N[_@FG^QC_P %(OAV?A[^UE\&-/UYH(631_$,"_9]
M6TACSNM;M!YD?S88QDM&Y WHXXK\>/\ @D1\%/CW_P $9O\ @XDU7_@EAX:^
M)^H>*OA=\0_#%WJT:W'"?9TT^:]L[Z:)?DBNHWMGLW=0!(),X **OZ8^%?V;
MO^"SWP#\*P?#3X2_MY?";XEZ/:VX@TW7OC7\,M0_MZUC4;46:XTS4(HKY@H&
M99(D=SRQ8Y)T_P!@S_@E7;_LR_'[QG^W'^TG\;[OXO?'SX@6RV>M>.;O1X].
ML]*TY=FW3M-LD9Q;0@11*6+LSB)?NY<, ?GI_P 'J7_(I_LQ?]CQK/\ Z+T^
MOW&K\V?^"NO_  0M_:0_X*[^+?!VH_$O_@H'X9\'Z'\/[N^N/"^B>'_@E-*X
MDN7B)DN9IM=/GNJ01*"J1KPYV#=@>U?\,H_\%@KKP\/#NH?\%>?!<3F,I)K>
MF?LP6T5_S_$IEUF6W5OK 1[4 ?&/_!X3^UGX>TG]D/PA_P $]O <C:S\1?BQ
MXQT^Z3PSIJ&:Z&FVTI,;>4F6W37GV>.)<?O"DVW)0BOOO_@E)^RO>?L ?\$T
M?A3^S9X]N[:TU'P?X/\ /\4R-.ODVM]<22WU\OF9VE$GN)AOZ$+GBO/?V-O^
M"''[+7[+WQ^O/VROBCXS\7?&OXW:A*99OB;\4=02[N+.0KL)LK=$6*U 3"*<
M.\:#8CJA*UZ7_P %)/V3?VE/VV?V>=9_9N^!G[6>E?"32O%FESZ;XMUAOA])
MK6HW-G* KPVTHU*U2V5X_,CD+1RLRR':T9&2 ?(W[#7P!_;$_;@^(/Q)_P""
MM'PG_;3N_A3:?&K6SI_@?26^&FG:Q)_PANDRRVNER[K[YK?[01<7;1H K&='
M);Y<?-__  <G?\$Q_P!M:+]E'2?V_/%?[;=Y\2_$GP-U>&\LA!\.-.T2YTZP
MN+B$2W,<UB=TIAN$M90K@A%$K@K\V?UJ_82_9Y^,W[*7[.7A?]G;XL?&?PQX
MWM?!7AS3]"\-ZGX=\ 2Z XLK2W6"/[1&^HWB2R%$CRT?DKD'Y.>$_;W_ &</
MBO\ M=?LP>+OV:?AC\8?#O@J#QSX=O\ 0O$.KZ_X%EUYA8W=N\$OV>)+^T6*
M8*[%9',J@X.SB@#._P""9?[9^@?\%!/V%/AO^UEHLD"W/BCP]&=?M+<_+9ZK
M"3!?0 =0JW$<H7."4V-T85^._P#P17\&WO\ P2]_X.3OC?\ L2?%N$Z7:?$C
M2-5/P^NKD;$U.$WB:EI[(Q^5MUFMRIP3B:)H_O BOOC_ ((Z?\$:?VGO^"0V
MGZE\,O#?_!0K2/'WPWUO5QJ>H^#]9^#\MI-;71C6-Y;*[367%NTBI&'#Q3(?
M+4A5.6/MW_!1;_@E7^SE_P %'=+\/Z[X^O-9\)?$/P/>+>_#WXI^#;H6NM>'
M[E'$B&.3!$L0D57,3C ()0HQWT ?3-?A]_P=X3>(_P!J?XK_ +,?_!,_X%V0
MUGX@>,/%%YJRZ1"<M;1R".SM9I<?<B)-Z[.>%2UD8X S5S_@IY_P5H_X+Z?\
M$<]/A\(?%KX5_"WXF^#;A4M= _: M_!5]"MVQ&,7]I!?+!:WO4B/Y(I,93>
MX'V?_P $D?V+_P!EW5;6/_@JCI_[0&H_'WXH_%S1DN+KXQ>)+2&W>UM64*VG
M6-C$3'I4<>WR7@!:1&C:-GP-@ /K_P""/PNTCX'_  8\(_!7P_.TMAX/\+Z?
MHEC*ZX+PVEM' A(YP2L8KXQ_X.5_V2/&?[8'_!(WX@^&/AOI,VH^(/!]Q:>+
M=,TZW0M)=+8N3<HBC)9_LDERRJ 2S*JCDU]ZT$ C!% 'YT?\&M'[4_@K]HK_
M ()"^ _!&D:S!)XA^&$MWX9\3Z<L@\RV*7$LUHY7KLDM98<-C!9)%!)0X_1>
MOS8^)_\ P;_ZW\&OVHM5_;1_X)$_M>ZA^SOXN\0.S^*?![>'X]5\+ZSN<NR-
M9LZ"!"S,VW$BH3^Y6'J/9O!WP!_X+-^/;?\ X1?]H7]O7X5>%]'8;+S4?A!\
M*9UUNYCZ,([G5+R>VM'*\^8+64J3\H& : )/^"O'Q /Q1_X)F_M5?##X%:W-
MJ/B?PM\+]1MO$$.G02,+8RV+7$UIY@&QIS9$NT*DNJ7$191YJ;O'_P#@U%^)
M7A?QW_P1-^&_AK0+J)[OP=KOB'1];BC(S#<OJUS?*K#L3!>P-_P+-?=OP:^
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
MDWQVLNJL[RQP !8Y/LZPO<1*(W( R0#YB_X)>^%/V7/BA_P7-_;B_95_;/\
M 6EZKXSUSXEW&O\ P^BUR9XY+FPBN;MI(HL.N]A:W%C*JC),:2,!A#7Z(_%[
M_@G1_P $F/@XFC?&SXH_LF^"UN])\0Z9:>'-1N=->YNH]3N;Z&"RBM@S,WFO
M=20A0O\ $0>V:\3_ ."OG_!O1X$_X*+_ !FTC]L3]G[X]:E\&OC9HT<"'Q=I
M%L[Q:F( !;R2^3+%+#<Q*%1+F-]P151E8*A3<_8 _P"".O[2?PG^*NA?M _\
M%)?^"AWB[]H/Q)X-9Y? 'AW4I)HM#T"[:-HCJ!BDD;[7>"-W5)G53&'8@,VU
ME /T"HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** ,[Q=X/\)?$#PQ?>"?'GA;3M;T;5+9K?4](U>RCN;6[A88:.6*0%)$
M(ZJP(-?-GPA_X)0_!3]D[Q3JGB;]A+XD^,O@U9ZW=F[UGP3X=OX;_P ,WUP0
M 93INHQ3K;,0%!-F]L2$49VC%?4E% $&F0WUMIMO;ZI?+<W,<"+<W*0^6)9
M &<)D[03D[<G&<9-3T44 %%%% !1110 4444 %%%% &!\3+/XH7_ (/N;7X.
M>(= TK7VV_8[[Q-HT]_9Q\\[X(+BW=^.F)5KX6_X)'_\$=_VG/\ @EQ\3OB)
MXIN/VR/"/CS1?BKXBBUKQ?IUQ\,;BPNH[M7N&+VLZ:FZ1!C<-E7CD'RKC&#G
M]"** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HJO<:MI5I?VVE7>IV\5U>;_LEM),JR3[!E]BDY;:""<= >:L4 %%%
M% !1110 44V6>&!0\\RH"P4%V RQ. /J20!]:=0 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4456O=8TC3;FVL]1U6VMYKV4Q6<4\ZHT\@4L40$Y9MH)P,G )[4 6:**
M* "BBB@ HIHFA:9K=95,BJ&9 W(!R 2/0X/Y'TIU !1110 4444 %%%% !15
M>]U;2M-FMK;4=3M[>2\F\FTCFF5&GDVEMB GYFVJQP.<*3VJQ0 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
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
MO5_^#;;QKXG\??\ !$CX":[XNGEDNH-"U+38FF))%K9ZQ?6EL.>P@@B ]@*
M/<_^"CG[6L7[$/[%_CK]HFST_P#M#7-+TL6G@[1U3>^J:[=NMKIUHJ#E]]U+
M""!DA-QQP:^$_P#@U)_;V^(O[0G[+WCK]C[]I'7M0N/B?\&/&-U'J0UN8M>S
M6-Y<32_O2QW-)#>+>1-U"+Y"\9 KWK]HI?\ AM[_ (*W?#7]E:V'VKP-^S=I
M\/Q0^(ZCYH9O$MR)+?PY8O\ W9(D^UZA@\$+$>U? ?[8H_X<F_\ !S1X)_;"
ML_\ B5_"7]IN%[+QC(/DMH+FYDB@U!F/_3*\^PZB[<G$[@4 ?N[7Y;?M]_\
M!37]H_\ :E_X*3:/_P $3/\ @F?\0(_".O+&UU\:?C%#:)=3>&+%(A+/;6*-
M\@N%C>-#*>5FGCB4QLKNOZDU_/9_P:=ZK>_%3_@KK^U1\;O';F;Q/J&DZC-=
M3SG,FZ\UY9KCD\\R11Y^@H _4>T_X(,?\$];G04C\>:3\2?%OBCRO])^(GB3
MXR>(9=>GN,<W)N([U%23/S8C1$S_  8)!^3]#_;X_:._X(?_ /!2OPQ_P3U_
M;A^.6N?%#X ?%6.*3X3?%/QK<B;7/#<CS>1]DO[O ^UQ13%$DDD^9(YH9@RK
MOA'Z^5^'?_![WX1T>\_9G^!?CZ:%/[0TWQUJEA;2X^80W-DDD@'L6M8OR% '
M[B5X;_P4M_:WO?V$?V#OBA^UKI/A^+5=0\%^%Y+K2=/N-WE37LCI!;"7:0?*
M$TL9?!!V!L$'FM_]A?QIXF^)'[$OP=^(GC6>276=?^%GA[4=7EF.7>ZGTVWE
ME+'N2[-FM_\ :+^ 7PU_:G^!/BW]G+XPZ0U]X8\::#<:3K-O%)LD\F9"I>-L
M'9(APZ-CY653VH _/+_@F-_P3=_9]_X*(?L3>"?VXOVZ_BIXU^-?Q%^*&E_V
MYJ.OS_$?5K"TT"221Q_9VFVNG74$-DMNRF)@B[A(DF"JD(-KX#?LF_M3?L:?
M\%G? ?P_U?\ :V^(GQ'^!VM?"#Q3<^ =)\?:\^HW7A[48;G2UN;22Y<;[E!'
M+"8))275#)&/N,[_ )R>)/@1_P %O?\ @UR\>:OXY_9TOY/BY^SA<:B]W?PO
M92W>F)$3@R7UK&WG:3<[0H-S$?)<A-SR8\H?JC_P24_X+F?L1_\ !7JXMK'P
MYX>3PC\7_#NF33W'@KQ&(IKN"!]@N)=.NPH^TP'"!]HCD&U2\87:Q /<OV]O
MV^OAQ^P[I_PWT?7[FSN_%/Q4^*>@>#?"'A^:?;)=M>ZE;07=R /F\NWMY9)"
MV-N_R4)!D%>_U^%?_!R9^R9\---_X*H_L2_$6U\1^,QK7Q4^,"Z7XAU#_A-]
M0$EC:P:KH:P)II$H_LSRS>7#JUMY;"1]^=P#5]U_\%&OVE?!W_!"3_@FKXS^
M,_@/Q3XT\9:]J&M1V7@J'XH_$#5/$DLNM7<8CC0W&H7$LRVT45O+<F!'56\J
M3&UI"U 'W317P=\*/^"1_AK]H/\ 9.\/^,/VM_VA_B]KGQJ\4^%[?5-8^)NE
M?%+5M.N-"U2YA68KIEI:W$=E:002/MCB6#8P0%PQ)->2?\$!O^"D7[3?CKX_
M?&3_ ()+_M[>-#XI^*/P-O[K^Q_&TR@3^(-(M[M;21YS_&Z-);.DI^>2.Z&_
M+1L[@'ZF4DB"6-HV+ ,I!*L01]".E?F;^P-\0]1_X+P?$'XN?M+?%OQ_XHMO
M@'X,\?7'@KX4_#?PIXLOM%M]7-K%%-<:UJ<MA-#->/*+B Q0-)Y$0W#8[CS#
MH_L)?LG?\%.?V)?^"L?Q ^%VA:GKOB']C'7-%-_X1N/&7CP:O-H%Z8(&6TM/
MM4\E]'MN#<1;&!B:':[,9 "0#YK^'/PAT_X(_P#!X-IO@S1/&OBS6K"X^$5S
MJ,#>+_%E[K-Q;O-ID@E1)[R6201ET+B/=M3>54*H51^VU?C!\8O'_@?X5?\
M!WQ:_$GXE^+=/T'P_H?[/<][K&LZM=K!;6=O'IMRSRR2.0JJ ,DDU])^!?@;
M\7?^"KO[35A^W'-\:?C?\)/V?[+24MO!'@[PQ\5-=\/W7Q*7=N76[NUMKF,:
M;8,A @2-8[JX0B:1HU*(0#]#**_-?_@NW^UK'^P)\/\ ]G;X1ZG\0/'/A?X0
M>./BK'I/Q:\;Z5XDU&XUFWT2)/.>U&I/+)>IYQ=F>2.3[1Y-M(D;#.*ZC4/V
M&_A?XW\2_ S]K'_@E[^T9XIN/!6F_$S3+SQOX>\-?&#4=5\.>)M%W,))I(+B
M\EA-Q;RF*0E<,5$H=68)M /T KD_CO\ &[X;_LV?!CQ1\?OC!X@32_#'@_1+
MC5=;OG&3';PH78*O5W.-JH.69E49)%=97Y!_\'E?[0'B?P#_ ,$]?!?[.WA.
M\DAD^*7Q%@@U54; N+&QB:X,)^MTUD__ &SH ^L_^":EI\0?VY/!NB_\%-?V
MK=&>.\\7L^J?!CX?7+[['P/X??<MI<K']R;4[J$^?+>D%UCG6&+RH]ZO\U?%
MKXV:W_P5%_X+M^,?^"5?Q#^-GB/P;\'/@UX%CU?5_!WA+Q%/I%Y\0M5=+&1X
MKFZMWCG^R1)?#]S&ZD^07YW;H_T_^%7P^T7X2_"_PW\*O#<*QZ=X9T"STFPC
M1<!8;:!(4 '8!4%?E3_P78_X(,_M#_M"?M#V?_!4'_@F'\1Y_#7QOT:VMVUC
M1K;5O[/FUF2VB$,%U9W60L5T(52!HY2L4L:*"R$,)0#UC]M__@C;>?!']FOQ
ME\3_ /@D;\=_B;\%_B'HWAV[O;70-$^(.IW^C^)?+B9WM9K._GG2.=U#+%/'
ML9)&5CGDU]/_ +('P^\/_&7_ ()N?!7PQX\NM7DM[SX1>&9;B;2_$-[IUTS_
M -E6^6%S:313*222<.,GFORG_8-_X.L_BO\  SXDI^Q__P %NO@5JW@_Q+ID
MZ65[X_M?#\EI/;MP!)J6F[00I'S>?:C:05*P8)>OVZ^&-W\.+_X;^'[WX.RZ
M-)X1ET6U;PN_AWRO[/.G&)?L_P!F\G]WY'E;-FSY=N,<8H _#/\ X(A>%/B3
M\;O^"UO[4O[./QO_ &K/C7XM\#_!O6/$%AX-\/:S\9M?:%!!KS64$DQ2\5IV
M2WC*X<E27+$$A2/T,_X+A?\ !7?P_P#\$D_V:--U?PCX:A\3?%'QS=OI7PT\
M*W+.Z33(J>;>7 4AW@A\R(%%(>226) 5#,Z?"O\ P;[_ /*PO^WY_P!CAXF_
M]2J:O-_^"VFL7OQC_P"#J+]F'X.>-V,GA[0=3\$16EA+_JI1+K,EU,<=S(VV
M-CW$:CM0!^B7[+W_  1XU7XP?#G3?B__ ,%>OC-XV^,OQ3\06:7NL^'KSQE>
MZ?X:\,22J&-A8Z;I\T-OB,$(TK*V]E+*%!K@?^"LO_!,+XX_!;]A'XE>*_\
M@E+^TA\1_ ,]MX3O7\3_  N;Q9=:QI&OZ4(F-Y%9QZB]Q)IEYY(<H]F\?F;?
M+VY<.OZ=4V6*.>-H9HU='4JZ,,A@>H([T <_\(?$_P#PFWPG\+^,_,W_ -K^
M';*]WY^]YL"29_\ 'JH_'R^^,]A\(=;;]GC1-+OO&L]NEMX=77)]EE:W$TB1
M"[N,$,\-N':X>-#OD6%D3YV6NHTG2=+T'2[;0]#TVWLK*RMT@L[.TA6.*")%
M"I&B* %55  4    "K% 'Y ?\%!_^#>OXFO\ ?&'[7/@G_@J=^T#K'QX\,:#
M=^(1X@USQ>EOIE_<6T3SO;V]K:QQMIL;;"D(CF98<@88"OJ;_@WJ_; ^/W[<
M/_!*_P !?'']I666]\4"ZU#29O$$T(1M<AL[EX([Q@  7(7RW8?>DA=N"Q \
MU_X.#OVF/^"F'PX_95\8^ /V1OV%=2\2^#-4TB6S\=?$6S\1V\UU:Z/)'B\2
MVTZ!C=+OA:6-KK!\A=[A =LB^I_\$'OV^?V8/V\?V!/#VI?LQ?"J'X>V?@%(
M_#.K_#J&X\U-!FAB1D6.4@-/#(C"19F 9V,F_+JYH \*\/\ QBMO^"FW_!<;
MXT_L+?M!_$+7+#X:_ ?PK8OX:^%>D>(+G2X?%M],L#7>IZB;62.6\C@:>-([
M=F,($D;E22VY/V\+N?\ X)&?MT?LM:_^Q=J^MZ=X;^-WQ03P1\0?@^^NW5[I
M.IV]Q);HNIVEK<2.+*ZMS-DO!L5\QJXQNW>6?\'#'["6M>'_ -L'X;?MY?\
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
M6O!/AO3/"TOBWXZ^*?"=^UIK,]L(1+;:/:72?O+(2"2U>6:(K*4N5".FUM_
M_P#!8[]CKXD?\$S?V;Y_^"D7_!+7XS>//!?B+X9W]K>>-_!NJ^/-5US1?%>D
MR3I#,;JTU*YF5Y8S(CF0%6\L2G/F!'4 _5ZBOS3_ &OOVO?B;^WC_P $!+[_
M (*/?LI_M(>-/A'J</PPO_$%WI_@V:S4RW]H_E7EE+<RV[W,:136]U&DEM);
MR'<KL2/DKSC_ ()4_L1_&C_@IO\ \$=OA'>_M-_MU_%GP_X>NM%U-=.TKX9^
M*VL+W493JMZ'O=6OYXY9[Z3<,)!E8(U1=PE<[E /USHK\._^"(=W_P %"?VB
M/$G[2W_!)CXA?MX^+;'PG\"/B0^D7GQ)TV\:3Q?/9_:K^S%AI]Y<B464+M8&
M4S-YDL(/EPA?,WQ:?P_\,_&;_@CI_P '#/PD_8[^&W[5_P 3/'WPC^/?A*>X
MU?P_\2_%$FJS6=[MOE61'8!=ZS6D+B4(KF.62-BV Q /VQHK\7?^#@#XA?MQ
M_L\_\%-OV.M,^"W[7GC/5-&^)WQ;M?LWPOOM5ATG0_M5GK.E""UFDT^W26>U
ME^VJDGVG[2RA689!""M_P5E_X)!?\%%_A+\#?$__  4O^$W_  5D^+OB/XO>
M!;"3Q'XCT>WU"33-':Q@'FW46E6EO)BSAAC#N('\U94C96^9R2 ?M717YM?L
MI_\ !3#]M']O?_@@'JO[6W[+/@FVUK]H>QT&[T+^SK2VA"3:W;SQPRWD,3D1
MF0VL@O%A(V>81&%9< ^/?M8?L;>%?V=/^")DG[1O[5/[3WC[P)^U+:?#5O$H
M\<:Y\==2M]7G\5I!]K;2X%^VB"0%_P#1%MH4*J"-@W@.0#]AJ*^%?^"4_P 5
M_P!H[_@I=_P1-^%WQ/\ %W[2?B3P9X_\3:)J-EJ?C[PM8Z>]_+)8ZC>Z>LQ6
M\MIX0T@MHWD98U<DL4:,D,/@W_@W/\!?MH_\%0?V'OB?IOQX_;\^)FA>&)_B
M_>#Q+KGA?Q-(?%FN71TS3O\ 1?[2NEE-A8QKM;9 OF3-,REH4C*S '[N5\M_
MMV_\$G/@5^W_ /M"_!3]H[XI_$#QCI&K? _Q)_:^@V7AW4XX;:_?S[>X"3AX
MV9?WEK%\\11RA9<_=9/A7_@C?XH^/G[#_P#P7(^/G_!'GQ1^T5XQ^(_PUTGP
M9%XH\%W?CK6'OKVPD9--G5!(V N8M1D24(%1WMT<(NXU5_X+H>(OVH_@9_P5
MP_8BTS1?VSOB-=^"/BC\<=-&H_#XW]O9:5:"SU[2 (ECL88&NHFCO=I^UM.^
M5/SX;: #]F**^)O^"TW_  4&\2?L<>$/A9\#OAAXT'ACQC\<_B!#X:LO%XTA
MM0D\-:2A1M2U6"U5'-S<0Q2QK%$493),K$$+M;XL_P""G?@3]FGPQ^R_J'QY
M_P"";?[5/[25G^T/X/:UOM$UA=8\;ZC<^*V$\:SVUY%?(UNX:-I) J)&@90F
MWRSY= '[645^2'[5?_!6G]L33/\ @W:\*?MI>*?!OB7P#\2-?U[3O"_Q)OK'
M17L=1T2#^T)+6\U*UBG0"WDN(H%\IB,1O>IM.54UW?CG]CK]F+]LO]C*#X\_
M\$=/VK_'#:_:7NG7LEYX9^-FMW2^)($GB>[TS6;>\O6S/+ ).)U299 NX[2Z
ML ?6_P"W'^RWX]^*WA=_C9^RQXM'@_XY>$M.9_!'B6,XM]56,M*-%U2/(6[T
MZ=BRE'R8'D\^(I(N3#_P3'_X* >!O^"DO[)VD?M#>%]$?0]9ANYM'\=>$KB3
M=/X>URVPMU9.2 2 65T8@%HY8R0I)4?0=?C!_P $5/B#?_ #_@X>_;<_8<LY
MVB\.^*=5OO&VGV.?W5O=I?PR;8UZ)NAU9LXZK;H/X10!^S]?BC_P=T#XC_LG
M_ WX=_M(?LR?M$?%3P)X@\0?$"YTO7T\-?%/6K:TOHI;2:Y!-LMUY,11X3M\
MM$XD(.0%"_M=7XO?\'M/_)AOPE_[*[_[B[R@#].?V'_V;/"'P ^!OA==(\8>
M-?$&JWGA:P.L:WXU\>ZIK5Q?3F%'DF/VVXE6-F<LV(U11G: % %>T5S?P;_Y
M)#X5_P"Q;L?_ $G2NDH **_.P_LZ_MI?MA_\%</BO!^W'HGBS3/V8/ GA*VA
M^%6CZ-XTN-*TC7+Z98&DO;H6-Q%+>2(/M>1,?+ARJ[<X9OG[_@F9^TC=_!7_
M (.%/BC_ ,$\OV<_VIM1^(?[/^J>!7UCPYHE]XZE\1V_AS4HH;226"UNY9IG
M01R-=1-%O/#*'R\8:@#F_P!LSX,Z;\&O^#L#]E)-!\<>+]5M?$GA:YU>YMO%
M7B^]U9;:[:+6H9#;?:Y9/LT3)%%^YCVQJ5^51G%?MQ7XH_\ !9'3OBYK/_!S
M3^R3H_P'\2:/HOBV\^&=S!HNM:]8O=6NG2.^MJUTT"%3.T2%Y%B+*LCHJ,R*
MQ88W_!6/_@EU_P %"O\ @G/\+=1_X*F_LC?\%6?C7XR\7^"9XM3^(&E^-=<$
ML-]9F55DE@MXMMO]GB+ M921O&(MQ5AY81@#]QZ*\'_X)B?MF0?\%!OV"?AE
M^U^-(AT^Z\8^'S)J]C;$F*WU&WFDM+Q(\DGRQ<P3;<DG;MSS7O% &3X^\=>%
M/A?X%UKXE^/-:ATW0_#NDW.IZSJ-P<1VMI!$TLTK'^ZJ(S'V%?C#_P $ O\
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
MX9;T#_H:;S_ORE'_  RWH'_0TWG_ 'Y2O4J*^ _X@'X1?]"J'_@=7_Y,]/\
MUESS_G\_N7^1Y;_PRWH'_0TWG_?E*/\ AEO0/^AIO/\ ORE>I44?\0#\(O\
MH50_\#J__)A_K+GG_/Y_<O\ (\M_X9;T#_H:;S_ORE'_  RWH'_0TWG_ 'Y2
MO4J*/^(!^$7_ $*H?^!U?_DP_P!9<\_Y_/[E_D>6_P##+>@?]#3>?]^4H_X9
M;T#_ *&F\_[\I7J5%'_$ _"+_H50_P# ZO\ \F'^LN>?\_G]R_R/+?\ AEO0
M/^AIO/\ ORE=QX"\&6O@/P^OA^TO9+A%E9Q)(H!^8].*VJ*^AX9\+N N#LQ>
M/R; QHUG%QYE*;]UM-JTI-:M+H<N+SC,L?2]G7J.4;WM9;_)!7Q5_P &^M_9
M:A_P3'T":QNHY5'Q%\=9:-@1SXLU5A^:LI^A%?5/QE^"O@KX\>$3X'\>ZAXF
MM]/:0NY\*^-]5T&X?*/&5:XTRYMYF0J[?(7*YPV,JI'F'['_ /P3+_8Z_8)M
M?[)_9.\%>*/"FE_:)KC_ (1__A:/B*^TLS2J%DE-C>7\ML9& 'S^7NR <Y -
M??GF'Q]_P<0?\$7M<_;>\$6'[;/[',,^C?M#_"^*.]T6ZT:0P7/B*UMG\Y+8
M2)@K>0L/,MI,YW9B/#HT?/\ _!JQ^TM\5_VP/AG^T+^T3\=+6"+QCX@^+%B/
M$@M[0P"2[M]"L;620Q'_ %;N8-[(  K,P    _5RO/?A+^RS\#/@5XK^('C+
MX2^!XM"O?B?XA&N>,O[.F>)+S43;I ]RJJ0(I'6-6=DVEG+2'YV9B ?)?_!2
M&R\)_M__ +<WPD_X)+W\J:CX2L+:3XI_'C38KID\_1K"18-*TR0HP.VYU"6.
M1TRKB.U5AP0:]'_X<=_\$K_^C2M/_P#"CU7_ .2JG\%_\$7O^"?'P\^/U[^U
M1X-\ ^/K'XCZFNS5?&J?'7Q@VHZA'\G[JXF;5BUQ%^ZC'ER;DQ&@VX48^J*
M/P&_9R@\*_\ !!#_ (.9]8_9AL;A-#^"O[16D6I\/VLURWD:>;R60V!)<DXA
MU&&[LD+,<17!9C7ZO_\ !5/]MY/^"?'P,\(?M%ZUK/V'PW#\6/#^E^-9_LJS
M;=&NYVANGP59AY:L)?DPY\K /)!Y7]H;_@@A_P $K?VL_B?/\9_VE/V??$'C
M7Q1/&L1UC7_B[XJGDBB5V=88@=3VPQ*SN5BC"HI8X49->M>./^"?'[+/Q.^!
M.B_LS?$_P7J?BWP-H>NVVJP:%XW\4:AKXN98-WE1W$VISW$T\*ELB)W*_*!C
M&00#T^"?X<_&;X?)<02:+XJ\*^)=+#(R^5>V&J64R9!_BCFB=&]U8'N#7X>?
ML:?L;>!/V6/^#MO7OA]^P3!]C^'.C^ ;W4_B5H>D2%K+0!>:>?\ B6D@D*OV
M]K&9(2?DW;5 $6!^CZ_\$2/V/?"D-QI/[/WCSXS?"#1+UWDOO"_PF^-6N:-I
M,SL2686:7#10DY.?)6,=>.37L7['W["/[*G[!W@J_P# W[+OPFM?#T.L7IO?
M$&IR74UYJ.L71R3/>7EP[SW+Y9R-[D+O;:%!(H _)/\ X/5+B!?#7[,%HTJB
M5_&NMNB$\E533@2!Z LOYBOW))"@LQP!U)KY._:?_P""(/\ P36_;2\8V_CW
M]JOX,^*/'>IV7G#3I?$'Q@\52QV"ROYDB6T7]IB.W0M@[(E5?E48PH J#_@A
M3_P3,;P^OA"]^$7C2]T58S&="U/XX^,+JP9#U1K:;5FB9?\ 9*D4 ?G;_P '
M#G[6^M?\%9_BYX)_X(H_\$T_*^(&MGQ5%K'Q.\1Z)+YVEZ08%:*.">Z3<@BA
M,SS7#C(1XX8U+2EHQ^K/P?\  OP/_P""5'_!/+1O!>N^)EM/!/P6^'8.L:U.
M@1KA+2 R7-R4SCS)I!))L!Y>7:.HKL?V<?V2/V8?V0?"+^!/V7_@)X5\":7,
MRM=6_AG18K4W3J" \[H-\[@$C?(6;WK _;&_8'_9>_;[\%P?#;]JWPCKWB/P
MY"VY_#]CX^UK2;&Z;>KJ;F#3KR".Z*LBLAF5]A&5VY.0#X^_X)Y?\$K?V;/V
MP/V?4_;U_;P^!L'B/XH?'S59_'FJ27.M7L?]EZ;?8;2M,3R)HQY=OIXM4 8;
M@Q<$UY5_P7K_ .""_P"QK+_P3,^('Q8_95^!EMX:\;_#>R/BJUO+?5KV<W-A
M:*SW]NPGFD 4VOFRC R7@C&<$U^F/[,7[)_P5_8\^'L'PH^ ECXCL?#MI!#!
MIVDZ[X\UC6XK"")2L<-M_:=W<&VB53@1Q%$P!Q\HP_\ :<_95^"_[87PSNO@
MY\?--U_4/#.H120ZGI.B^-M6T5+^&1=CP7!TVZMVN(64D&*0LA!.5H ^;/\
M@WX_;^MO^"A/_!,KP+X_UWQ M[XT\(VJ^%O'JO+NF-_9HJ)<R=R;BW,$Y;&-
MTK@?=-?GE\/OAO<_\$#/^#CG5_B7\5HCI7P!_:9_M.QT+QI<#9IVDW=_<Q7R
MVL\A^6%H+R+R?F.!;W"RDX#[?T__ &1O^"+O_!.7]@[QU)\1OV1?@QX@\#ZG
M<;/MRZ7\5?$KVE^$W;%NK2;47M[I5W,56:-P"Q( S7O7QO\ @/\ !C]I3X;:
MA\'OC]\,-$\8>%]50+?Z)K^GI<V\A'W7"N#M=3RKKAE."I!&: .K1TD021L&
M5AE6!R"*_$?_ (+N>$-:_P""UO\ P4W^#W_!*#]F6_;4M'^%]Q<ZY\<O%FFX
MEM/#2W+PQF*20?*+F*"&0+'G+2W:1G!2393_ ."MO_!&[_@JQ^S-X+N?$G_!
M'S]K[XR:G\)X+79>? :R^)6J->:) !\T6F%KCS+FT*C'V8/YRYPOG!CL^V_^
M"#/[07[ /Q0_94A\"?LD_!K1OA/XST0*/BO\*)8I(=;TK5P LTMW]J)N[M&;
M/EW4Q=BI",5=610#[<\+^&M#\%^&=.\'>&-.2STW2;&&ST^TB^[#!$@2-!GL
M%4#\*\2_X*@?M)>+_P!C[]@OXC_M/>!),:GX(TF#5(D\F.3SHTNX/-BQ("OS
MQ%TSC(WY!! (][KC?V@/@-\-/VG?@_K7P(^,>B'4_#'B***'6M-\S:+J%)DE
M,3'^XQC"L.ZDCC.: '? WXX?"+]J'X-Z%\</@MXQL/$GA+Q5I:7>EZE9R+)'
M-$Z\HP_A=3E'C;#(RLK $$5^(_[:?[#7PI_9W_X.B/V9'_X)YZ!:>']=\37E
MOXE^)GA/PQ&([72;*.>5;ZZ,4?RVL=S8BX5HP%4LN0,S<_I?/_P1,_8@\-:I
M=ZQ^SB?B+\#Y=2DWZK;_  /^*&K>&K.].  7L[6<6P( X98E;WX&/0_V/O\
M@FY^R-^P[JNN^,?@=\/;J3Q=XJ(/BOQ]XJUNZUC7M9((.+B^O)))2N54F-2J
M$J#MR,T ?G1_P<ZZGIWAW]OO_@G1XKUZ]BL],TWXXW$VH7]RX2*WC75?#;L[
ML>% 5&8D]E)[5V/_  =I?![5/VIO^"7VL7/P:U"/6]2^"/Q%TWQ%XWTG39/.
MELK)K"YAD,B+G:\<=]#<,#RL.YR I!K[S_;B_P"">O[(O_!1OX8VGPC_ &OO
MA)!XITC3=1%_I3K?3VES8W&TJ7AGMW21-RDJR[MK#&X' QT?[./[(_[-_P"R
M1\#[3]F_]GKX2:5X<\%VD<J_V)"C3+<F48E>X>8N]S(XX9Y6=F  )( % '!_
M\$K?VJ_!'[:'_!/?X4?'[P3K,%U_:7@RQMM;AAD#-9:I;PK!>6S@<JR3I(!G
M&5VL!AA7Y]?\$J/@7<_'W_@X>_;0_;O\)EV\ :*LW@*SU>V/[F_UAA8)=+#(
M.)/)&GR%\'@W,)[BOK[P[_P0F_8-^'/BK7=;^!#_ !.^&.D>*KEI_%'@OX8_
M%S6M"T35'8;6\RUM+E!&"IV[8C&%7Y5"CBOIOX&? 7X-?LS?"[2_@K\ ?AOI
M7A/PMHL1CT[1=&MA%#%DEF<]W=F)9I&)=V)9B22: /Q)_P"#7W]L[X??\$\_
MB)\:/^"/O[:?C'3? GBK1?B1=:EX:N_$MVEG;:A="**SNK9992J!F6UMIX1G
M]\DKE"<#=^MT?[>7PB\>?M8>'/V2?V??%NB>-]=^R7>K_$2;0M22Z@\*Z1%
MZPO<2PED2YGO'M8H[=B':(SRXQ&-W!_M]?\ !$;_ ()Q?\%*/%=M\1OVG/@9
MYWBNUMTMQXL\/:I-IU_/ O"Q3/"P6X51@*95=D PI49%>E?L6?\ !/7]D'_@
MGK\*KCX._LD?!RS\)Z5?RB75[F"YFFOM2F"E1+<7<CM-(P!;;EL1[B$"@XH
M_)']N7]E7X,?MR?\'3U]^RI\>-*-[X;\7?L\R6=X()0L]K,NGSRPW$+<[9HI
M$CE0D$909#*2#Z!_P1T_;)^,_P#P2H_:WNO^""G_  4B\4;[6"<2?L\_$6^)
M2VU;3Y7;[/8!W)PDF&$"DDQ3++:[CB%1]R-_P1#_ ."<+_M$+^UO)\,/'#?$
M]'W)X^?XY>,#JR_N?(VBY.J^9M\DF+9G;Y?R8V\5I_M?_P#!&S_@G3^WOX_T
MOXH?M<? W5/&6MZ)IR6.D75U\1O$%LEE I!Q%%;7\<:,6 9G"[G;YF+'F@#3
M_;KU3]D#XJ>+/ /[ /[9WPST;Q)X>^.":O;Z/!KDH6)M2T^*"=(8R,/'.\4L
M[QS1NDB-"%7)D&/R"_;7_P""=?QS_P"#;?\ :*^&W[:?_!,_]H#Q+?\ PX\>
M_$[3_"_B#X1ZY>&=KR>Y$LB6;!<)>Q210SQI(R">!A&0[EBZ_KK\<O\ @DE^
MPW^TGX!\(_#?XX^!/%?B;3_ 5U<7?@ZZUCXH^(+C4-*NI1"#/'?R7S71=/(C
MV;I65,' &35OP%_P3$_9Q\+?$WPW\7_'WB'X@?$O7O!4S3>"+CXJ^/[_ %Z+
MP_,0 ;BU@N9#$MQ@ "Y=7G&T8D% 'T37XM?\'JGPU\17G[)/P8^/FD6CS6O@
MWXESV5]L!(B^VVADC=L=%W6.W/3+J.I%?M+7C/\ P4'_ &+OA]_P4)_8[\=?
MLB_$B;[-9^+M(,5EJ:PAWTV_C99K2[4<9,4Z1N5R-RAE) 8T >L^&O$&F>+?
M#FG^*M$G$MEJ=E%=VDH/#Q2('0_B"#7S'^S'_P %!_"_Q(_X*,_M&?\ !/SQ
MYXYL8_%7P[\0:+J'@K1I_*AENM!O/#NEW$HA  :X,-Z]T\C'<RK=1#A0H%#_
M ((\_&CQU>_LRZ=^QM^TGI_]B_&CX$Z;:^%?'.ASR9:]M;=/)T_6K9B ;BTO
M+:)'6<#!E69#AHR*WOC1_P $>_\ @GC^T+\4/$_QQ^+O[/MMJ7CCQ3K5MJMS
MXWM=3NK#6;&>WL+6Q@%I?6<D5Q;(D5I$P17V[VD8@[S0!Y1_P<2_L=_LA?M%
M_P#!,SXH_%']H[0M'L==^'O@J^U?P/XVFC2.^T_48HV>VM(YN&:.YG\NW: D
MJYF!"[PC+6_X-CO#'QB\*?\ !%OX1V'QEAO(9[A-3N_#UOJ 831Z1-J$\EIG
M=SL9&\R/MY4D>.,"NWF_X(??L:>,/$>E:U^T-XP^+OQCL=!O$N]%\,_&'XO:
MOK^D6DZ#"R&SN)O*F(!(_?"0$'!!&*^GOB'\)_"/Q,\%#X?ZY<Z[IVFJ4\O_
M (1/Q5J&A7$80854N--G@F1 .-JN%.!D<"@#\6?^#?&^L[G_ (.%_P!OCR+E
M'\WQ;XG>+:P.]1XJE!(]1R.?<5K?\'5?[&?QF^'?QH^#W_!:?]G'PQ+JM_\
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
M^R1XW^*Y_P""@'[;/[97P6L?B!/IDMEX!\$/\5M(GL_AIHDV"]LD@N-DNIW
M"&\NUX.%MXCY,>9/J/\ 9P_;5_9O_:\\0^+M)_9I^)%CXUTWP5=6MGK'BOP]
M<QW6D27TR/(UG!=1L4N)8HQ$\NS**+F(;BV]4^5O^(7'_@A1_P!&,_\ F3?$
M_P#\LZ^IOV1?V'OV8/V#/@M+^S[^R'\,U\%>%I=1N-0:QM=4NKR0W<ZJLDYF
MO)9I'?$<8&YB $4 8&* ,K]MQOV#OA1\+]2_:O\ VX/A]\/[G1_ ^GM<?\)%
MXO\ #-G?7%J 24AMC-&SF5W(6.*/YG=@%!)KX._X(O?L5_&G]J#]N3QY_P %
MY/VR_AO<^$]0\:P-IWP)\!:I#LN-!\/^2MM%=R1X'E.UFB0H %WB6YE*XFC-
M?<*_\$U_V9O$7Q(TKXN_'&#Q+\5/$.@70N?#L_Q.\37&K6>DSCI/:Z<Q6Q@F
M'&)DMQ*,##C%>_4 %?(W_!>+]GCQU^U1_P $B_CA\%OAIH<^IZ[=^%X=2TW3
M;5"\UW)I]];:CY,:CEY'%J551RS$ <FOKFB@#\Z?^#6O]IGX>_'?_@D%\/?A
M_H'B:TF\2?#4WN@>*]'68>?8L+VXEM6=/O!)+:2)E;&"PD4$E&Q]4_\ !0_]
MK7X9?L6_LB^-/C5\1_$=O:RPZ'<VOAG3"^;K6]7EA=+2PM8A\TT\LI50J@D#
M+'"JQ'E/Q8_X(6?\$^OB)\:]0_:2\">%/%WPI\?ZN\CZMXL^#7CS4/#5S>.Y
MW.[I:2K%O9OG9@@9V.YBQKH/@7_P1Z_8K^"GQ>T_]H?6='\8?$KXA:.2=%\;
M?&'QYJ/B>_TPDYWVWVZ5XX'R!B2-%<=FH Z;_@E?^S]XI_98_P""<7P5^ 'C
MNP:TU[PU\.M-@UZS8\VU\T*RW$)]=DLCIGOMKLO@1^V1^RQ^T_XG\6^"_P!G
MKX]^&?&.J^!-3&G^+K#0=32>33+@LZA9 O8M'(H<94M&X!RI ]+KYZ_8N_X)
M;?L5_P#!/WX@?$'XG?LN?"Z70M7^)FI+>>)IIM6GN5&V2618(%E9A!$'FE;8
MO=@"2%0* <Y^QG_P4'\+_&[]LS]HC]B7QMXYLAXV^%OCR,Z#HDOE0S7'AZXT
MVRFCEC4!3-Y=R]RDC?,4#P[C\ZUXI_P<Q?L=_LA?'3_@F/\ $?XY_'G0='TW
MQ=\/?#CW_@7QJ\:17T-\KCR=/67AI(KF1A"86RNZ4. '56'N?Q7_ ."-O_!.
MWXV?$+Q!\9/B'\ XYO'7B'Q =:G\?Z5K-WIFNVEWY$4"&WU"REBGA1$A3;&'
MV EB0=S9P+?_ ((B_L9>(?&>C^,OV@_$OQ5^,_\ PCEXEWX>T7XT?%?5?$6E
MZ?<*,"5;.YF,,K8R#YJR ]\T <Q_P;]_\)_\&O\ @AY\&]9_:BUC^Q3I'@_4
M-4GO?$$X@73]"^VW=S9R3/(0(XDL#"X)P%B"YQBOJK]G']J']GO]KWX:1_&+
M]F7XNZ)XU\,RWDMH-7T*[$L:7$1'F1..&1QN4[6 .UE;&&!.[\3?A?X#^,?P
MO\0?!CXD>'8M3\,^*=!NM&UW279D2ZL;F%H)H24(90T;LN5((SP0:\V_80_8
M!_9C_P"";OP.;]GK]E'P;<Z-X=GUJXU>]6^U*6[GN[V98T>:220DD^7##& ,
M +$O&<D@'M%?S_\ QO\ #^H_\&_?_!QP_P"V]\0=&O(/@#^T)<ZE#JGBBUM7
M>'3'U.1+F]ADV [6@U"*.ZV $M;'Y S*RK_0!7)_&_X$?!G]I3X:ZC\'?C]\
M,-$\7^%]60+?Z'K^GI<V\N.5;:X.UU/*NN&4@%2" : -KP;XS\(?$3PKI_CK
MP!XIT[7-$U:T2ZTO5](O4N;6\@<962*6,E70CD,I(-<%\5?VF-$\%?%OPO\
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
MX@\46MC>Z2VW+075M+()(9E/R[,'<<%"X92?9=:^ _PI\6?!JY_9^\>^%?\
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
M  2Y^"_BG0_'_P 4O!]MXT^&.E7OC/P_X"^*FJZ1IFLW<MJBSSR6]O,%AEE
MQ*]OY32')<LQ)K[Z^ G[/WP6_9=^%&D_ []GSX;:7X3\)Z'"8],T72(-D462
M69R22TDC,2S2.6=V)9F))- 'Y8?\$/OC+\/O^"T>E?%#_@H!_P %$/&&D>*M
M4\&>/I;7PG\)]?OD;PU\/]'CM89X+X:?*1#).[/,OVZX5W'V,['0A@.+_P"#
M?SXX?!&?_@K[^WW\0M+^)GA]?#?B'Q_92>&]5348DM=0BN-:U"&V-NV0)1*\
M\"1[,[S-&%SN7/W%#_P;U?\ !(B+]I*[_:E?]D/3)?$%]J3:C<Z7/JMX^C/=
ML_F-*=-,OV9@7^;RBAB!Y$8/-=UX/_X(^_\ !.WP+^V-KG[>WAW]G.QC^*&O
M3///K\NHW3I:7,D?ERW-K TGE6T[KUEC57!+%2I9MP!\'>"[JVB_X/+_ !=%
M).BM)\"HDC4MRS?V=9-@>^T$_05]9_\ !P#_ ,% ?C!_P3:_X)N>(OC]\ M/
MMSXOO]:LM T35+NU$\6D271?=>-&P*N42-@@?*>8\98,H*-O'_@AG_P34;]H
M4_M9GX3^-?\ A9QN///CX?''Q@-6W^5Y/_'U_:OF8\G]UMSM\OY,;>*^@/CY
M^S=\$?VHO@CK'[.?[0/P_M?%7@W7K%;75=&U661Q.B,K(WFAA*LJNJNLJL)%
M=0P8,,T ?F3^U1\)?V*/@9_P01\??M,Z[\4]'\:_$GXM? R8-\9/&NM)J&N^
M*]2O+'>;6TN)F:2.$.[JEE;[8XD0Y7*NU>P_\&]'CCP;JW_!#_X.?#K3/%.G
MSZ_)X U^Y318;M&NC#'K%]"\GE [MHD=4SC&Y@.M>F?LX_\ !!?_ ()6_LM>
M"_%G@CX8_LNV<T/C;0+W0_$%]K^KW>H7CZ;=1M'/:P3SRL]HCHQ#& QLV%+,
M2JD>H?L+?\$X/V-O^";OP^OOAQ^Q_P#!NU\,6FKW2W.M7SW4UW?:E*H(0SW,
M[O(ZH&8(F[8FYMJ@LV0#\X_^#.GXH_#GP7_P2A\6KXL\:Z;IS0?'RYM)([N[
M5'$]Y9:1!:1!2<EII2(XP!EWRJY((J+PMK>D?#S_ (/,/%B^,]2AT[_A,/@G
M!;>'#=R",7TW]G6)\N//WF/V.XP!R3&1VK[I^!7_  1-_P""8G[-G[3M[^V!
M\&_V5M)TGQU=WLUY!?F_NY[;3KB7=YDMI:2RM!:N=[X,:*4#LJ;%)%3_ /!0
M/_@CE^P3_P %,]?\/^-?VIOA7=7?B/PS#]GTGQ+H.LSZ??);;S)]F>2%AYD0
M=F=0P)1F<H5WMN /SN_X.KOCG\))_P!HK]D;X?6?CW3Y]8\)?&*+4?%%G!-O
M_LBWDFL#&;EQ\D#.L;LJ.0Q1"P&T9K](OVZ-1_8W^-/C/P%_P3W_ &R_AKHG
MB?0/C9::W_8<6LSA8SJ6EI:RK!"5P\5PT-Q<.DT<B.AMRJY,G')^-O\ @A)_
MP2X^('PN^'WP/\1_LR6C^#?AMK%YJNB>'8=7NXXKV^NDC6:YOY5E\Z^D;RH\
MM-(Q;:%;<HVUUWQ]_P""27_!/G]I+P1X'^&_Q#_9XL;+0_AHUU+X TWP=J5W
MH$>@7$[PN]Q;#398-DH>!&#<X;<>K$T ?D1^UW_P3T^/'_!MO^U/\+/VM?\
M@FY^T%XEU3X8_$KXIZ?X4U_X2Z[=F9[NXN=[I:,J )>1R113I',46>!UCP[E
M]U?T#5\\?#[_ ()D_LY^$?BCX=^,WCOQ!X^^)?B/P8[OX)OOBKX]OM>3P](Z
MA6GM(;B0Q)<$!1]H9&G&T8D%?0] !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !117@'_!07_@
MH]\ O^"<OP]T/Q5\7;;6M;U_QCKD>B> / GA2R6YU?Q+J<A55M[:)F5< NFZ
M1F55WH,EG1& /?Z*^/\ PQ_P5)\?^!/C]X ^ 7[=/[$WB/X+3?%B^;3?AUXD
MF\7:=KNF7NJ!-ZZ9=2V39L[MP0(U*NDC9"R'!K[ H **** "BL+XH_$KP9\&
M?AIXA^+WQ&UF/3O#_A;1+K5M<OY?NVUI;Q---(?]U$8_A7FG_!/?]MWX:?\
M!17]D/P?^UY\*;&:QTWQ5:2F?2+J=9)]-NX9GAGM9"N 622-@#@;E*L!AA0!
M[11110 4444 %%%?,O\ P50_X*+ZG_P3+_9GU?\ :23]EGQ=\1].T>!)-1FT
M+4+*TLM-\R>.",W<LTOG(K22HN8+><C.6"J": /IJBO'O^"?W[3VI_MI?L6_
M#;]JS6O"4&@W7CSPM!J\^C6MTT\=FTF?W:R,JEP,=2!]*]AH ***@N]3TVPF
MMK:^U""&2\G,-G'-*%:>0(TA1 3\S;$=L#G:C'H#0!/7!_%']ES]G#XV:[9^
M+/BQ\#/"NOZSIHQIFNZCHD+ZA8]>8+K;YT!Y/*.IY-=Y10!!IFG6FCZ;;Z38
M(RP6L"0PJ\K.0B@* 68EF. .223W-3U\H?'7_@K=\'?!'[15Q^QA^S1\*_%G
MQU^,5C 9M;\%_#E+;[/X>3(&_5=2NY8K6P&2%VL[2!F4%!N7/+?%+_@JY^T+
M^R;H#?$_]NG_ ()A>/\ P1\/8&7^U_'?@GQ;IGBVWT.,D#S[^WM&CN885S\T
MJ1RJOJ210!]L45R_P6^-?PF_:+^%VC?&KX&_$#3/%'A3Q#9BYT?7-(N1+!<Q
MDD'!'*LK JR, R,K*P# @=10 444DDD<4;2RN%502S,<  =S0 M%16%_8ZK8
MPZII=[%<VUS$LMO<6\@>.6-@"KJPX92"""."#4M !117P'_P4=_X. ?A%_P2
MO\>Z+X+_ &L?V./C#9VWB9;I_#'B#1DT.\L=4CMW19C&RZD'1D\V)BDBHP$J
M''- 'WY16-\.OB!X/^+'P_T/XI?#W7(=3T'Q)I%MJFB:E;G,=U:7$2RPRK[,
MCJP^M;- !17Y]^"_^#B;]F?XR?M^ZU_P3G_9R_9S^*'Q"\:Z)K=_IL^J:#'H
M\.E2&QW?:YUN+K4(OW,;(Z[RHWE0$#;EW??6B7M]J6C6FHZGHTVG7-Q:QR7&
MGW$D;R6KLH+1,T;,C,I)4E6921P2,&@"U1110!S'BKX,?#'QIX[T'XH^(?",
M$GB3PR9!HFO6[O!>6T4@'FV_FQ,K/;R84O Y:)RB%D)12.GHHH **** "BBB
M@ HHKPG_ (*3_M5_%[]BO]COQ3^T7\#/V:]7^+/B30S:K9^#=%,OFS++<1Q/
M.PACED,<2.9&"(QPO.U=SJ >[45Q/[-?Q0\7_&W]GOP3\8?'_P *]1\#:YXH
M\+6.J:OX.U=B;K1;B>!))+24E4.Z-F*G<J-Q\RJ<J.VH **** "BBB@ HHHH
M **** "BBB@ HHKYS_X*<?M_:E_P3A_9HUK]I*+]F'Q?\2+#0[)KG4E\.7ME
M;6VG)YD<:R7<L\HE2,M*HS!#.P 9F4*I8 'T917B'_!-W]K?5/V[_P!A_P"'
M?[76M>";?PY=>.=&>_ET.UO6N([/%Q+$$$K*I?B,'.T<GI7M] !17@'[='_!
M3#]E+_@GOI>BQ?'/Q1J-]XH\57(MO!?P\\(Z8VI>(/$=P6"".TLXR"V6(7>Y
M2/<0N_<0#Q&A?MS?\%#-<TU/&8_X(X>-;;09(_.2TN_BOX<BUUH>"#]@><1+
M)MY\I[E6!&T@&@#ZVHKY/_91_P""P?[-G[8_[7>H?L6_"_PCXTTGQKX;\#7G
MB'QSHOC;PU/I%YX=EAO;*U6PFAF7$LKB\$OF0N\014VN_F?+]84 %%%% !11
M10 45!!J>FW5Y/IUMJ$$EQ:[?M4$<H+P[AE=R@Y7(Y&>HJ>@ HHHH ***^!/
MCK_P6U\3?"'_ (*F_"G_ ()G7'[%GB?2I/B/J0"^-O%FM6D,,UCFX07-E;VC
MW!E4R6[#]\\$B@9,6&4T ??=%?)?_!77_@J'J_\ P2N_9VO/C_'^R9XM^(FG
MVA@CN=3TS4[*RTO3I9Y?)A2[FDD:X3=(5 ,5M*OSJ&9"PS[;^QU\<]0_:?\
MV1_A;^TIJWA^'2;KXA?#O1?$MSI5O.98[.2^L8;IH5=@"ZH92H8@$@9Q0!Z/
M17RE_P $P_V^_P!HS]N6]^*]K\?_ -A;Q3\%U\ ^-#I&@2>(WF(UV#][ET\V
M"++Q^6A=H]\9\]-K'!KZMH **** "BBB@ HJ.\FFM[.6XMK1[B2.-FC@C90T
MC 9"@L0 3TR2!SR:_/S]I;_@X-^'7[)W[7WAO]ACXN?L&_&Z/XB^,I+!?"&E
MZ:OA^YAUA;VX:VMGAF75=@5ITDC)<IM*-NV@9H _0>BL;P!XC\1^*_"\&N>*
MOA]J'A>]E+>;HVJ7=K//#@\;GM998CGK\KFMF@#Y3_:;_P""+G[!/[8WQ<T[
MXY_M&^$O&_B3Q/HMXUSX>U"7XL>((%T60S"?-E'#>HEF!(%8")5QL3'W5Q]*
M^!/!FG?#WPG9^#M)U75[ZWL498KK7M9N-0NY 6+?O+BY=Y93EL LQ(  Z 5K
MT4 %%%06VIZ;>W5S8V>H02S6<BI=PQ2AF@9E#A7 .5)5E8 ]0P/0T 3T444
M%%%% !1110 4444 <QK'P9^&?B+XGZ9\9/$7A2+4/$6AV36VAWU_-),FF*^_
MS)+:%V,5O,ZNR//&JRO'M1G**JCIZ** "BBB@ HHHH **** "BBB@ HHHH *
M*** "ODGXE_\$1OV OC#^T+IO[5_Q)\-_$#5?B-HKPMHGC";XQ^(UO=,$3L\
M:6SK?#R$5G=@D>U<N_'S'/UM10!2\.:%;>&/#]EX<LKR]N(;"UCMXI]2OI+J
MXD5%"AI)I69Y7.,EW)9CDDDFO(?VS?\ @G[^S;^W]X,/PV_:AT[Q1K/AF18A
M=^&]-\=ZKI=A>&.7S8VN+>RN(DG*R!6!D#8*(1RHQ[710!Y/^R+^Q9\"_P!A
MSX=1?"/]GB'Q-8^&+6%8M-T/6_&VIZO;:=&K.^RV2^N)?LZEI&)6/:#QD<"O
M6*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "OQ
M,_X.N/$7CW]E[]K;]C/_ (*&0://JGA7X;>/9CJ-HHRB745W8WRQ<\![B"VN
M%!Z_Z,3V%?J%_P %'OVY?A__ ,$XOV-/&O[7GQ$TU]1M_#%@@TS1HIA&^J:A
M-(L-K:AL':'E=-SX;8@=\';BOSY^$7_!+GQ;_P %N/\ @FSJG[6G_!0?XI7.
MN_%CXS>$YM3^%5M%=30^'_AG;._FZ='862-MW2>7";F=P\\D3F+?PSR 'K'Q
M ;QA_P %F_VA?@I\=?AW\/O$.A?LS_ SQC!\2=.\9Z[HTUKJ7Q&UNTC+Z<ND
MV$BBX%A'N+FXF1/M'F;(D(&\^P?LY?\ !<3]A/\ :R^-U_\ LZ_ .3XD:]XN
MT:^-IXBTN+X4:U'_ &'(LWD.;YWM@MFJ2 HQE*X*D=1BOS*_X(%_\%GKG_@G
M[\,?B-_P2Z_X**:;K.G>,/@[<7@^'.C>0T^H:M-YXC;PW;(,F:X:YD5K7&5D
M2X8!ECB0G]4/^"4G[$&H?LB?!?Q%\0OBMH=C#\7?C3XPOO'GQ=N+(JZ0ZK?S
MR7 TZ.0?>@M%E,*X)4OYLBX\TB@#ZDHHHZ=: /AW_@L5+??M/ZS\*/\ @DSX
M1U2YAE^.OB0WOQ*N=/F*3:?X&TEH[K4FWKS"US+]ELXV/#&:0<X(KX>_X-G_
M (A^,/\ @GW^W[^T)_P0W^-VLR%]'\07'B#X?S79V?;#$L:RL@/_ #\V#65V
MJC "PRGJ:]V_92^.'[:'QS_;6^,?_!3?X$?L*0?%3P=XJ=? 'P?\2W?Q3L=$
M6#PUHUW/%<R6\4\,CO'>:BLUP7. 1'& /E)/Q?\ \%U]9_;@_9:_;O\ @C_P
M6Y\2_L0K\+9O"6NV&A>(WT[XBV>MIKC1F>1(I?LT4;0>=9&[M6=@0R"-000,
M@']!WBGQ)IG@[PU?^+-:2\:STVSDN;I=/TZ>\G,:*6;RX($>69\ X2-6=CP
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
M6\^#,7VCXH>/M3M/!'PCT]6P]QXCU1_L]JZ^T ,ETV>-ELU?EE_P5ET_4?\
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
M*V=X;"U9I-@>63YF5EC\QE8#U+]CB&.X_P""$7PKMYD#))^R3H:NI'!!\,0
MBOEC_@SC\/:!IW_!)>\U_3]$M(+[4OBEJXU"]AME66Z\N&U6/S' R^T$A<DX
M!..M 'U1_P $L?\ @L%\ O\ @JAH_C'3/ 7@7Q/X'\;_  \U)+'QMX \:6B0
MW^G.[2(KC:3O3?%+&P(1XWC971<H6[3]I[_@HI\)_P!G?X[^#?V1_#GA+7/B
M!\8/'UO+=^'?AYX4^SBXBL(@YDU&]GN98X;*T7RY!YCMN<HRQI(00/SU_P""
M5]I;Z)_P=(?MMZ/I42P6T_A6*ZEAC&%:9YM+D9R/4M+(<^KGUJO\=I]<_P""
M?_\ P=/6'[9O[44[:3\(/C5X B\+>%?'^IG9I.BZ@NGVT7V*>X;Y+9VN+%F^
M8@;;T/G:)"H!]2_&+_@O1\$_V1OCQ!^S'^W)^S;\3?AYXSU6SCO/"D.CZ.GB
M6R\26[NR V4VG,\CNKHRM&\*,I X.X9^P/@-\:_!_P"T7\(]$^-7@'3];M=(
MU^W>:RM_$>@W.F7J*LCQD2VURB2Q'<AQN49&&&5()_*/_@M9H%M_P41_X*K_
M +&/P3_8J\0V?BKQ7\,O%]QXJ^(7B'PO=I=0>$='^VZ5-'/=W$)*0NPLIVCC
M9@S,$ '[Y<_L50 4RXN+>SMY+N[G2**)"\LLC!510,DDG@ #O3ZS?&>F^&-8
M\'ZKI'C80?V-=:;/#J_VJ;RXOLK1LLN]\C:NPMELC R<B@#XY\$_\%D+G]I/
MPIXQ^*W[!'[$7Q!^-'@+P1J]SIM_XTTG5]*TR#6+FW17G72H+NX6XO@B,I#>
M7&)"0J;S7IG["7_!4;]EO_@H9^R?=_M?? >Y\0G0M(N;BT\1:)=Z!--J^EWD
M,:2R6S6EF)WGD,<D;H(/-WB10N6RH^9_^"9_C/P;I'P3U#]F?_@A)\#;+_A4
M?A[Q1?I>_''XLZO=RZ->ZF[@W']F6D9%WK(3Y$WF2S@PF%F<@D^+_P#!G9!>
M67P#_:*TV]N8Y9(/CE,LCP0^5&SBUC#,J;FV XX7)P,#)QF@#Z,^$_\ P<<?
ML0?%[XQ?$WX2Z-X$^)5A/\-(8[>2WU7P=-%J_B'5WN'@&DZ=I S>RW6Z-_W<
MD4;KLD+JB1LXN_L>_P#!?#X,_M+_ +:K?L"_%O\ 9:^*_P $/B)J-A)?>$M(
M^*NA)8R:S D;RD! Y:*1HHY74$,C")P)"P"GY=_X(Z^&/#EQ_P ')G[=6O7.
M@V<M]I\A%A>R6RM+;":\C\T1N1E-^U=V"-V!G.*M?\%F+2WT[_@XS_8)\06,
M0BO;FX>UGN4&'>%;YL(3W \Z7C_;/K0!^FG[9/[:7P"_80^#<GQL_:#\2W%I
MI\E_#INC:5I=DUWJ6N:E,2(+"RMD^>XN)"#M0< !F8JJLP_/[_@MY_P4)^+E
MI_P2U^*?AS]H;_@GE\3?AUX>^(/@Z72_#OBJ^U32-3BL;Z8J;:#5(+&[EET]
MI2 JL1(@D949E8UP_P#P4/\ BQ=?%S_@ZO\ V2/V7OB#<Y\%^!_#D_B#3-.N
M#^Z?6YK35+B.YP>"PDL;!4/)5HC@_,:^TO\ @OII>G:O_P $;OVA;35+*.>)
M/A]/.J2KD"2*6*2-_JKHK ]BH- &?_P;Q_\ *%S]G_\ [$Z7_P!+KFOKWQAX
MKT/P)X2U3QQXGO1;:9HVG3WVHW!&1%!#&TDC_@JD_A7R#_P;Q_\ *%S]G_\
M[$^7_P!+KFOI;]I[X=:O\7_V:OB'\)= D"W_ (H\#:MI%DQ;:!-<V<L*'/;Y
MG'- 'XP_\&V&H^(/^"J'_!3;]H+_ (*]?M'VYU#5_#S6NC_#JPO6\V+0(;TW
M.(K<'B,V]G D (^]]KF8Y9V8_NO7X3?\&27C?3M)\#_M#? '7(VL?$FD^)=(
MU*XTZZ79/Y;17-M(-AY_=R0!6'\)D4'K7[LT >'Z]^Q=X3D_X*$^&OV_O"EO
M8V&OVWPTU;P5XM94*RZM93W=C=V;$@89H);6498@E9\9.Q0,W]HS_@H?\.O@
MM\<M+_9+^&?PY\2?%3XPZSH[:O!\._!'V43:?IJL$-_J%U=S0VUA;;R%#22;
MW9@$1R17T"TD:,JNX!<X0$_>."<#UX!/X5^-'_!MG\7-4_:&_P""I'[?OQF^
M*LQF\8W?C?3+6R%T<RVFFQ7VL0"U3/(CB2WLHL>D4= 'V;\/O^"R_P ---_:
MXTC]A7]L[X ^,?@-\2?%$:OX)A\8W-C>Z-XEWML2*SU*RFDB:9F!41N$.\K'
MDR,J&_\ \%2O^"SO[-'_  2A\'0>(/C9\/?B)KUY?RK;Z7;^&O!MR;&:X='=
M(7U.=8[)'*QNQB69Y@J%O*(%?)'_  >3?"G0];_X)O\ @_X]VJ_9?$_P_P#B
MI8MHNL0,4N((+N"=)HT<$%=TD5K)D<YMU/:N/_X.5_'/BSXM?\&Z'P>^*GQ&
MA(\0^(=4\$ZOK(>/:5O;C1KB2?C^$[Y'&* /J#]K+_@X,^#W[.'A!_B%\//V
M0/C+\5_#&C6\4OCGQQX#\*M+X>\-R$+YMK+J4FV&6XA+;)%C)2-_D>1'!4?1
M?@G]O7P9\>?V&M+_ &X_V0_AAXE^*FG>(]&^U^&?"N@_9;;4;NX#M"]K*;F9
M(H&BF1XY278(8W*B3"ALCXG>"O".G_\ !(WQ)X!TSPS8VFB)^SM?6<>DVEJD
M5O' ="=?*6-0%5<'& ,5\L_\&CEU<7'_  1B\+Q32LRP>-M?2($_=7[7NP/Q
M9C^- 'D'_!OO_P %0OVG/VDO%7QZ^+GQ>_9#^)?C+6?'?QN@74=5\"KH[Z/X
M2@CL;:TBLI3>ZE;S[+>&-23%%*652_S2,0?J3QK_ ,'"W[$O@G]N+3OV&]9\
M)?$33M5DTG4-3UKQ+XF\%7>CV=C;6NG7%ZIBM[U([R[:;[/Y<0B@*RM(GEM)
MN /S5_P9Z_\ )O\ ^T5_V7FZ_P#22*LW]L+PAX8\6_\ !Y!^S;I_B;0;6_@B
M^#$M_'#=0AU6ZMK7Q+-;S8/&^.6*.13_  M&I'(% 'V5_P $X/\ @M3\&?\
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
MI4EKIATGQE_:5[<I)=33@74,=N(+9D254_=7-QO*DGR_NU]H444 ?D]^V?\
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
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
/!1110 4444 %%%% '__9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>15
<FILENAME>cgnx-20211231xexhibit10l001.jpg
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 cgnx-20211231xexhibit10l001.jpg
M_]C_X  02D9)1@ ! @   0 !  #_VP!#  @&!@<&!0@'!P<)"0@*#!0-# L+
M#!D2$P\4'1H?'AT:'!P@)"XG("(L(QP<*#<I+# Q-#0T'R<Y/3@R/"XS-#+_
MVP!# 0D)"0P+#!@-#1@R(1PA,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R
M,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C+_P  1" 55!!\# 2(  A$! Q$!_\0
M'P   04! 0$! 0$           $" P0%!@<("0H+_\0 M1   @$# P($ P4%
M! 0   %] 0(#  01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D*
M%A<8&1HE)B<H*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U
M=G=X>7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&
MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$  P$! 0$!
M 0$! 0        $" P0%!@<("0H+_\0 M1$  @$"! 0#! <%! 0  0)W  $"
M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF
M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$
MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4
MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,!  (1 Q$ /P#W^BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "@]..M%%
M '&:3XCU[5_$6OZ3%%IL?]D31Q&5P_[W>FX'&>/S-=)I4^H2V\HU.&"*=)60
M&!B4=>"&&>>_/N#7!^&-/:^^(OC[;?WEKMNK8?Z.ZKG]SWR#6GK>@:)?^ [G
M0-5N&NS91K#]IV[YEG(!0J>\ARO Z[@.AH [2<R^0_V?RS-M.SS"=N??':L'
MP/XAG\3>#M,U>]6&*YO$9S'%D*,.1P"2>@%8GPXE$SZD-8MXX_%MLR0:C\B@
M[ H$13'\#*,_7=[5PVDZ996WPL\#:U%;HNIIJMJJW7_+0(UPRE W4*03\O3G
MI0![),VL+J=SY9L#8_9@8%;?YOG9.=W;9C'3G.:H>"/$$_B7P?IFK7BPQ75Y
M&SM'%D*,,1P"2>PK%LH8X?C1K!C4*9-$@=\=V\UQG\@*X&#P]8K\#-)\064!
MC\16_EM97:,?-\TS[50<]#DC;TYSB@#VL-J0UM][68TK[,"H^;S_ #=W)/\
M#LVX]\TNDZM9ZWIZWUA*);9I)(UD'1MCLA(]1E3@]Q7'PVENWQIU"-X8V6X\
M/1F9&&5<F=P<@]> !^%'P@M;.#X?V4L,$$=Q+)<>8R( SA;B0#)')QT&>E &
MUXV\17?A;PZ^J6ME%<A)8XW$DI3:'=4!  .[ENF1]:L^)O$">'M.AF$7GW5U
M<QV=I 6VB2:0X4$]AU)/H#6)\6?^2<W_ /UWM?\ THCJ+XD0.+CPE?D'[-9Z
M[;M.>R*V4#'V#,!^- &Q::[=#Q'/X<O_ +.NH?9!>6T\2,(Y4W;6!4G(*MCC
M/((/'(JOX'\2:AXHL+R\O8+:W6WO);01P[F+&,X+9/KSQC\:S[R&2[^-NFO$
M"4L=&E>=AT'F2;44^YVL?P-1_"0@^'-6Q_T&KS_T.@#OJ*@M;N&]C:2W<21J
M[1[AT+*<-CZ$$?4&IZ "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ H/(Q110!B#P?X>6XFN%TFW$\YW2R '=
M(?5CU/XU-%X:T6""&&+3;>..&?[3&JK@++_?_P![WK5HH S'\/Z3)J<NI-8Q
M?;I8_*DN!D.R?W2?3VJ'_A$M _L^'3_[*M_L4$GFQ6^WY(WSG<%Z YYK9HH
MSXM$TV'56U2.SC%^R>6UQSO9/[I/<>U0VGAC1+"Y$]IIEO"ZN9$"+A4<]65?
MNJ3D\@ \FM:B@"@NBZ<FKMJRVD8U!D\LW'\93^[GT]NE&G:+IFD-<-IUA;VI
MN9#),88PN]O4X^I_,U?HH I:GH^GZU;?9M2M([J#(;RI1E21R"1T/2I9;*UG
ML6LIX$EMG38T4HWJR^ASUJQ10!2M=(L+*&:.VMUC$QS*P)W/Q@9;.3@<=>!6
M9'X&\+PJZQ:'9(KDLP6/ 8GJ3ZUT%% $%E96NFV45G96\=O;0KMCBC7:JCT
MJ>BB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
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
M!$^IMI4HG%NIVF0Q'(4<]^* /-OA#X3N-:T/2?%=YXGUUYUG=C:M=EH7V.5
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
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%<MX_\ &#>!_#8U9;#[<QN$@$/F^7][/.<'T]* .IHK
MSNS^)&K6WB;3-%\4>$9M%;4V,=K.+Q+A&<8^4[1QU Z]QQ7=#4K!K>:X%[;&
M"!BDL@E7;&PZACG /(ZT 6J*I3ZSI=JH:XU*SA4QB8&2=5!0\!N3]WWZ5'/K
M^C6TL44^KV$4DRAHDDN44N#T*@GD'VH T:*A:[MDNDM6N(EN)%+)$7 =@.I
MZD4U+^SD$Y2[@86Y*S%9 ?+(ZAO3\: +%%4;+6=+U(2&PU*SNA%_K#!.K[/K
M@\4BZ[I#S00IJMBTMP,PH+A"TG./E&>>0>E %^BN;M_&VDW/C>Y\*QR#[9;P
M"5W9U"EB1\B\Y+8))';%.\6>,M,\'PV#7Y+/?726T2*RC!8\NV3PH'4_3UH
MZ*BJ5UK&EV-O%<7FI6=O#-@QR33JBOGD8).#5N.1)8UDC=71AE64Y!'J#0 Z
MBN5A\>Z3<^)M8T&W8-=Z9 )'+2*%E;:6*)SDD <\<?A2>#O'5AXI\/:;J$SV
MMA=WX<QV+W2M(=KLG&<%L[<]* .KHJG>:MING2Q1WVH6EK)+Q&L\RH7^@)YJ
MY0 45YO<?$O6-0U'48O"/A*;6[+39#%<79NEA5G7[RQ@@EL>WY<C/5>&O%=E
MXD\+PZZ$DLH&!\U+KY#$0<')/&/?TH WJ*JV.I6.IPF:PO;>[B!P7MY5D4'T
MR#4(U[1S)*@U:Q+Q.$D47"91CT!YX/M0!H451N=:TJR,OVK4[.#R2HE\V=5V
M%N1NR>,]LU--J%E;V7VV:[MX[3:&\]Y $P>AW$XQ0!8HJE_;&F"Q2^_M&T^Q
MN<+<>>OEL?0-G!J8WUH+M+0W4 N77>L/F#>R^H7J1P>: )Z*YKQGXRMO!VGV
M\KVLU[?7DPM[.RA^_/(>V>PZ<^XK'T;Q[K3>)[30O$_A2?1Y[Y&>UFCN%N(V
MV\D,5'RG_$=,T =[15*XUC3+2\CL[G4;.&ZDQLADG57;Z*3DTZ[U33[ D7E]
M;6Y"%\33*GRCJ>3T]Z +=%9TFOZ-#$TLNK6"1J%+.UR@ ##*DG/<<CUJV]Y;
M16ANY+B%+8+O\YG 3;Z[NF* )J*J6VJ:=>V;WEK?VL]JF2TT4RLBXY.6!P,4
MR/6M*F:18M3LG,48ED"SJ=B'HQYX'OTH O45E_\ "2:*VG75_#JEG<6UJA>9
MX)T<( .^#UKG8?B&FJ>$]/U[1;".Z%W=BW>WFO8X7A4LPW,22-V%!V]3F@#M
MJ*IWVKZ;IC1K?ZC:6C2<()YEC+?3)YJ6:]M+<Q">YAB,IQ'OD"[S[9ZT 3T5
M5L=2L-3C>2PO;:[1&VLT$JR!3Z$@]:YSQ7XQO-#U33]'TC09]8U2]5I$B680
MQHB]2TC @=\#V^F0#K:*\[3XLV(\#W>OW&F7$5Y:WAT^33=X+FYX^0-T(YSG
M'8\5:T;XD+,==MO$.DR:+J&BVXNKFW,RSAH2N[<K+@$]!CU(_  [JBO//#7Q
M/FUC6],L-4\.S:5%K$#3Z7.]PLHN%49Y  VG'/?J/45G:E\5?$ND26D=]\.[
MJ%[R806Z'44+2.>@ "YH ]4HJGJNI0:/H]YJ=WN$%I \\NT9.U02<>_%><VW
MQ4U[[)8:S>^"9XO#]](JQW<%XLTBJW1FC49QQ[4 >I45S<7C;29O'$WA1)!]
MLAM_.>1G4*6R (QSDMR21VQ6NVL:8NH#3VU&S%Z>EL9U\P_\!SF@"[152^U7
M3M+1'U"_M;17.%:XF6,,?09(S6%K_C%-%\0>&M,CM5NDUR62-9UFP(PH4[@,
M'=G=ZB@#J**@M[ZTNY)8[:Z@F>%MLJQR!BA]& Z'@]:X_P 4>/I]+\10^&]
MT276]<DB\]X%F$20Q_WG<\#Z>XYY&0#MZ*XGPOX^FU77[CPYKVC2Z)KD,7GK
M \PE2:/^\CC@_P#Z^>#CIDUW2))8(DU6Q:2XSY*+<(3)SCY1GGD$<4 :%%<V
M_C;24\<IX3,@^VFV^T,Y=0@.X*(^N2YSG'I4_AW7Y]6TR[O-0LX=/%O<R18%
MXDRE%Q\Y9>%SGH>1B@#=HJI9:KIVI1/+87]K=1H<,\$RN%/N0>*B77=(>6")
M=5L6DN/]2@N$)EYQ\HSSR"./2@#0HHZ50L];TG4+A[>RU2RN9TY>*&X1V7Z@
M'(H OT5GR:]H\102:M8H7D,2!KE!N<=5'/)Y'%37NIV&FHCW]];6JNVU&GE5
M Q]!D\F@"U17,^$?%W_"57&NQ"S%N-*U&2Q#"7?YNP_?Z#&?3GZU'!XS23XA
MZCX6DM%BCLK 7K7C3<$$KD%<< ;NN>U '5451CUK2I;J*UCU.R>XE7?'$LZE
MW7U SDCWI;S6-,TZ:.&^U&TM99?]6D\ZH7^@)YH NT55OM3L-,B66_OK:TC8
M[5>>58P3Z DTY[^SBCADDNX$2=@L+-( )">@7U)]J +%%9C>(=(_L^\OH]2M
M)K>S4M.\,ROLQV.#P?:N<A^(::GX3T[7M%L([H7=V+=[>:]CA>%2S#<Q)(W8
M4';U.: .VHJO%?6DZS-#=02"!BLI20'RR.H;'0CWJ&;6]*M[*.]FU.RCM)#A
M)WN%5&/H&)P>E %ZBFQR1S1++$ZO&XW*ZG(8>H->=ZC\1=>'C/5_#NA>#CJS
MZ8(VEE&HI#D.@8':R^^.">E 'HU%>9_\+@@?P>FMIHTJW*:HNF75E+-M,,AZ
MG=M.0/H._I7?7VM:5IDJ1W^IV=I))RBW$ZQEOH">: +U%5IM1LK9D6>\MXF=
M2Z!Y54LH&21D\@#DFELK^SU*W%Q8W<%U"3CS() ZY],CB@"Q15._U;3=*5&U
M'4+2S5SA#<3+&&/MN(S2SZII]K8K>W%]:Q6C $3R3*L9ST^8G% %NBH+2]M=
M0MUN+*YAN8&Z20R!U/XCBHK_ %;3=*5&U'4+2S5SA#<3+&&/MN(S0!<HJJVI
M6*1PR/>VZI/S"QE4"3C/RG//'I5?_A(M$^R?:_[9T_[-O\OSOM2;-_\ =W9Q
MGVH TJ*K7>HV-A:BZO+RWMK<XQ+-*J)STY)Q0VHV*VL=TU[;BWE($<QE78Y/
M3!S@YH LT54M=4T^^FFAL[ZUN)83B5(9E=HSZ, >/QKF_&OC^P\)Z!?:A;M:
MZC=6;HLEDETJNNY@N6P"1C/<4 =?15*ZUC3K!83?W]K:&;_5B>94W'T&2,U+
M>:A9:?;?:;V[@MH,@>;-($7GIR3B@"Q17+Z!XRCU[Q;K^B16RK'I0@*W23;Q
M.)%W9 QQCZG-2:EXVTG2_%^G>&IY +R]1GWEU"1  D!B3G+$8 ]Z .DHKC]"
M^(%AJE]KEO?FVTP:9J+V"//=*//*]QD#!]N:Z:ZU/3[$@7=];6Y*%QYLJI\H
MZGD]!ZT 6J*H7&N:3:6\$]SJEE##.,PR27"*L@_V23@_A5B6^M(%A:6Z@C6=
M@L1>0 2$] OJ3[4 3T5"+NV:[:T6XB-RJ[VA#C>%]2O7'O55=>T=GD1=6L2\
M3B.11<)E&/13SP?:@#0HKD;3Q[9OXO\ $&B7ZV]A#I @_P!+GN0JRF1=V,$
M+CZG-=9'(DL:R1NKHX#*RG((/<&@!U%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !7E_Q[
M!;X=( =I.H0 $=OO5ZA3)(HYEVR1JZYSAAD4 <'IWPR9/$=CK>O>)=2UR?3R
M6M([@*L<;'^+ [\#TZ#TKR\Z[I^E_#OXB>'KN?R]7FUBX>.T*G>RDI\P&.@"
ML2?0?2OHW>H<)N&XC.W/-1M:6S2O*UO$9'7:SE!EAZ$]Q0!XDNBZ?KWQ(\"V
M6IVR7-K_ ,(M&[0R#*L0K8R._//X5@>-+?2](\3^)I+:[T68*$,VE:Y9,LA"
MKA5MI!\Q& ,;2O;ZU]'B&(.KB- RC:K;1D#T'M3);2VGE22:WBDD3[C.@)7Z
M$]* /&;O6[;3/'_P_P!=U>#^Q[&317C(F+;86V'"%CSW7KSR,UC6NMV2>#?B
M7J;Z:^I65SK6X0,SQ!D=\JS%<,%Y!QQZ=Z]_EBMKK]W+'%-L(;:X#;3V..U.
M\B':Z^4F)/OC:/F^OK0!\^^%I+1?BFQL;G1GBET"96_L:V,-ON'.SDG>P !)
M^GI64-$TVV^ &@Z[%9PIJK:F&-X%_>\3.H&[KC"CCIQFOI6.TMH@@CMXD" A
M0J ;0>H'I2_9H/*$7DQ^6#D)M&!^% 'D5G!H>G_M':D+R"VAGN+..2RWQ\M.
MV-S*<?>(W<_6K7QSM; Z;X:O[ZWB:*'684GE=,[86#%P?]D[1D>PKU*2&V:X
MCEDCA,ZY$;LHW#Z'K3YH8KB(Q31)+&W5'4,#^!H \/OYO"</Q2FN?%<=LWAV
M71X/[":>(M;"+:N0@Q@'KCCC\175?!..YC\&WA*3)ICZC,^EI-G<+8XVXSVS
MN_6O0Y;2VGB6*6WBDC7&U'0$#'3 J8    8 H \2L8-#T[XW>,X)X+:&\FM5
MDT\&/#%V@+2LAQP3EB3WYKDET33;7X!^']<@LH4U5M45C>!1YO$SJ!NZXPHX
MZ<9KZ5:V@><3M!&TRC:)"@+ >F:/L\'E"+R8_+!R$VC _"@#YX\8"./XB^,1
MXAET:%9;:/[&^K6LDI,.P_\ 'N58 ,#^.?QKVCP!!/;> M%AN+E[ETME FDC
M:-F3G9E6Y'RX'-;=VEB?+:]6W.&_=F8+PWMGO5DD 9/2@#Q'X?\ B_2/AKI6
ML>&_%4TECJ%G>RS(&A9OM,; ;60@<YQ^H]\+XXUV[\3^"?"NMZQI%S8:#)JB
M2:G;;BY, /RNV #M/)Z=U]17LK06=\L<SQ07 ',;E0^/<&I<QRADRKC[K+U_
M T >%VB6M]XZ\0R?#9 FG'P]+'.UFA2%KLAO+"C@;_N]/]KWKC[NX\(O\/?#
M%KIUFJ>)+>_B6_86[+(AW-N$CXY!., GMQT-?3S6%O\ 89;.)/L\4B,I^S_N
MRN1@D$=#[UY^GPLOKB6R@UCQA?ZII5G=+=I:S0()'=22OF3?><<D<]NF* ,.
M'0-*USXP?$'^U+&"[$-E;^6LR!@A,(RP!Z'C@]17#*UTWPV^'$UR]N='BO+L
M7+7T;26ROYI$7FJI!*XW ?CVKZ:V0J[OM0.P^=L#)'O4;K9I";:00+&1S$P
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
M""JL@(!'3% 'E?P,%J+3Q7]AC:.S_MF3[.CJ05CP-H(/(XQUK/UK_DK/CO\
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
M=;XU\$GQ3-I>H6=\MCJFERL]M,\ F0A@ RNA(R#@?2LJX^'%_J'@C6M$U'Q
M)KS59$=KA;14B@"NK!4C!''!')[T <+\2;[QMK/A#2)-8LM&M].U#4K?RH(9
M93(=RDHDIZ$==V.X&*ZN'Q!XDM=5B\$>$]'T.&\TNQ2:_:=Y!;1,X!\N,#YN
M=V<GU]JZ3Q3X*;Q)H.C:8+\6YTV[@N3(8MWF>6I&W&1C.>O-5-=\"ZG+XLE\
M3>&=?_LG4;F 6]VLML)XYE&-K8)&&&!^7UR <[>?%W48_!5MJEOH\']K)K(T
MB\LI')4/M8G8P/? QG..>N,U<O/&/CK3M?T+P[<:;H3ZMJJ3M\CRB&,)RI)R
M2< $D8YZ#%3-\)(5\+:?I,.K.;B'5TU:[O)8=S7,H!#<9&W.1W.,=ZZ+5/"3
M:CX^T+Q.+T1C2XIHS;^7GS/,4KG=GC&?0T >?'XH>-AH&MZC_9&AC_A'[MK;
M4"9)<3,'VD1+VQW+$]>G:NB\5>.M9T^+3;C37\/V%G=62W1GUFZ(+,0"(TC0
MAB<'K@C^LC?#)V\.>+])_M9<^(;Z2\$OV?\ U&YPVW&[YNG7BHKGX::C'XAL
M=8TK7HK:>+38].E,]D)L*@ WQY;Y&X]_QSB@#+'Q9U:Y\(^%-5LM)M'O=9OS
M8R6[R,$#!BH*MV!..N<9[UHZ?\1-7TW5/$^F^*[*P$^BV0OEDTXOLE0@';\_
M.>0,\=^*;IWPGDL-'\-:=_;*NNAZJ=05_LV#*N[=L/S<'KSS]*V;GX?07_BO
MQ!JUY=^9:ZSIPL)+98\,@  +!\]>/2@"AX8\2>/=5ETC4;W0M+;1-43S ;2=
MA/:QL,JTF\X;((X7G^5<K<_&Z]5KS5;=-".C6MWY'V&6Z(U"= P!D1<XQSG&
M.Q],UU&@?#[Q!IEWI,-[XRN+C2-(/^C6D$'D-(!PJRL&^90,#!ZU3B^%.HV%
MQ<VFD^)%L]%N+LW1A^PH\\62"424G[IQW'X'G(!W&OS)<>#=4FB.Z.33Y74^
MH,9(KYCL(O"3^ +&T?PGJY\3WRO'9ZB28H)9MY"E6:0*<< _+U&/>OJC4;$7
MVC7>GJ_EB>W> /C.W<I7.._6N-'PPLY_A9!X+OKL3M;JQAO5BVF.3>S*X7)Z
M;L$9Y&?6@#%U3QMK/@^U\,^%9;C2EUV73UEO+[5[@K;Q!1CD@@LQ*D9SV[YX
M@E^,=W_P@C:M%8V7V^'5/[-N9@[RVD7&?.RF6:,CICGZ\9V;_P"&^JW7]AZD
MGB"$^(-+MS:M=SV0DCNHN<!T+'D9ZYZY/TMCP)K">%5T^+Q7.FI_:?M+W8MD
M\J3_ *9-%T,?MG].* ,"7QKXCUGX=>*;JVN]!EN+.V+PWNF7+@;"I+G8?GC<
M ';GJ?89-'3O&OBKPYX \%H++3[V[U:5+:W#2/ED*+L+L>CEB=W48KH-'^%7
MV5/$<U_J%N;S6[)K-A8V:V\,*%<9" \MG!SQ^M)9?#/4UT[PO:ZAK\5P?#]\
MMQ"4L]NZ)0H6/[W7Y2=W/7VH JPZC>0_%;0X_$>G::-8_L::6:[M'EVQJ'D^
M5 6P1@ DD9R33]"\;^.?$EM;>(-+\/Z9/X?N+HQ);^>RWGE!BIDW,0G!!X__
M %UU%]X/%[\0K/Q0]VOEV]@]DUJ8L[]Q8YW9X^]TQ7,6'PMUK3(XM'LO&5U;
M^&HKK[0EK##LN -VXQ^<&SC)//Z4 9&A^(_$.G?$CQ[?:J]M+INF0I)<QK*Y
M,<:QNT:P@\ G^+/<\5)H'Q@U"[U;1!J?]@-9:S.(([>PNF>ZLV8X3SE)P<G
MX QG\*Z63X=3OXRU[4CJR_V1KUN(;^Q, WMB(H-LF>,9W=/:JWASX<:QHM[I
MD=QXE2?2M,),,$5@D<DH_A$CY.0/\XH YOQ'XR\3>*O"/C"YTW3=-'ART$]B
MQED<7,F%PTBX^7 R#@CIQFO1OA]_R3GPW_V#;?\ ]%BN3NOA3J8BUW3-+\4-
M9:#K$DD\MF;17=)&'(#Y^Z2!D=<#'O7>:!HXT7PQIVC/*+@6EK';-)MVB3:H
M7.,G&<=* /GO4O#JZ$NK)XW\)ZK=S37+S#Q-82M*4!/#;<[5Q[D=<8XKJM7U
M?7Y?&?P\AT#4X+^PFM'>UDNY)%^TLL6'>8+_ !!>G?).:V!\*O$.GZ=>:#HO
MC1K3P[=L^;66R622-'^\BN3G!R?3K6EJ/PREC/A63P[K']GS^'XWBB>> 3>8
MK@!B1D#/7V^;MB@"K=>.O%NK:IK_ /PBFE:7+IVA2M#</?2.)+B1 2ZQA>!C
M!Z^WKBDD^*-[K5IX7M_"VGVS:KKZ2R*+YV\JV$60^[;RW*MC&.GO5B_^&VKQ
M:IK,WAOQ0=*LM;<R7UL]H)<.V=S1MD;2<G\^O3$EY\+([:P\/?\ "-ZH^F:E
MH*NEM<R1"42*^=X=>.I+'C^\>/0 YGXG7WB*[^$6IKXFTNWLKN"_A19+67?%
M<)O&'4$EE'LW/].Q\"^-;SQQ?:G>V<-K%X>M9?L]N[9-Q,X )8C.%7!X!&>:
MS]0^&.I:QX,U'1]4\4SW=]?W:74ES+$3''M.=D<6["CZ&MS2?!2Z#XUO=:TJ
MZ2VT^_@1+G35APIE7A9%(.%XXQCN?P .<^(G_)4_AO\ ]?-U_*.C7?\ DX?P
MK_V"Y_Y25T7CCP4WBU--N;34Y-,U73)C/9W:1API.,@J2,@X'Y=^E4/#O@+5
M+7Q</%'B;Q!_:^I16YMK<1VRPQQ(>IP.IY/IU/7L <F?BGXRD\):AXH@TC1O
M[-TV\-O<*[R>;*-ZKE #@8W+DDGOQQ6KJ>K//\4D;2]-L_[3E\,&XM[NXDD!
M7+DA& .W;WSMS[U>B^%SQ_#?6/"7]KJ6U&[:Y%S]GXCRZ-C;NY^YC.1UK4@\
M#&+QI9^(&OPR6^CC2S (L%L'._=GCKTQ^- &+\#KS6K_ , QW.JRQ3PR2R-;
MS&1GF<^8^\R%O?ICM67\8;J#7]<T+P,^HPV,%P6O;V>60(J(JL$!)XY(;CU
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
M  R<XP3P.?2N3\'?%=?%/C>\T-[%(+-A*VG708_Z2(VP?;H">/0UJ?$[5?\
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
MN"Y!9L9_O8[XK#TBU74=8^($<3C4H[KP^TEO*NG?9DN&5>&CCQV;@'J2,YH
M].MOB$-6T3P[J>E_V9MU*\CMKF*>]56@W8)1>FZ0 CY>O/2NCU/Q7X?T6\CL
M]3UJPL[EP"L4]PJ-@]#@G@>]>(VEQI]]X*^&J:9$-]KK]M%>A("F)@%W%N!D
MX(^;GZ\59FN-#\/ZYX\M?&>E27&I:E<2/ITCVC2FXA8'RTB;!VD<=QCCTH ]
MMOM=TG3&@6_U.SM3.K/%YTRIYBJ,L1D\@#DT:3KFE:];-<:3J-M>PHVUGMY
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
MRZW&(R1!'%*J' SP2''K0![C17F)\=ZW>6WC'4+";1X-/TR[6RL9[YS''O7
ME9F!^;DC:!C.:S/#WQ+UFXU+Q#IT]]I^IBRT:74K:]@M)(5+)CY2K?>7)ZCT
MZ^@![#4,EW;17,5M)<0I/-GRHF<!GQR<#J<>U>01_$/QE8_#L^,M232I(KR-
M(K"TBC<,)B^W>YS]W 8X!]!D4RYC\30_&;P+'XEGT^XE\J[:.6SC9!S$VY2"
M>Q P1USTH ]<75]-?9MU"T;?*85Q,IW2?W!SRW(XZU-;W=M>*[6UQ%.L;M&Y
MC<-M<<%3CH1W%<5:_#6UMVL2981]GUE]6;RXF&'.,(F6.!\JY)SG!QC/%;P]
M*VE_&CQ/HL1Q:W]G%J@3LDF1&Y'NQ()^E 'H9('4@=J6O(_B@?$!^)/@B'2[
MRUB2628VR3*Q43*!N:0 _,-K #N/F]:NS^*?&7B/Q%X@M/"G]EVUGH3^2YO4
M9WNI@#E1@_*N01^7KP >GU'+/#;Q/+-*D<<:[G=V "CU)/05@>!/%(\9^#['
M6_($$DP998@<A74E3CVXR/K7C^E-X@DT/XK/J5Y:SQ)]JBN JMN,X! *$GB,
M $8^E 'T!#+%/"DT,B21. R.A!5@>A!'44^O%?#?B;Q5X<TWX?QW9TV71M76
M"QCMXXV$L0*J$<N3@DY!(QCM[U7U?XPZNNI:U<:?=Z3!:Z7=-;Q:=<12-->A
M3AF#CA<\X_7W /<6944LQ 4#))["H[:YM[R!9[6>*>%\[9(G#*<''!''6LX:
ME'J7A+^TXH_W=S8_:%CD'9H]P!_.O)M%\:ZSIW@3P''H=CI<$NLW<]LT)C80
MI^]8 C#9 R<GKGF@#O-;^'W]J:U=:I9>)-9TJ2[C$=S%:S#RW  &0K [3@#D
M?XULZ)I>D>#=!L-%MID@MHSY4/GR@-([$D\G&6)).!7"6WQ"U[0KGQE8>(EL
MKVXT&UCN89;6,Q++O4$*02<<LO/UZUS/B.[\6Z@OP]U'Q!+IDEM?ZS:7,26L
M;(T!8@A#DD,-IZ]B.] 'NL-W;7$LT,%Q#))"0LJ(X)C/HP'3\:E)"J22  ,D
MGM7C<GB/5]-N/B1?Z%8:<EWI=Y!(Y\EB;B,!]Y?YNH&3D8Z&N@B\=7/B'Q=;
M:=HH@?25T?\ M"_>1"S R+F.,'/!Y!/MGTH ] MKJWO8%GM9XIX6SMDB<,IQ
MP<$<4BW=L]V]HMQ"US&H9X0X+J#T)'4"O%?#_C;5;?P!X,TS0+'3;/4M=NKB
M*,^6WD6Z)(=S!<DD\@]?6DL-0US1OB+X\O\ 46LY=5L?#_FK) A$4A1%9&VD
MY'09&>N<4 >XT5YC=>/M8A\*>!-25;7[1KE];P78,9VA7^]M&>#^=9GCKXA^
M(/#^JZK]DUC08TL=IATY8I+B:4<9\UEXC/UQ]>] 'K9N[9;M;1KB(7++O6$N
M-Y7U"]<>]35Y-;WYU7XW>%]1*>6;OPP)R@.=NYF;'ZUZS0 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %8/B_P )V7C'1/[.O))H&259X+B$X>&5>C#\S^=;U4M3U?3]
M%MDN=2O(K6%Y%B5Y6P"QZ"@#F/#_ (!DT[Q&/$.MZ]=:YJD4)M[>6:)8EA0]
M<*O<Y//N:TO!7A.+P9X?_LF&[>Z3SWF\QT"G+'.,"K&C^+O#WB"[GM-)UBTO
M+B 9DCAD!(&<9'J,]QQ5:T\>^$[_ %<:5:Z_8S7S-L6)9,[F] >A/T- "6WA
M&*W^(-YXM%V[2W-D+,V^P;5 *G=G_@/ZUCQ?"W3(;SQ$D=W*ND:ZF+C3E4!(
MY.OF(W\)!R<8QS["MB^\?^$]-GD@O-?L898YC Z/)\RN.H([8[GI5FR\8^'-
M1UEM(LM:LKC4%!)@CE#$XY..Q([@4 8GA_P)J6DWUI+?^+]4U&TLH#!:VF!
M@4C \S8<R$#H3TQ67<_":74&M[35/%5_?Z/!<_:([6YA1YLY)VFX/SD<FNL?
MQKX9CUW^Q'URR74M^S[.91G=_=]-WMUJ35O%_A[0K^&QU36+.TNI@"D4L@!(
M/ )]![G% &+-X <^.-1\1VNM3V\>IVXAO++R599<1F-3N/(QP<>HZTD?P[MX
M_A<? _\ :$I@,;)]J\L;N93)]W..^.M6/AQXJN_&?@^'6;V""&9YI(RD&=N%
M; ZDFLFP^*6G0>(_$>G>(;VPTZ'3KQ+>U9F(>8$$DD9.<8'(  S0!8U3X<-/
M?:;JFC:]=:1JUG9+8-=10K()H@.C(W&>^?IZ"J]Y\*H9O"^EZ5;:[>PWNG7P
MU"/4)0)7:;U*GC'3 ]AUYSUNI^)]#T?2XM3U#5;6"RFQY4S2 K)D9&W'WN.>
M*YSQI\0(M'\ -XF\/RV6HQF:.-&+%HSEL'[I!R/2@"+4/AQ>2:K<:II/BJ]T
MN]OK:.WU*2*!'%R57;O /W'QW'3M4^L_#H7Z:)<6.O:A9ZQHZ%(-2D(GDD5A
MAA(&^]GGVY/&*W=<\7>'_#3Q1ZSJ]K9R2C*)*_S$>N!SCWZ5.OB+1FETZ--3
MMF;4@QLML@(G"C)VD<' H Q/!_@9?">JZUJ)U6YU"XU9HGF>X4!MR!LG(]2Y
MXP,<"F>+/ 2^(=9L]<T[5[K1M:M(S"EW;J'#1G)VLIZCD_GWXK:'BG0C#J4P
MU6U\O3'*7K;^(&R1AO3D&KQU"T&F'4O/7['Y/G^;V\O;NW?3'- '&:7\,;>U
MM=>;5-8O-4U/6[8VMS?2@*RQE=N$4<#MZ]!59?A67\+Z;I=SXBNWOM)G\W3=
M1CA6-[90% 3;R&7Y>YR?6ELOB)>/X=T#5;ZWM[<:]JPMK52KGRH"6V%L$Y=@
MN,C ^<$\ U))\4+*U\(Z[X@N8E=-/U&6QBMH\AW=2%523QD_>R. #CD@T 6-
M)^&UK"^KW6O:G<:WJ.JVQM+BYF18\0D?<15X7L?J!TJMH?PQGTO4-+>\\5:C
M?Z=I))L+%T6,1^F]EY<#C ..GIQ5!_%'Q0TZWM]5O_"FFW-A*Z^996#2->1*
MQZD9()&><#ZXZCL]5\9>'=#E\G5=6MK*;R5G\J=MK["=H..O7B@#EA\([%-
MEL(]2FCO/[5.JVU^D0$D$AQP.>1@?YQ7?S6J7=A):786:.:(Q3#& X(PW';/
M-86H?$#PEI=ZEG?:_8P7#JK!&DY 89!/]W((/.*M:GXN\/:-*(M2UBSM7,'V
M@"20#='G 8>HSQQ0!PG_  IF?^SO["_X3/5?^$;\S=_9OEKG;NW;?,],\],>
MU==-X*M'\7:'KT-PT*Z1:O:PVJKE65E*CG.1@']*H>)?B=H6B>"G\26-S!J<
M3/Y-O'%+CS).ZYQQ@<GC.!6I/XY\-6>B6>K7FM6<-I=C]S(7XD(X.T=3@]:
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
M<(.!VZ9.,"OH*B@#Y^U&"W\.:]\,H]2LK^]M[2SN&>">V#3JN"06C4MR@(.
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
MK1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %4M4U?3M$
ML_M>J7L%G;[@GFSN$7)Z#)J[7EWQ\R?AU& H8_VA#A3T/WJ .RLO''A74KR*
MSLO$.FW%S*=L<45PK,Q]  >:WZ\W\-:9K<?B&T>_^'?AO2[92Q:\M&B:6([3
M@J N>3@?C7'>)?B+XDTJ:[U2P\317\-O?^4UE::46M$CW8VM<LH^?Z$^U 'O
M-5)]4L+;4;;3Y[R".\N@Q@@9P'EVC+;1WP*\[O=9\6>*/'>OZ'X>UJ#1K?1(
M8OF>U69KF5UW -N^ZO!&1^N:Q_%,?B*Y^(/P[CDO+"WUQ[>[62Y@0RPJ=GS.
MJG&?ER0#QGU% 'L]9&K>*= T&=(-6UBRL99%WHEQ,J%ESC(![9%<Q\.M>UN_
MU3Q/H>N7R7\^C7:Q1W:PK$9%8-C*KP/N_K7*?$<3M\9_#WV;P_!KTO\ 9DI&
MGSR(BR<R<Y<$<=?PH ]7TGQ!HVO+(VDZK9WPCQO^SS*^W/3.#Q6E7@_@6[CD
M\1^*/'4.EV6BQ:5ITEO-HEL<2>8GS$N-J@9V$9 ZCV-2^'/B)XKN;S0M0FO9
M]2@U*Y6.[TZ/1GCCM(W. Z3[?FV\9R3_ %H ]SIAFB6983(@E<%E0L-Q QD@
M>V1^=>':QX_\4Z9XGOX=7UF;0%CO2EI#<:0);.: -@$S#+DD9/''N.VD(-5N
MOVC(Y;?6HQ"VD)<#;;JRM;>8,Q Y[GG?UYH ]?FFBMX))YI%CBC4N[L<!5 R
M23Z5%8WUIJ=E%>6-Q%<VTHS'+$P96'3@BO(_"VM^,O$GA_7-=O\ 6K8Z;8_;
M;?[";&,^?MC)4LV.@)'&.<'-0:5XMUZ\T'P'X>T:XM-+O-:AFEFO$LTVPI&6
M.$B "9.#V_G0![1--%;PO--(D<2 L[NP"J!W)/2GUX;\4K7Q=;_"K4(M=UJR
MO$@OHP);>$*]S$6 42+@!&!P?ESGI[UH>)?%WB+2_$>F^$O^$@>WFBL/M5YJ
MEOI'VB29BQ"JL*A@HQC)_7U /8JJ#5+!M6;2A>0'4%B\\VV\>8(\XW;>N,D#
M->1M\1/%=UX5T.R5%L-=U+5CIIO9[0HNP;3YRQN.I#KP1CAN!VL>&+;5K/X_
MWMOK&HQZC<)H&%ND@$)=/-C(W*#@'.1QV H ]3U/5=/T:R:\U.]@L[93@RSR
M!%SV&3W]JKZ-XDT7Q#'(^CZI:7PCQO$$H8IGID=17&_%;0I->.@I97^EKJEK
M=&>VT[4G'EWN ,KM/WB./S/2N9\/RR1^.+VPU#PW'X5\6W>ER+;75FPDMI5'
M.[R@=I(VYZG[O.* /:8IHIE9HI$D"L5)1@<$<$?44^OGOP;XCUOPC\$[:_M+
MN&XEU+4!9:?#+" MJ[/)N=FSE\XSST/K7:0>(/%'@_QQINA^(]7AURTU2VFE
MCF2T6"2!XE+$87@J0,<\\]L<@'J%5+75+"^N[NTM;R":XLV"W$4;@M$3G 8=
MLX->8^%=4^('BK2;'Q9:Z[ID5I=7;#^R)[<+&L*N5(\T OO^7C_(KCKKQE?^
M&_B3XOTW3'CM+K5=4M8CJ,Z;XK1 ""S#ID[AC/'6@#Z)) !). .M4;36]+O]
M*?5+34+:>P0,S7,<@:,!?O'=TXQS4Z12Q:<(I9VN)5BVM*RA2YQR<  #/M7D
M/PU8#]G;4^1Q;7V?;Y6H ]>L;^TU.RBO;&YBN;649CEB8,K#.."*?<7$-I;2
MW-Q*D4$*&221SA44#))/8 5X?H^OZ_I'@3X:Z=H=W#;/JLLMO*TT(D7&_@XZ
M\9)X(S6S;>(O$5L_Q"\/:UJ$&JOI&FFXM[E[1$W!X2VUHP-I'(X.>AZYH ]2
MM]2L;NTM[JWO()+>YQY$BR K+GIM/?H>E6J^>K@:WJVJ_"N>UU6"PDNK67R!
M%8ILMY N78(, A@0,8 &,CK7LOC>^UK3?!VHW?AVU^U:K&@,,83>?O ,0O\
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
M.#4KE8[O3X]&>*.TC<X#I-M^8+QG)/X]: /;KBX@M+>2XN9HX8(E+/)(P55
MZDD]!65H/BO0O$Z3-HVIV]YY#E)%C;YEP2,XZX..#T/:L[XCZ&WB3P)J.DI>
MPV<DX3RY)WVH65PP5CZ'&/QKRGPCJ\6DQZ_;7?AU--\2_8M3:VO[5OW4VR21
MGC4#IL<8'7A1R.* /;+3Q)H>H:G+IMGJ]C<7T6?,MXIU9UQUX!SQW]*T)IXK
M:"2>>5(H8U+/([!54#J23T%?/6G6%GI?ASX3ZII]O%%J$^J!)IXU >57?#AC
MU/''/05W_P =9Y8OAI-'&Q6.>ZABF(/\&[/\P* .ZTG7M(UV*272=2M+Y(VV
MNUO,K[3[X/%1V?B30]0U.73;/5[&XOHL^9;Q3JSKCKP#GCOZ5Y1JL,?A?XIZ
M[#H%O':1-X1EG:*W4*HD3.QL#O\ *O/O6#IUA9Z7X=^$^IZ?;Q1:A<:HL<T\
M:@/*KOAPQZGCCGH* /<KGQ3X?L]472[G6M/AOV( MY+A5?)Z#!.<FM>O#_'?
MA_0)+B]\&^&],74/$^M70N[JZEP[6*E@S.TF,J/1?1CZ@'UK4GGTCPC>/#,6
MN+.P<I*XR2R1G#'/7D9H UJ*\,'C/QSIW@31O'=YK=I=64LR1W&F+9HN^,L5
MW>8.=_'08 S[<V?$GQ \07/B_7]/TK5)=-AT=52"&'26O#=RE22'8*?+&1@=
M.N>QH ]JHKQZ]\9>,=:U;P;INF7":+<ZW8RO=+/:!_)D0'<P5N?X3@$]QFO2
M;QM8T[P?.UN5U+6K>R)0E @N)PG7:, 9;L/I0!L54L-4L-46=K"\@N1!*T$I
MB<-LD'53CH1D<5Y%X&\>:Q>^*M/T[6_$DJ7,ZLMQI>I:2+9A)C@0NG7G^]C(
M'3)XP='NO%&D^&/'&N:)K4-C;Z?KES*UN;193<-E=P9F^Z,8Q@9SGF@#Z&HK
MROQ)XNU6X30!8^(DTJ6^TU+Q[2RTUKZ[D=@",)@@)[DCH:P$^(_BV]\ ^&+R
MUNK>/5K[6?[-ED>!=L@R0"R]N<9QCI0![G17CGB3Q3XHT'6](\(S^)'%V]L]
MY>:O!I'GR,I=@B+"H('W>3^OKV7PW\0ZMXA\/W#:U!(EY:W3VXF:V: 7*#!6
M0(P!&0>GM0!V-%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %<_XQ\(V7C70QI-_/<P0B99@]LP#
M[ESCD@^M=!7,^/\ Q+)X5\(76H6R![YRMO:(1D-,YVK]<<G'M0!G:9\.7TW4
M[:]/C/Q9=""0/Y%SJ.^*3'9EV\CVK,F^"VC3:;<Z7_;6M)I<LYN([))U$<+D
MYR,KSZ<YZ^O-/N_B1_8GC_1_"%\PF=K=!>W8@?<T[ ;0H48 )()/(&<<8K/T
M3XNV5G=>(H?$]X4^Q:O-;0>1:NWEP*VU6<J#CGC)ZT =#K_PTL-;UF;5H-6U
M72[RZA%O>/83!/M* 8^<$'G QD59M/AWHEAJ'AVZLS<0C0(I8[6)6!5_,!#%
M\C)/)/!')JSKGCSP]X?ALGO+TNU\GF6T=M$TSRIC.X*H)VX[UJ:+K>G>(=*A
MU/2KI+FTFSLD4$=.""#R"/0T 4M$\*V6A:UK>JVTT[S:O,DTZR$%4*@@;< '
M')ZYI+OPG97GC2P\4R37 O;*W>WCC4CRRK;LDC&<_,>]<MK/CG6+)_$@AL;K
M%A>VMM!LLC)^Z?[\J_,/,;[W' &%Y.36?XP\;ZS#\03X8L]<TSPY;QVJSK>7
M\6_[0S?PJ6^4#M]0: .MD\ Z2WC"Y\21O<137EL;:]MD*^1=(1@[U(SGIT(Z
M#WSG:1\+=/T>_L9$UK6IK'3Y3+9Z?+<_N8F)SV ) [ G\^:Q;_XA^(_"GPWN
M=6\0V%G)JBW/V>QEMW#P7BGI)\A.T8W'!QG Z9KIIOB3X;L?#NFZM>WKJFH
MBWB6!S+*P.&Q'C=@'N1CIZB@#/U#X4:??R7L/]N:U#I=]/Y]SIJ7 ,+MD'C*
ME@,@< ]JT[SP!83^+=-\16M]?6%Q8P);>5;2!8Y84;<$8$$X['GD5;T[QSX;
MU3P]<Z[;:I%_9]KD7$D@*&$CLRD9!]L<]LUG:?\ $KP]K\5[!I%Z_P!NBM'N
M8HKBW>(R* 2&7<!N% %W1/!&G:%X:U'0K:>Z>VOWF>1Y&4NIE&&Q@ ?3BLRX
M^%NCR^']&TR&]U"VGT;<;+4()0L\>XY() P0?IVJIX)^(UMJ/ACPY_;=V'US
M5_-\N"W@9BP61EW%5!VKA>IP.#Z&HY]8\:[KKR'B<#Q$EK;_ .AM^\M/XP,K
M_#DY<X'R-@GC(!;/PHT-_"NJ:'/=7\[ZG,MQ=W\LH:>213E3G&,#TQW-2WGP
MUMKO^S;I=>UF#5[&%K<:I'.OGS1DD[7RN"!DXXJSI/B&]7XBZUX8U&17401W
M^GN%"GR3\KH<==K]#UP:U_$7B?1_"FGB^UF\6WA9Q&@VEFD8_P *J 230!A7
M7PQT6Z\)VN@M<Z@/LL_VF"^^T9N4F_OAB.OMC'X\U)X>^'ECX?\ $TGB$:GJ
M=]J4UH;6:6\F#^8-RMNZ#!^50 .,#IGFH9?B?X>G\)ZOK.G79E?3H_WEO) Z
MR)(>$#)C=@M@9Z=>>#57X3>)-3\5>'9M3U354O)7<#R4LO(%N><J&_Y: @KS
MVZ4 ;OB[P7IGC*UMH[V2YM[BTD\VUN[239+"WJIP?0?D*H>'/AS8:%K4FM76
MIZGK&J-$8%N=1G\PQH>H7CC_ /7ZFL&S^*Z:IK'B[3;=!$VFVSO8-Y+DR,B.
M79R1@8(7 .,\]:E\&?%G1]3TG1+?6+_;K%\!&S+;NL)E+$!-^-H.,<9[T 7+
M#X2:':>&K_P]->ZC=Z7<R+)##-,/]$8$D&(@#!RW)YSCGO5[0/AU8Z-K0UF[
MU/4]9U%(3!!-J4PD,,9ZA0 .N3D^Y]34NM_$GPMX?U9]-O\ 4'%Q$%,_E0/(
ML ;H7900N<UT\=Q#+:K<QRH\#()%D4Y4J1D$'TQ0!Y^GP<T..X2,:CJQT=+G
M[4NCFX'V829STQG'MFM2Y^&VB7B^)EN7N95\0LCW(9E_=,F=IC^7@@G/.>E<
MKIGB#XA>.[*\U_PU=Z;IVEQRO'96MQ!ODN@G=F/W<GCC_P"N>P3QDNB>#;/6
M/&D2:-=R?));@^83)S@(%W$Y SCJ._2@#H-+L3INEVMB;F:Y^SQK&)IR#(X
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
M!!')_.K_ (:\.VOA?2!I]K<75P"[2R3W4IDDD=NI)_H,5L44 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %>=?&6-E\+:7J!!,&G:Q:W5Q[1@E2?S85Z+574M.M=7TRYTZ^A$
MUK<QM%*A[J1@_3ZT >?>)X-1L?C)X=UZ'2+Z^T_["]H\EG%YGE,S-RWHHW Y
M],UBV7AO5D\$_$VW?2KD7.H:C=/:H8CNG0_=*^HZXKUZSM8[&QM[2(N8X(UC
M0NVYL*,#)/4\=:GH \(OO#6NZ7J?A+7&M?$'V:+P_!87 T9%:ZMI57)!1P?E
M.<'CU_'T'X7:))HOA67SK&_LI+R[DNF@O[A)906 &3M10N=N=N.,]?3MJ* "
MO+/&[:@/$\T6O>"F\3>&Y(5^QO8VHDN+>3 W \Y&3GD8XQUYKU.B@#Y_A\%>
M(O\ A4/B^TM]'N[6&^O(Y]-TB1R\L42R*S<=<D#IU.WWYZ"__MB/Q1X7\=Q^
M&=5N;.#3WLKC3_)'VNV;+ .(\\YSV[=<9KV"B@#PB]\$>(_$_AWQUJL>F2Z=
M+K5Q;S6FFSD+(ZPG)+CHK-G.#W_ UUMCK>L>)+MHQX&N-.@ATR2.6[U" 1RK
M(5($</=E)^GX=_2J* / ?A]X/U_P--X<\1#3[ZX-\);+5+-X<R6B%SL=1C(7
MY03]?>O?J** /.FC-]^T$LL/W-/T';.P[,\I*J?P.?PH^).DZHVN^%O$NGZ;
M+JD.C7,CW%E#@R,KA<.BGJ1MZ=<X]Z[33]$L=,U#4;^WC;[5J,JRW,KL6+%5
MVJ.>@ Z#ZUHT >/VFE:SXA\0>,?%9T2]TRVO-$DT^UM+I-L]P^T?,4'0_+@?
M45VWPUL;K3/AUHEG?6\EO<Q6^V2*1=K*=QX(KJJ* /((;'5[#QE\1;1]$U&2
M+6[8O:7<<.Z$[87^4M_>)8 #UJE=>&-8_P"%2^!-/CTFY^V6>K037$"Q'?$H
M:0LS#L.1D^]>V44 >":UX;UK2O$WB^*;3_%%W;:U*9;?^QC'Y,ZN#E)F9&*8
MW8SZ9XZ5[%X=TA=-\'Z?I$D<J+%:+"T<LHD9!MP5+@ ''3( Z5LT4 >,>&[[
MQ7\--#NO"O\ PB.HZL\,LC:=>V:;X9%8Y'F'^#DY/^35OQ'I'C":P\$^(]3T
M]=4U+1[AYM0L;-1N(?;@J,X9E"CIW/'%>N44 >*W.D:WXHU3QEXH30;[3;>Z
MT&33K6TN8]MQ=2$9W%!G'3 _#'>IV\-:H;/X4)_95Q_Q+75KP>4?]'.U#E_3
MD'\J]CHH \)\4:3?V.F_%N\N;.:&UO#:-;RNA"R@,=Q4]\9'YU:M8M9\77GP
M_LHO#5]IT6AM#<W-[.BK"455P(F!^8-@<=1D9'!KU[6='L=?TBXTO4H3-9W"
MA98PY7< 0>H((Y JS:VT5E:0VL"[888UCC7).% P!D^PH ^>?%6F^,]?T37;
M&^TGQ%)J/VXO%;VL21Z?Y(888;0#*W'N>A[5Z+HFD7R_&G5-7EL)TLI=&ABC
MN)(R%+Y3*Y/?CD>U>C44 >$VGA'48O@+?1W=M+8:GI=[+J=KYR[&0QG=D9]5
MW 5U'PN^TKX5UGQO?V<TU_K<\EX8+==TAB3(CC0'&>C8YYR*[+Q-X2TGQ=:0
MVFL12RP1/O"1S-&&]CM(R*UK2U@L;.&TM8EAMX$$<<:# 50, #\* '02^?;Q
M3&-X_,0-LD&&7(S@CU%2444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !5+4]7T[1;3[7JE[!9V^X)YL[A%R>@R
M:NUYE\=X1<?#V*%B0)-1@0D=LDB@#T&\U;3].6V:\O8(%NI5A@,C@"5V^ZJ^
MI-7*^;[[5KZQE\->!=;8MJ>B>)+002D<7%J2=CCZ9 ^A'<&NJ\>>,]?T[5=;
M;2?%"K_9R*R:?8Z4;D+QEOM$K+M3\#QZ<<@'LU%>22>*O%>O>+?#>D:9JD&F
M1:KX>CU"=_LJS>5(V22@;Z 8)QCG&:YS_A./'R^ +WQ2^NVF-'U#[%);BQ3_
M $S#J"SM_#]\#"@=#0![]17C?B?Q[KEQXWU#1=,U672+?3K6.0-#I37K7$KH
M'"MA3L7! S_/MZ'X'UN_\0^#]/U+5+)[._D5EGA>,IAE8KD \@'&?QH Z&LO
M6?$>B^'8XI-8U.UL5F)6/SY N\CKCUQD5Y:GBCQOXAT7Q#XNTG6K33].TF>9
M8-->S63STB&YM[GE21Z=_3K63K$NJ>,_B!\/]1BU"*T&IV4LT$4EFLRVI$1,
M@PQ^?<0<$].#0![TKJT8D5@4(R&SQCUK B\>>$Y]1&GQ>(M,>Z+;!&+E>6]
M<X)]JY_XU7MY8?"S5'LF9#(8XI'3@K&S@-^?3\:YWQGH_A/0/!%C;KX)?4M*
M^S+,^H6(1'B VD,TF-V6SU[T >QT5Y%J'B?Q)JGB3PIHGAC4ETRTU;15NM]S
M"MP\7!8$D\LV !R<<YJ'QGXH\1Z5?7MI9^+U%SIM@DC6MCI'VF220)EGG8KM
MB4D9X/ /3CD ]CI&944LQ 4#))/ %>0/XU\5:O=> ;73KZVL9=>LI7NG:V$B
MAE3.\ \Y&"0,XSC.16-KFM>)=2\!^/\ 1=3UB.XFT2XC1KH6JHUS"Q/R%1@+
MT!R/IS0![O'(DT22Q.KQNH974Y# ]"#W%.KQ"Z\5^(/#^C>#/#D>M-%+?V0N
M9=1BTSSY(80@*1I$H.X@<%L=L\<TMS\3_$NF^![LW$;MJ0U5-/M-1FL'B$L;
MAF$ODD9W (?E ZD<'N >W45YAX)\3>([[Q#J&AW5[<ZE;&R,]IJMQI+V>R7(
M!C92H!ZY'T_+O= M]5M=$MH=;O8KW4E#>=<11A%?YB1A0!C P/PH TJ*** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ K#\5^%K
M+Q?I,>G7TT\423I<!H" VY3P.0>*W** .5\2_#_1O%&NZ1K-X9XK[3)5DBD@
M*CS K!@KY!R 1VQU-9>H?"C2[^^UF5=6U>UM=88R7EG;SJL<DAS\W*D]3G&<
M$]>.*[ZB@#E=-\!:=IFMZ3JT=U>27&F:8NF0B1EVM$,X+84?-SVP/:J3?"[1
MF\':EX8-W??8]0O#>2R;T\Q7+*V%.W&,H.H-=O10!QFM_#BQU;5FU2TU75-)
MO9;<6MS)83!/M$8& &!!YP ,BNET?2;;0](MM,M#*8+=-BF5R[GU))ZDFKU%
M 'G^H?"/1[R\OG@U76+&PU"7SKW3K6Y"P3,3DDC!(SWP?RK<D\$Z4VOZ!JT7
MFP-H<+P6D$1 CV,FS!!&>!TY%=)10!5U'3K35M.N-/OX$GM;A#'+&_1E->?'
MX+:4\"V$OB+Q')HRG*Z8U[^Y SG;C'3_ #FO2Z* .;C\$:5!XDTG6K<SPOI=
MD;&V@5AY8BP0,Y!)(!]:R]4^&&FZEK>J:BFJZK9IJR!-0M;695CN,# SE21P
M3G![GU-=Q10!Q^G_  ZTO3KOPW<I=WKOX?BEAM=[)AU<$'?A>< \8Q3I/AWI
M$J>)TDFNV7Q$5:Z&]?W94'&SCCKGG/2NNHH X1_A=8OI.E6QUO5Q?Z26^QZD
MLRB>-2 -F=N"F !C'\S4Y^&6C3>%KC0KRZU&[^T7'VM[V:XS.)NSJV,*1ST&
M.3ZUVE% '*Z%X'AT:>^NIM:U;4;Z\A\AKF[GRR)C@*   >^<9K8T#1UT#1+;
M3$O+N\6 ,!/=R;Y7RQ;YFP,]<?0"M*B@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** .&G^(EY#/)$/
MGBJ0(Q4.EHI5L'J/FZ5'_P +)O?^A \6_P#@&O\ \77>T4 <%_PLF]_Z$#Q;
M_P" :_\ Q='_  LF]_Z$#Q;_ . :_P#Q==[10!P7_"R;W_H0/%O_ (!K_P#%
MT?\ "R;W_H0/%O\ X!K_ /%UWM% '!?\+)O?^A \6_\ @&O_ ,71_P +)O?^
MA \6_P#@&O\ \77>T4 <%_PLF]_Z$#Q;_P" :_\ Q='_  LF]_Z$#Q;_ . :
M_P#Q==[10!P7_"R;W_H0/%O_ (!K_P#%T?\ "R;W_H0/%O\ X!K_ /%UWM%
M'!?\+)O?^A \6_\ @&O_ ,71_P +)O?^A \6_P#@&O\ \77>T4 <%_PLF]_Z
M$#Q;_P" :_\ Q='_  LF]_Z$#Q;_ . :_P#Q==[10!P7_"R;W_H0/%O_ (!K
M_P#%T?\ "R;W_H0/%O\ X!K_ /%UWM% '!?\+)O?^A \6_\ @&O_ ,71_P +
M)O?^A \6_P#@&O\ \77>T4 <%_PLF]_Z$#Q;_P" :_\ Q='_  LF]_Z$#Q;_
M . :_P#Q==[10!P7_"R;W_H0/%O_ (!K_P#%T?\ "R;W_H0/%O\ X!K_ /%U
MWM% '!?\+)O?^A \6_\ @&O_ ,71_P +)O?^A \6_P#@&O\ \77>T4 <%_PL
MF]_Z$#Q;_P" :_\ Q='_  LF]_Z$#Q;_ . :_P#Q==[10!P7_"R;W_H0/%O_
M (!K_P#%T?\ "R;W_H0/%O\ X!K_ /%UWM% '!?\+)O?^A \6_\ @&O_ ,71
M_P +)O?^A \6_P#@&O\ \77>T4 <%_PLF]_Z$#Q;_P" :_\ Q='_  LF]_Z$
M#Q;_ . :_P#Q==[10!P7_"R;W_H0/%O_ (!K_P#%T?\ "R;W_H0/%O\ X!K_
M /%UWM% '!?\+)O?^A \6_\ @&O_ ,71_P +)O?^A \6_P#@&O\ \77>T4 <
M&/B1>D@?\(#XL&>YLU_^+KO*** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHZ4 %%9UMX@T6]O#9VNKV$]T,YABN49QC
M_9!S6C0 4444 %%(2%!)( '))I: "BLR/Q'H<TJQQ:SISR,<!5ND))^F:TZ
M"BBD!! (.0>A% "T444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
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
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
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
M*58-W'&36C9:IXH'QVUN%C;SV5K8AC;B60[8."OEKT\PG;GMU]J /7**\?\
M"7Q6UGQ'K%C&Q\.K%<3F*73_ #Y(KRW&2,_O,+(?91S[<X]*LI]<?Q%J45Y:
M6L>D(L?V*=')DD)'S[AGC!SCB@#6HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH :SJF-S!<G R<9/I2&6-1DR*
M![FN5:4ZM\3_ +(_-MHM@MPJ]OM$S,H;_@*(P'^^:J6WPTT^73FT[7;E]7LV
MMX(?+=/)YB+D-N0@\[^F>O/4F@#M!<0$@":,D]MPJ2O"_AIX \,7GBWQ6UQI
M8<Z/K&RQ_?R#R0K,5'#?-C:/O9Z5I^*_BKK_ (8U"[EFB\."TM[KRAIWVPR7
MTD><;_D)5/HPR/?N >PT5YOJ/C3Q7<_$.^\+>'M.TN06UO%<FXO&<;48+N!"
MGDY88Z=\UGS?$?Q5>V7B/7=%TG2Y-!T:66#%Q*XGE:,9+C'R[1D'!P<<9S0!
MZQ17DVH_%>_6+PW9V?\ 8MGJ.J::FH7%QJD[16L*L.%&#DDD''/IU[<[XM^(
M&M^)OA]IUYIQMK21-:%A?B&X8K)(,%-C+]Z)ADG/H,9H ][II=0X0L-QY"YY
MJ#3S>'3K<ZBL"WIC7SQ 28P^.=I/.,],U\X>(/$+7GC+4/B+:ZC#C1=4AL[6
MS\Y0\ULN5D*KG)#%A_WVWI0!],45Q.K>._[)\4Z'#(L#:#JUC+<1W8SN#HOF
M=<XVE,8XSFN1TKXR:IJGA>.9-,M$UVXU:&PM[5@^PQRJ&60C.>F><XZ4 >R4
M5Y-XW^)7B'POJ.H%%\-QVMHRB.TN;LO>72G&654/R?\  A5O5/'_ (FN?%FG
MZ%X:TO3I9+_1X]11[UW BW$Y#%3R,#''<CM0!Z<2 ,G@5$US H!::, C()8=
M/6O+-3\9>*M=;Q39Z/IFEOINC0R6UZ\\CK+-)L._RL9 Q@XW=>.>>&> ?!]C
MXF^%F@/>$#_0+BUX3)VO/N)SZC9QZ$YYQB@#UE75BP5@2IPP!Z'K@_G3JY*[
ME.D?$W3A'Q#KEI+',@Z>=  R/]=C,I_W5]*ZV@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** ./\&^!O^$6\&W7AZ74&
MN1</,QGCC\LJ)!C@9/(]:Y6R^$&JVUCHUA)XDM3::/?I>6R1Z<%,I5BW[QMV
M2><#TYZUZU10!ROA[P<-"U7Q/>RW*W::W<^>8?+V^6,,-I.3GKUXKP34H)YO
M"=SX1TK4=?8_; +3P_<Z5LDC)D!)>89#(,L>HYYQ7U+10!YWK7PXOYO$4^N:
M%K%O875[:I;WB7-FMPK%5"ATR1M8 "G:W\.;^]TWPTNGZ^8M3T.5I4N[BV5Q
M*S8W$J" .0,=>/SKT*B@#'\1Z+)X@\*7^C-<B*2\MF@,^S(4D8W;<_IFN0\5
M_"6U\4>"M$T5[X07VDP1P17PAW;E5 K KGH< ]>"/K7H]% '!:QX!U*;Q%I&
MO:)KJ6%_8V(L)#+:B9)(^>0,C!R3^GXY7_"H)?\ A#]0T)M>,CW>K_VF;E[;
MGM\I 8 DXZC'7I7J5% ',?\ ")-_PLK_ (2[[:-O]F_8?LOE\_?W;MV?PQC\
M:Y+_ (4]+_PB&F:$NOF)[+5CJ(NH[;#=_E4%N",]>>G2O5** //K'X;W-YK.
MI:KXLUH:O<W5@VFQB*W$"Q0-G=@ GYCD_3)Z]H?#GPXUC1;S3(KCQ)%-I6F$
MF&&*P2.68?PK(^3D#V_2O1Z* .8\*>$F\,ZCXANFO!<?VOJ#WH41[?*W$_+U
M.>O7BF>-/!I\5)IUS:Z@^G:KID_GV=VL8D",<9#*>H.!^7X5U5% '!Z3\/KR
M.]UC5]=UH:CK>I636(G2W$<=O$1T5 >><'_)-;_@WP\?"GA+3]#:Y%R;1&7S
M@FS=EBW3)QU]:W:* .3T;P4NF>*_$^L3W274.N>6&MFAP$55*D$Y.X'/H*YV
M'X0)'X9UKPTVLR-H]W<"YL(_*^>Q<'/#%OF'0$8'?N<UZ=10!Q&@>"]:L[^X
MO-8\1)<,UJ;:)+&S2V5,_P#+7C.7Y^GUXQB)\*-1N]9TNZUK7K6]BTVZ6Y2>
M/3UCNYRIRJR2@Y(_GC\:]2HH \\?X<Z@NL^+)K?7(X].\102)+;M:[F21D*A
MMV[H"Q..,]/>I]6^'3ZG\*[7P6-36-H(XD^U^1D'8P.=F[OCUKO** ."UOP%
MJS^*;GQ#X9\0C2;R]MUM[Q9+83+(% "N,D88 #\OK4&K?#6_NM%\-PV7B2?^
MU-#G,Z7U\AG,K'DY!;@ @8&3@#'O7HE% 'FNI?#+5/[;U/4-$\0067]K*OVU
M9K!9BL@&#)$2?E)R3CU/7IB[J_P]O9-1T76-#UTV6L:;;?9&N)[=95N(CG.Y
M1@9R6/'K7>T4 <?X(\$S^$;O6[FYU9M2FU6X6XDD:$1D-@[NA(Y)/3&.E5?$
M?@34[KQ6/$_AK7SI&IO +>X$EN)HYD'3(/0\#UZ#IW[JB@#S:V^%3MX;\2VN
MI:X]YJ_B#:;F^\@*JE3E $!Z ^X_"G3?#C5Y]/T"Y'B-(?$>B*T=O?1V@\MX
MB-OELF>>.,Y[GBO1Z* //+7X61W6F^(1XBU634M4UU%2YNTB$0C"8*!%YQ@A
M3[X%3>'_  3XCL=4L+C6?&$U]::= T%M:V\/D+("-H,N&^?  X/<9SUSWM%
M'ENF?!X:-HNB)8:M%#K6DWKW*:@MKCSE<_-&Z[LD$8'7H/>O0=>T:V\1:#>Z
M1>;A;W<1B<H>5ST(]P<'\*T:* /)S\*/$%_I]CH6M^,C>>';)T*VJ62I)(J?
M=4OG. .._P#*NQB\)-'\29O%OVP;9--%A]E\OD?.&W;L^V,8KIZ* /,9/A+(
M_@:\\.?VRH:XU8ZCY_V;[H)'R;=WMUS^%;%SX(O_ /A8TWBBPUH6T%W:K;7=
MOY 9V4#@H^?E/ .<<8[UVU% 'EC_  GU+4-2T]]:\06U[;V-T+E;@:>J7DN#
MD(\V<X_P'MCO;+3]5@\0ZC>W.KFXTZX6,6UCY(7[.0,,=_5LGGGI6M10 444
M4 %%%% '#3_&'P+;SR02ZS(LD;%&'V&X."#@]$J/_A<_@+_H-2?^ %Q_\;KO
M:* ."_X7/X"_Z#4G_@!<?_&Z/^%S^ O^@U)_X 7'_P ;KO:* ."_X7/X"_Z#
M4G_@!<?_ !NC_A<_@+_H-2?^ %Q_\;KO:* ."_X7/X"_Z#4G_@!<?_&Z/^%S
M^ O^@U)_X 7'_P ;KO:* ."_X7/X"_Z#4G_@!<?_ !NC_A<_@+_H-2?^ %Q_
M\;KO:* ."_X7/X"_Z#4G_@!<?_&Z/^%S^ O^@U)_X 7'_P ;KO:* ."_X7/X
M"_Z#4G_@!<?_ !NC_A<_@+_H-2?^ %Q_\;KO:* ."_X7/X"_Z#4G_@!<?_&Z
M/^%S^ O^@U)_X 7'_P ;KO:* ."_X7/X"_Z#4G_@!<?_ !NC_A<_@+_H-2?^
M %Q_\;KO:* ."_X7/X"_Z#4G_@!<?_&Z/^%S^ O^@U)_X 7'_P ;KO:* ."_
MX7/X"_Z#4G_@!<?_ !NC_A<_@+_H-2?^ %Q_\;KO:* /'U^*/@VU^(<FKPZM
M(]E?:<L%PPLIP8Y8G)0X*9(*R,.,XV^]='_PN?P%_P!!J3_P N/_ (W7>T4
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
MFO\ _@KD_P */^%MZ%_T#-?_ /!7)_A0!WM%<%_PMO0O^@9K_P#X*Y/\*/\
MA;>A?] S7_\ P5R?X4 =[17!?\+;T+_H&:__ ."N3_"C_A;>A?\ 0,U__P %
M<G^% '>T5P7_  MO0O\ H&:__P""N3_"C_A;>A?] S7_ /P5R?X4 =[7EOQX
MDU*+P/ ;*X2*W:\C2X4YW/D_*!CMD<@]>*U?^%MZ%_T#-?\ _!7)_A7.^-_%
MWAWQKX;DTB6W\1VA,B2QS)I,C%&4Y'!ZT :NH^)?%\_BFR\&:5)I2:O'8?;=
M1OY8G,0&[:!&F<]2.N>OM6QX \6:AXA35].UF""+5M'NS:W+6V?*DZX=<\C.
M#Q_C@><:CJVG7EWIVL6VJ^*[3Q':VWV:74H]#)%RF2</%C;U/'_UAC:\'^*_
M#'A&PN8HK7Q->7EY.;B\O)],DWSR'J3@<#VH ]?HK@O^%MZ%_P! S7__  5R
M?X4?\+;T+_H&:_\ ^"N3_"@#O:*X+_A;>A?] S7_ /P5R?X4?\+;T+_H&:__
M ."N3_"@#O:*X+_A;>A?] S7_P#P5R?X4?\ "V]"_P"@9K__ (*Y/\* .]HK
M@O\ A;>A?] S7_\ P5R?X4?\+;T+_H&:_P#^"N3_  H [VBN"_X6WH7_ $#-
M?_\ !7)_A1_PMO0O^@9K_P#X*Y/\* .]HK@O^%MZ%_T#-?\ _!7)_A1_PMO0
MO^@9K_\ X*Y/\* .]HK@O^%MZ%_T#-?_ /!7)_A1_P +;T+_ *!FO_\ @KD_
MPH [VBN"_P"%MZ%_T#-?_P#!7)_A1_PMO0O^@9K_ /X*Y/\ "@#O:*X+_A;>
MA?\ 0,U__P %<G^%'_"V]"_Z!FO_ /@KD_PH [VBN,T[XFZ/J>HV]C#I^MI+
M<2"-6ETZ1$!)QRQZ#WKLZ "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "LS7=1O=.L
M ^FZ7+J-Y*XBBA1@JJ2"=SL?NH,<GD] !S6G10!SW@76+O7_  3I6JWQ0W5U
M#ODV+M7.3T%=#7%^##>>&OA7I?VO2[Z2ZM;<![.&+,Q)?& I(]<]>E=I0 5Q
M7B+4M;D\=6&A:;J\.F02Z?+=22R6RS$LKJH')&.&_2NUKA=?\+6^O_$O39=4
MTE+[2XM*F4M-%OC64R)M'/\ %C=^M #M&US6+/QT?#FI:K9ZO#)8->"X@@$+
MVY5@NUP&(P<\'@\5IV?CW0;^]@MX9KD1W,AAMKJ2UD2WG?GY4E*[6/!QSSCC
M-<U9>$Y_#&KZQX?TFP":'KMI*UO=11<V4^T@H[#DH<Y4GH>!6)I6A7<NG:%H
MEUIWBM[NUFMUN(9YQ'90>40?,63:0RC;E57D\#B@#T";QYH4%^]M)+=>7'<?
M99+L6DAMTFSMV&7;M!R0.N >*SX?B!;1>(/%%KJ$,]O8Z*B/Y_V27IMRY8XQ
MUQM ^\!D9%<MJ5GJ]GJ6H-X?T_Q!INL2WS.MJ@^T:9=9<$RL6&U-PY."I![&
MK7B?3]3>Y^(-G%I5],=6L(7LY8H2T<A2+84W#HV>U '4V_C"RU?5=)33[Z6&
M">XEB\N:QD7[7MB+@H[ 84##;N0>G>I8?'N@3W\=K'/<&.6?[-%=FUD%M)-G
M&Q9=NTG((ZX)XJIKNEW=SXA\'-;P2"&U>X$TB+Q"&MF52?3D@5D>&KK5-)\-
M:/X5;PQ=2ZA9R1P2R30_Z($5^9A+T/R_, /FW'I0!/I_CU]7LKZ5I)-,-OK:
M64;RZ?+B2,R! AW 8=N0?[F1D5N:AX\T'3;VYMII;IQ:,%NYX+222&V)[22*
MI5>HSSQWQ7&2Z;JC6VJZ9_9-]YH\61:@LGDGRY(&N$;<K=#@ D^E7(7U'P]I
M?B309/#^HWUS?7=W-:2V\.^&X6<DKO?.$(W8;=C@<9H ZO4_&FC:5?I8227-
MQ>26ZW,4%G;23O)&20&4(#D?*>?IZBD;QQH1TBQU&">>YCOV9+:*WMY))I&7
M.X",#<"N#G(&,5A^%O#U_HWBS3UN8F>.T\,6UBUR!E#*DAW*#^1^F*PSHD\&
MB6_V_1=8'EZS?S+>:9(R75HKR.4=$49='!P>O&.#V /2=%URPU^R:ZL)'98Y
M&AE22-HWBD7JC*P!4C(X/K6?JOC71M(OYK*9KN::W027(M+22<6R'D&0HI"\
M<\\XYJIX"_MK^SK[^UFNW@^U'[#+?0K%<R0[5YD50.=V[&0"1UK-MKF\\(Z]
MXD$^AZEJ$>I78O;2>R@\T29C1#$Q'W""G5L#!ZT ;E]XWT*Q>SC-Q+<RWMO]
MIM([2!YVG3(Y4(#GKGZ9-:.B:Y8>(=.%]ITK/#O:-@Z,CHZG#*RL 5(/8UPO
M@SPQJFAZYX;2]M2!:Z%<132+\R12O.CB/=TR!D?A71^"K&ZL3XB^U6\D/GZW
M<SQ;UQO1@N&'L<&@#$\72^+]&OM.>T\36XM]3U6.RCA;3%)@63<0=V[YL!<=
ML^U;,VOKX.LK>'Q/K#7]Y=R.+=K>P*M)@#Y B;LG^>?:F^.+"[OF\,_9+>2;
M[/KMM/+L7.R-0^6/H!D4_P 0:?<W/CCPC=QVSR6]K)=M-(%RL>Z$JI)[9/%
M#KKQ[HMJVT+J,[K EQ,EO832-;HXW*90%^0XYP>?:I;SQQH-E%ISFZEG_M.$
MSV26UN\K7"C;G:J@G/S X^OH:Y76AK4WB;6X+F+Q D+;!IT6D1*D5R-@R99\
M9#;LCYF7 '&:9X1T34K:?P"USI\\7V#2+J&X,D9'DR$Q  ^A.&QZT =8GCG0
MI-%.J+//Y0N?L9A^S2>?Y_\ SR\K&[?[8Z<]*Q_$GQ$MK3P5K&IZ4ES_ &A9
M8B,$]G(KP2,,J9$(!5<<[C\IX&:R;[1;CR/$37FA:A=02>(ENHWLY&BN(D\F
M-1/#CEB&!&!ZGKC%4[FQ\1ZCX(\76*IJ]]920Q+IIU*W"7DC9^<$ !F4?+@L
M >M '6VGBVVTG3K*UU*[U'4]3FB:<I%I4BS^7N(W/"JY11TYQG'>KEYX\\.V
M6G:??->/-#J(;[)Y$+R-,5ZJ% SN[8(SG/H:Y;7])N[#Q]?ZM,/$/V"_M(4C
MET7YF1X]P*.H!.#D$'IR:;H?AV\M=2\'7']E7MO''=ZA=3K<S"9X?-C.UI&
M 4L3G'8G&: /1%U*U_LD:I)(8+3R?/9YU,>Q,;LL&P5P.N>E8NG^.]$U&YCM
MXC>QO/&TMKY]E+$+I5&28MRC?QS@<X[5+XXT>ZU_P3J^EV17[3<6Y6(,<!F'
M(4GMG&/QKGKNZO?%VJ>&H8-!U+3QIU\M[=RWD'E+$$1E\M#_ !DEL?+D8% %
MGX?^(=1\3S:M?W=S.+9+J2&"T>P:%8E61E4B1AEVPOS#^$G! J;Q[K^LZ:MC
MIWAM8GU>Z$TX61-P$,*%FX]6;8@_WJM> K&ZT_0;J*[@D@D;4[R15D7!*M.[
M*?H00:QT\-ZEXA\;:QKEQJ&JZ.EN%TZQ^S"-6EB7#._SHWRLYX(QG;WH Z2S
M\5Z7=Z;H=[YQ2/6=JVORD@N4+["1P#A6'/<8I/\ A,-#V:V_VT;=$S]O^1OW
M7REO3G@'IGD8KA(O#6KZ1X=UO08+>[NO[&OHM5T6X=1F<;A(T8P -V1(N !]
M_I5&/P?K?VG1(VL9/)\01K+KQQ_JF6X-R0_N1(\?X8H ] U#QWHNG3S0N+^=
M[>-9+G[-8RRBV5EW#S"JD*<<X/..U+J/CSP_IK6:R7,T[WMN+JV2UMY)FEB/
M\0"@\8Y^E<EK<>N7>L>(+6YA\0+YC%=.M]*B6.WN$,8 :2?&0V[(.YA@#@&K
M/@K1]0M=9\,3W5A/"MMX6%I*TD9'ES"2/*'T.%/Y4 :/BWXB:?I.CZX+&6X:
M]L8)%$ZVDCP17&S*H[[=H;.!@GJ0#776%P9M*MKF9E#/ LCMT'*@DUYC>QZI
MI/@[Q7X7_P"$?U&^O+R2]DM9X(-\4R3%F#E^@9=V-IY)48SFO1$2[A\*JEO"
MK7J60$<4O ,@3A6]L\&@#+M/B!H-[=VD,;WBQ7DGE6MU)92I!._94D*[3G!Q
MZ]JCN_B-X<LIKJ.2:[9;*9H+N6*RE>.V8'!\QPN%&?\ 'I7!"RUO48?#+RV_
MB>YO+74K.:_CN8%@M;8*XW>7&JJ& /0C=A03FNC71M0'@7X@6OV&;[1?7>H/
M;Q[/FF#IA"H[Y[4 =1JOC#2-(O4LYGN9[AHO/9+.VDG,<6<>8^P':ON>M0^
M];N/$?@VRU6ZD226=YOG1< JLKJN!_NJ*Y_3OMWA/Q#>WMSH^HWMOJ=A9B-[
M.#S6CDBC*-$XZKG(()XY.2*VOAQ9W>G^!+"VO[-[*Y62X9[=QS'NGD8#Z8(H
M DOO'V@:?>7-O--<LEHXCNKF*TDD@MV]))%4JIY&>>.^*DU+QOHNF:B^GN]U
M<WJPI/Y%G:R3L8VSAQL!X^4Y/;CU%<E$=2T+P]XA\,OX>U&]O+RXNVM9H8=T
M%PL[,59Y,X3&[#!L=.,UJ^$- OM&\4S+=1.T<.A6%F+G'RR/'Y@< _D?Q% '
M7:5JEEK>EV^I:=.)[2X7?'( 1D=.AY!SD8-<'J[>-=/\4:'I*>++9DU:2==Y
MTI/W(CC+CC?\V>G:M_X=V-UIO@FTM;RWDMYUGN28Y%P0&N)&7CW!!_&F^(;"
M[N?'G@Z[AMY)+>UDNS/(JY6,- 0N3VR>* %N?%5IX4CM--U_4IK_ %62-I0;
M6P?=,H;J(TW8P",\] 33K_Q_H.G3W*2M>R1VC;+NX@LI9(;=L D.ZJ0" 1D=
MN^*2?3[E_BG8ZA]F<VL>CS1&?;\JR&:,A<^I -<-K]MX@U.R\46-S;>(3>S/
M<QV=G80K%9R1$$([2 ?.2.6!;)/&* /0=3\::-I6H)I\CW-Q>R6ZW,=O9VLD
M[O$Q(# (#Q\I^G'J*1O'&A?V38ZC!//<QW[,EK%;6\DDTK+G<!&!N&W!SD#&
M.:R/#^FWD7C6TOIK.:.$>&;:W,CH0%D$C%D/H0,9%<[_ &)/!H5J+_1=8'EZ
MQ?RK>:9(R75F'E8HZHHRZ.#SUXQP>P!M^*OB#''X5BO-!DN!<7%\EB7-A)(U
MJ^]5</&1D. W"GJ<8S6H?&FFZ1#%9WUS?WUY#;I-=R0Z=(6A5AD-*J+^[)'.
MT\CTKEULO$E_X8BCNXK^Z2/Q#:2VCW<"QW+6RR1EGE50,8(;D@' R:9?:3>Z
M/XJ\13W">*'BU"=;FU?1CN27]VJF-P =K KC+8&"* .SU/QWH&E-:)+<RSO>
M0?:;9+2!YS-'Q\RA <CG/TK9U'5++2-,FU+4+A;>TA7?)(^1M'TZYR0,=<\5
MPWA;PY=:3XF\/EM-FMK:U\/RPL'E\X0RM-&WEF3 !.-W0=C6[X]TN]U3PVGV
M"#[3/:7EO>"VR!YZQ2*Y3GC) .,]\4 /M?'&D79N(TCU"*ZA@-Q]EGL98YI(
M^FY$*Y<9],U0^&FMZGXC\-#6-3NY)7N2&6%K(P)#WVH2,R+@CYN>AJN)+OQ1
MXVT74K?2=0LK/2H+DS2WT!A:1Y5"B-5/)Q@DGIP.:U?AW976G?#W0[.]@D@N
M8;55DBD&&4\\$4 8,FO:OK7BS6-*@\3V.@/83B&WLY;9))K@%%;S3O894EL
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
MPP,@<@XERN1@9SFIM5T75KQ?&NEPZ7<M-<:A!J=JS)B"Z2,0$QA^FX^6PP:
M.VTGQCI.L7XL8C=V]T\9FBBO+22W,T8ZLF\#<.1TJ"S\>Z!?7\%M#/<;+F4P
M6]TUK(MO/(,_*DI7:QX.,'G'&:P=26]\;^(-':TTK4M-@L([EY[F^@,)5I(6
MC6- >6Y;)(X^4<FG>'+_ %.TT/P_X;;PO=?;;'R;>ZEN8<6T21C#3))T8G&5
M YR><4 :'AKQE'<:+8/JTX;4+Z^N;:WAAB)9Q',Z@[5' "J,L>!W-7O'VLWG
MA_P1J6J6#*MU (RA==P&9%4\?0FN%\+^&]6\*7%IXDCL[VX>YN[FUU"S==SQ
M0/<,8Y(AU !PQ ZAR>U=YX[T6Y\0^"-5TNRV_:IH<PAC@,ZL& SVR5Q^- #?
M'VLWGA_P/J>JZ>RK=6ZH8RZ[@,NH/'T)I=4\<:+I6I7&FRF\GO;=%DE@M;.2
M9D0C.X[5/R^]<OXDU;4O&WAQO#=KX8UJSO+UXDN);RW\N"W4.K.WF9PW"G&W
M.:Z+1K"YA^(?BF]EMW2WN(+)89F7Y7VK)N /?&1GZT +/XJLY+O2+JSU+S;*
M\LKBZ2WAM'E>Y5 ARI R"N[[N,G=CM6?X?\ B-:7WA'2M4U&"Z6^O\JEI;64
MK-(P&YC&N"60 CYNGO6+X1T+5+23P-]HL)XA9V&H1W&]"/*9W0H&],@''TK/
ML-/G'@GPQ::EX?\ $%O/I7F6TMY8%H[JU?:/FC50?,C?H2,CY>AH ]2T;6['
M7[$WFGRL\:R-$ZR1M&\;J<,K*P!4CT(K0KE? ?\ ;7]D7?\ ;#73I]K?[')>
M1+%</!@8,JJ  V=W4 XQD5U5 !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 5A:EX/T75KY[R\@N'G< ,4O)HQP,#Y5< =/2MVN,U.34-<\>2:!%J
MMWIEE9Z>EVYM-JR3R.[*/F93\JA.@')/- %S_A7OAO\ Y];O_P &-Q_\<H_X
M5[X;_P"?6[_\&-Q_\<KB8M6\2W5EI^FGQ#,+F;Q-<Z;->QQH&:%$DZ#& ?ER
M..#6IJT]S#K)T5/$'B2]>SM8P8=)MT,P=LG?/*5V9(QA?EX!)% '1?\ "O?#
M?_/K=_\ @QN/_CE0W7@CPE90&>Z2>"($ O)J=PHR3@#)DZDD >YKD]*UWQ!X
MCL_ L#ZS/9OJ<5\+Z:".,22"$@*1D%5;CJ!W..U4_$9U&X\,>(='N]9O;A=)
MUVRB@N&V"1XY&A8*YVX.TN2#@<@9XXH [[_A7OAO_GUN_P#P8W'_ ,<H_P"%
M>^&_^?6[_P#!C<?_ !RN3U#5]6N_%FJZ.EQXE-KI$<$$3Z5%"SR2-&',DS,.
M3R,* !P:L66K^(_$$OAO1-0N;G2+FXM+FYOY8%1)9?*=8T"Y#!-VX.<?08H
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
MKH/B3;SW?_"*P6UV;29]=B"SJH+)^YFR0#D9QG&0><4 :/\ PKWPW_SZW?\
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
MF9VAX_><<!>1R2,]J:_C?1%T2WU1)9I4N)C;16\<#&=Y@2#%Y>-P88.0>F*
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
M-#XDCLM1BN%F76YHW\UD0,&10Q9"#UX YZ5G6MQK<7P[L/&$GB/4Y;];V-3
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
MV47D6\UC.T#I%Q^[RI&5X'!].*MZ%X?T[PW8-8Z7"T5NTK3%6=G.YN2<DDT
M<;;0ZEXI?Q+J+^(=0TY]/OI[.SBM9 D4(B P[KCYRQ.3NXP1C%9^CZAJ_C;7
M=&6?6+_3;:;P]!J$T5C((]\QE9<Y(.%/IWXKL-2\"Z+JE]=74HO(?M@ O(K:
M[DACNL#'[Q5(!XXSW'6M.WT'3K354U&WMQ%.EFMB@0X585;<%"]!@F@#(\=:
ME>V.EZ=;6%R;274M2@L&NE +0HY.YESQNP,#/<USFM07FBZK/H"ZSJ5W8:EH
M]U.1<3[Y;>2+;\ROC.U@V"#Z<8KOM7TBQUW39=/U& 36TF"5R5((.001R""
M01R*S],\(:5IL]S<?Z5>75Q#]GDN+VY>>0Q?W 6/"^PZ]Z /.K#2)9X?A;:1
M:I?0";3II'F20>8JFWB)1&(^4=AW Z>M3:CX@UO0;+6]$MK^_O'CURUT^VN6
M*/<QQ31H[ ,^%+<E5+=V'-=[I?@W2-(.F&V%RW]F>8+3SKAY/*5U"E1N/W<*
M !VJ6Z\):+?)JJ75IYJZI(DMT"[<NBJJLI!RI 5<$8Y&: .$&H>(=*_MF../
M78+ Z-<SJVKW,,DL5PBY5HRKLVT@G(/ (&*L6IU/P]8^%O$5YX@U&\@OI84U
M)+F4&)!-'A650!M D*?G]:ZJU\#Z/;B]:4WEY/>6S6<MQ>73S2"$]45F/RCG
M/'>KU_X;TS4_#)\/7<!?33"D/E[R#M7&WGKD;1S[4 >8:9XJU^\L[G2Y[Z9-
M0UV\M;G3'SAX+2X9BP7V2.%_Q-:=U?\ B._M-9BL+FZG\CQ))"\$%RD-P]LL
M2DQPLW ()!P,'&<&NY_X171QK.FZL+0"\TZW-M:N&.$C(QC'?C(_$U7NO!6B
MW<%Q&\,R/-?'4/.BG9)(YRH7>C Y7@8P.* .#N/%E[8>%[ZUTZ]UMK]M3MK3
M[/J,"B\L4FQP&8[9,X;8Q.,D9/%;GAB?6[3Q=%9M;ZZFE7%J[2#6KB&21)5(
MPT95V8@@D$= <8K?B\$:&NEW]A/!+=I?LK74MU.\DLI7[I+DY&W QC&.U2Z/
MX3TW1K]]0C>\NKYHO)%S>W+SND><[%+$X&>>.O>@# \>ZOJ46O:#H=DFI&&]
M6>:X_LQHTN'6,+A%9V 49;)(.<#CO7/7>K>)[+P[J]L)M3L1%J-@EC<7\D4E
MRB2RJKH^QF# =MW)#8YQ7I&M^'M/U^. 7BRK+;/YEO<02M%+"V,$JZD$9'!'
M0U1A\#Z)%ITUF8IY?/N8[N>>:=WEFEC8,C,Y.3@J..F* .6U&^U+P5KVJ10:
MI?ZE;CP]<ZDL5_+YI6>)E (.!@$-R!QQ6KH^EWMC'HFJS>+KN26[0?:8;R16
MBNV>,L%B7@(0>1M[ Y!KIY]$L+G5QJDT/F7(M7L_F.5,3L&92O0Y*BLO3/ V
MBZ5?6UU +N3[("+.&XNY)8K7(P?+1B0O''L.!0!RD&OZFWPE\+:DU_,;VZO+
M*.68M\T@:<*P)]QD5!JK:Q>1^/\ 45\0ZG;#1'=[&&WE"HK);))\PQ\RD_PG
MCD^M=1'\-O#L;Q@1WA@@N%N;>U:\D,-O('WYC3.%Y_0D=":UV\-:8]MK5N87
M\O6=WVT;S\^Z,1G'I\H XH Y&P?4].\3^$Y)=:OKP:W:SM>0SN#$&6(2 QJ
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
M=2D$=G>W%N%AF8@E0/F+#<!QN49K!A\3:PU];1F])1_%\^G,-B\VZQN0G3U
MYZ\=:R8_#VN7MQX:N)-'UY[VRU"WGU&YU/4E=1CA_*C$A7&3G(4<# SG%:T/
MAG6%OK:0V3!4\7SZBQWKQ;M&X#]?4CCKSTH [G6];LO#^FM?7S.(PRQHD:%W
MD=CA451R6)X K"E\=0FTU*,:5J=KJEK:&Z2RN85$DB=-ZX8JR@D9YR/2K'C;
M2K_4M.T^XTV%;BZTS4(;]+9G">>$R"@8\ D,<$\9 K&GLM7\3>('U>31[G3;
M:TTJYM8([IX_-GEEVYX1F 4!.I/)- &C\.;K4+_P;:ZGJ5UJ-S<W<:3L;Q(U
MP613^Z" ?N^>,\UR\WQ"U67PM>:G)#=61M?$$=JS&W4YM_M&PQ@ L2X4$-CG
M)XKO?"-E<:;X,T*QNXS%<VVGP0RQD@[76-01D<<$&N'_ + UQ],OM*.D3 IX
MG348YC)'LF@:Z\PLOS9RJCD$#VS0!UNG^-=/N[J]M;RUOM*GM+;[8Z:A$(\P
M#(,@()&!CGN/2H].\=6%_>64,EAJ=E%?G%E<W=N$BN#C< IR2"0"0&"Y XK+
M\6>%;_Q!XBU 1+Y=M=>'9[!;@L-JS-*I4$=<8&>G2L?1_#5Q/J.AQS>%]5MY
M;&9)KJXU#699K>-D'!A43-O)/3*@ 9S0!TGQ)UV_T+PPKZ:MTMS<W,-N)[>-
M7,(:15)PW&X@D#@\D41^+8-*2+2TL]=UB^M[=)KO9 CS0!AE?-P57>1GY5R>
M.E6_'.F7FK:!#;6,)FF6_M)2H8#").C,>3V )K,V:OX8\6:]>P:'=:M::NT4
M\3VDD8:.18Q&4<.RX4[00PSC)H =+XJ;4/$?A]])O=^EW^F7EP0$'SLGE[2<
MC(()88]>M1:!XXV^$_#AO(KW5=;U"Q6Y:"SA5I&4 ;I&Y557) Y(YZ5G:%X0
MUG2[SP\UQ C&&RU(W31N"D4MQ(LBH,\GN,CCBHO#VBZ[X3_L#5'T:XO=FAQZ
M;>6MN\9F@='+A@&8*P.X@X/8&@#K;#QOI.HSZ?!$+E);R>:UV2Q;&AFB7<T<
M@)^5L9(ZYQ4:>/\ 1)-,UJ_C:=XM(NC:3JJ#<\FX*-@S\P+' /&37,S^&=?E
MT+5M;CL%CUV76(]6LK RJ2@C"QA&8';N9 ^<''S=:K6/@+5K'7?#MNL0;2W@
MMI]7DWCFZM][CC/.Z213_P  H Z:3QG8:,^L3W]U?7$<.J1V0B6V!,+O&A"(
M%Y<<YSUR<5=L/&VG74NH0WEM>Z5-86XNIX]0B"'R>?W@VD@K\I[YXKF;OPQK
M$NI7LJV1*2>*[._0[UY@1(PS]>Q4\=>.E6?&/ANXU76=>GEDCM-.N/#9M/ML
ML@6..02L_P W.0 ,$GIB@#3M?B#I]Q?:;:RZ7J]H=3DV64ES;!4F&TMN!W'
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
M"6  .1M. <]<\5=H **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *9+%'/"\,T:
MR12*5='&0P/!!'<4^B@##TKP=X?T2\%WIVF10W"J41\LQC4]0FXG:/88K<HH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***Y/X@WOB
M"R\+WLN@BWA,=I/-/>2N=T*HF0$0#YF;G!) &,\]* .LHJAH<LD^@:;-*Y>2
M2UB9V8\L2@))KD_&>I>)+37=#6U:"TT=]6M8)'5RTUSO;E<8PB#!!Y)/L.H!
MW=%%><_$/3+W3[5-5LO$FN6\ESJ%M 88KH")%DD5&VKMXX)[]: /1J*\[\1F
M]\%KX>^S:EK>J?:M86.2*699))5,,F(QPHP6"GGCOFM>'Q[:16NLOK&GW>EW
M&D)')<6\I20LLF?+*%"0VX@C'KQ0!UM%<UIOBR2XU>VTS5-%O=)N+R-I+3[0
M\;K,%&67*,=K@'.T]L^E97Q-U)M.M_#X?6)]*M+C54ANKF&81$1F.0GYCT&0
M* .ZHKRJTUB&+Q7H<'A7Q??^(//N2E_:RSK<QQV^TDR%@OR$$+CGG.*Z6Z\?
M1PF_N;?1=0N](TZ5HKO4(C'L0I]\JA8,ZKW('8XSB@#L**Y.^\;A-2N;/2='
MO-7-G!'<7+VKQC:C@LNT,P+DJ,X ].<\55?Q1J<GQ%TO38-/NO[+N=+>Z8.(
MT()>/YV#$,-H)4KURW0XX .VHKSMO'Z:[X;35$TS6M/TR2:V$-[&\2M*S3JA
M0#).W)P3CD;L=JU[[QSY%UJ*V.A:CJ5IIC^7?75MY>V-@ 6559@SE01D ?G0
M!UM%<+8>,;L^-/$<5];RQ:'865O<K.QC"PH5D8N1G>=X P,9&WD#/-ZQ\<?:
M+G3A?:'J&G6>IN$L;JX,961B"RJRJQ9"P!P"/;@T =917F/C+Q]=R>#M7O-&
MTW4DLXW-O#J\;($\Q9 I(7=OV9!7=C&?;FO1[U[A-/N'M$62Z6)C"C' 9\':
M#^.* )Z*\9TK5!?6D 3QWJ-CXSPC2V.KN88#-D;HO** ;3R!MYZ&NO/BR_M/
MB'JMA?VTD6C66EI=/-NCV1<R%I#SN(.W:!C(VDX .: .WHKD;/QV)I].:^T+
M4=.L=3D6*RN[@QE79AE RJQ9"W;(_*FOX^0O/<6VAZE<Z/;W)M9=1B"%0X;8
MQ5-V]D#<%@.QQG% '845Y_I?C!K'4=?M+EKG4+U]<>UL+*(AI"@BB)QD@*B[
MB220!GWKJO$UQ-:^$=8N8':*>*PGD1U/*,(R00?8T :U%<JM_=GX3KJ/VB3[
M9_8?G^=GYO,\C=NSZYYK.T[QK/!IWA[3$TR^U;5[S1H;W]TR*&&U0S.SL .3
MU]Q0!W=%<4_BZTU73]%NPNIV4DFM"PDMD**R3J'#1R]04^7G!YXK.T7Q_?Q:
M;JUUK.F79D76GT^RB5X<NY?:L.0V 5QRS'!SP30!Z-161HFM7&J/=07FD7FF
MW-LRATN K(X89!1U)5AZXY'<53U?Q4]AKBZ-I^D7.IWXMOM<D<,D<82(L5!R
M[#))!X'ISB@#HZ*\^UCQ;>IXE\)36%AJ<L>HVEVQTW8(I&<"+;Y@<@+MRW)/
MTSD5K6_CB*?1KJ[.D:B+ZUO!82Z<J*\HG., $';M(8'<2!B@#JZ*X+6O&5V^
M@^)K&73KS1M9LM(EO8M\B/E-K!71T)&0R]#BK/AC4[V[\8:A;7%U)) FD6$R
MQLV0'?S-S?4X&?I0!VE%<-K?B#4M-^)=K8V=G>:C'-I#R+90.BKY@F4;V+D!
M<+D9]P.]7H/'$-UH<5];:1J,UX]X]B=/5%\R.=20RLV=BJ-I.XG&,=^* .KH
MKC6^(,5K:ZJ^IZ/>V5QI30&[@9HWVQ2MA90RL0RC!)[C!K6U+Q5I^E:L;&XW
M@1V$FH7$XQLAA0@9;ODG. /[IH W**Y2P\;&>[T^._T/4-,MM3;98W-P8RLC
M%2P5@K$HQ ) /ICKQ3/B)J]UHF@V-Y:O<!AJEHLBVXR\B&4;D [Y'&.^: .N
MHKEK;QM!'<7MMK>GW.C7%K:-?%;AD=7@7AF5D)!(. 1UY'7--L/&QGO-/CU#
M0]0TRVU-MMC<7!C*R-M+!6"L2C$ D ^F.O% '5T5QDGQ#@2&;4ET>_?0(9C#
M)JJF/RQAMK.$W;R@;@L!V/&*L7WC22+7+_1]-T#4-4N[&..6;R&C1 CJ2/F=
MAD\' ')P: .KHK/T/6+7Q!HEGJUEO^S7<0D0.,, >Q'J.E<Y)\0X$AFU%='O
MY- @F,,FJJ8_+!#;6<)NWE W!8#L>H% '9T5SFI^)[NVU&>RTSP]?ZHUM&LD
M\D31QQJ&!("L[#>V!G Z<<UG3?$:U>#1&TO2=0U&;6;9[BUAB"*V$V[@Q9@%
M(W'OCCW% ':45Q-Q\0VC?51;>&]4NETEL7S(T2B(; YQEQO(!/ ]/<9OW7C.
M)KBRM=&TVZU:[NK1;X1PLD8C@;[K.SD 9Z =3@T =/17)-X^LI-,LYK2PO+C
M4+NY>SCTT!5F6://F*^3M4+@DG.,8ZYJOX0UV_UCQCXIAO(+NT6U%HJV=PRG
MR6*.6P5)!!P#D'GB@#M:*PM8\07-AJ4>G:?HE[J=VT/GMY3)''&F<<NY W$]
M%&3WXK*/Q%LSI>EW<6EZA+/J%W+9):*J>:D\>[<C9;;U0C.<=SQ0!V5%<E#X
M]M(]/UF?5=/N].N='*?:K5]LC'S!^[V%"0VX\#GK6<OB;5KSXA>'=/N=,O\
M28Y;:[ED@FD1DG 5-ARC$94[L@\C(]: .^HK+U#7(--UC2M/GBD_XF3R1Q3#
M&Q75=P5O=@&Q]#65>>.K"T.I 6MU.UI>QZ?$L*@FZN74-Y<>3U&1DG &#Z4
M=317)?\ ">6UE%J8UO3;O2[K3[3[:]O(4D,D.<;D9&(//!'&"1]:EM?%6H7
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
M9]/F4]:YF7P%>6MQI%_/H46LA-&MK"YM!=^2\,L0^\K$A64Y((SV!&:]6HH
M\UM/"&KZ3;Z-J]CI.GQW]C>7,\FF6\Q56BF4(1YCD@R *ASP#@].M;OA:PUM
M?$WB'6-7L8K)-06V%O"DPD95C5P0Q'&>0>..>IQ76T4 <%XHT+5M0\5BYFTV
M;6-'-HL<-I'J!MDAFW'<SKD;P01SSC!XK.\.>"]9TR/P[%<6EM$-/UF[NI5@
MD!18I$D"[,\XRX&,9KTZB@#S_7/!NIZM?>+)(FBB^W+826,CME6DMR7PP'(&
M0!^-68;?Q+K'C71-5U#18M.LK""X1P;M979Y%49&W^'Y>._7('%=O10!@>,M
M'N=9\/NEAM_M*UECO+(L< 31L&4$]@>5/LQKE;_P!>7/@/2+1XH+O5;2^&IW
M<,LA1+J9]QE3>.F?,8!O]D=J])HH \WTWPG?H^K7=EX8TG27DL&M;>&]E-TT
MS,06$A5BHC. ,<GO[$\,>%-1L?$:7-IH[^'=,^S2I=68U#SXKB1L;2B D(%Y
M.>"<XQUKTBB@#R*+P-K,F@>&/[0T."ZGT%9;.6Q-X +J)E7$J.,!2"OW6QQG
MGI5Z+P-J#Z9=W=GHVGZ3>I?VM[9VGGM(TGD$D+-)DCYMSXVCY<]3V]/HH XO
M3+7Q#J'C^'7-2TF/3K*+3);1(S<K+)YC21MD[>,$*<8STYQG%.\;:1JVIWVD
MO;6T]_I4)E^VV$%Z;9Y6('EMNR-P4ALKD=1UKLJ* /+-/\&:S96'B2-?#VD&
MWU"ZMYH],FE\R.2)5 =-Q^[)QG<01N/?K6UX'\/:AH^K7\XLIM)T>2%$@TN6
M^-SME!):0<D(""!M!YQGCBNYHH \^UB\U2R^+D3Z9IJZ@3H1\V'SEB?'G\%2
MW!Y[$C@^V*CL?"&L)=Z3J%S' +F37IM6O8HY,K KPM&J@G&X@; 2!US7?_8[
M;[;]M^SQ?:_+\KS]@W[,YV[NN,\XJ:@#C)K+7= \6ZQJNEZ4FJVNK+"S(+E8
M7@EC39SNX*$!>1R"#P:S)?!>MV?@>T^PO;OXFL[]]3C(;$1ED=C)&"?X=DC+
M[X%>C44 <./!]S8V7@NRM LJ:1=>==R%L%B89 [\]27?/XUA7'AOQ9;^!#X*
MM=*MIH()%6+43=*%D@64./D/(? P<\<$Y[5ZK10!YEK'@N>'Q9K&IKX;AUV#
M4BDL9^V^0]O(J!"K9(!0X!R,D<C%6;'PSK7ABZT;5-/TRRNY8M.>QO+"TE\E
M5W2>:&B,A.<,6!R1G.?:O1** .6\$:;JVGP:U-K-O#;W%_JDEVL<,GF*J,D8
M SQDC:1T[9K!UOPUK%_XGU66\TC^V;2X"#3C+J)BM[4; &$D0//S9.0&)''%
M>CT4 >>>$?">KZ3<>$WO(8U&F:5<6EP5D!P[.A7'J"%)IDWA'6HI[W4[6&%[
MR#Q&VJVL#RA5N(3"L3+NYVL1NQGN!ZUZ-10!Q^AV>NW/CF^U[5--CL+:73HK
M6"(3K*X*R.QW;>,_-VR,8YSFI-;T[5K/Q?:^)=)LEU#_ $)K&YM#,L3[2X=7
M0MP<$$$$C@UUE% 'E=QX'US5M OWU"RL_MY\0?VO%9?:#Y<L?EJGEEP,@XW#
M..H!Z&KFF^#KB5]8EC\-V6B)/IDME 'N3/.[N.26#%53@<<DGGCI7I%% 'E$
MO@W5;E/#^IW_ (<BO);'3O[,N=.-Z%;"D%98W!"GD'*DC@^U7;7P9J*6.GO'
MI%CI[C7X+^2V@F+F.! 1\[L2'?\ W>.@[5Z510!SL>D7:_$:XUDHOV)])CM5
M;<,^8)78C'7HPYKG;?PEJ\?P^T/2&AC^V6FK174J^8,"-;HR$@]_E/2O1**
M/.Y/".KM>S2B&/:WBN+5!^\'_'NL:J3]<@\=:F\5^"KWQ)K&N[62*VOM$BLX
MI6;.)DF>3!'7;RO/N:[ZB@#S;0_"=Q_;VF7$GA"PTI+0M)<7#WC7#.^T@>2
MWR\G.6[<8JI/X<\60>!?^$*M=*MIH()$6/43=*%D@64./DZA\  YXX)SVKU2
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
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
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
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
M;LF+/DJI+\CIQTJMX4NKO3?$FFV6K?\ "06-Y=P2)LO+W[;:7KJNXLDFX[&
M!. %&.* /1M-U"#5=.@OK82"&==R>9&4;'NIY'XU1'B;3&DG1'F=H+]=/D"0
ML=LS!2!P.F&'S=!7G?AB]U'Q/;^$=(O]6U"*";1Y;^XEAN6CENI%D5 ID!W8
M 8D@'GC-0V+7>BKJ-O;ZG<RM_P )M;0/.TGSR1LD(*.1][C@YZXYH ]BHKQG
MQ/J=Y-IOB/6=+N?$MU)92S&+4(KM;6SM_+.-BQF3]Z 1@G8=QS70VMO>>)/B
M!=QW.LZG;V=KI]C=+;6ERT2-(YD))QV.W!'?//04 >BT5Y;9:QJL\=AX*>_N
M3J\&KO!=77F$2M9Q8F$A;K\Z-$F>^XUU/C[4;RPT*UBLKEK22_U"VLGNDQN@
M21PK,,\ XX![$T =0S!5+,0 !DD]JR?#_B2Q\36CW>G)=?9@V$FFMVB68?WD
MW ;E]Q7'ZC82Z)XFM=#M]6U6>PU;3[IIXY[V222%X@I61)"=RYW%2 <5K_"V
MS2T^&VAE99Y/.M8Y3YLK/M)4<+D_*O'0<=: -F[\3:19VES=278:*UNDLYC&
MI;9,Q4!3CW=?IFM>O#[[2A#X3\9>1>7@E;Q1# KR3M(%_?6Y#X8D;LGKWP!V
MKH]3N+WP3X@OTL=1U&^A/AZ[O_)OKEIQY\++M8;N1G<<@8'M0!Z;4<\T5M!)
M//(D4,:EWD<X55 R23V%>2Z/-XEMSX=U-(=:\R[G@%Y<:AJT#VUS'(/FV1>8
M=IYW*$4'C'-=5\5E=OASJ6-QA#0FX"]?)$J>9^&W.?;- $\7Q(\.R20L6OHK
M.9PD5_-8RQVSL3@8E*[<'L3Q[UUM8^NW&AP^%;J?5_L[:(L&Z4,NZ-H^,8 Z
M]L >V*Y>W@?Q=XNUVTFU34[.QTQ+:.SM[*X>V/[R(.9&VX)/. #P-IXH ] H
MKR+3-0U?Q+<^$;&[UF]CBE&IPW4UI*83=K!(JHV5Z$XZC!Y;&,U5N8M3M_!O
MBS5!XCUIKC0+^>'3\W;8"1E6 D'_ "USN()?/ % 'L]%>>Q:?/XC\=^)K:ZU
MS5(+6TCM3!;6=X\(C9XLE_E//(Z'C.<@UCVWB"ZUWP]X9AN[O6;N^FCN&DM-
M((ADNUCD,:S/+O38G /!&2WM0!ZU17C$.JZX= O-.&HZE9RP^*;6PB>6Z$T\
M$4GEY1I,D/@L>I/H<UO2Z5J%MXGUCPQIVN:KY=YH?VJ"2XO'D>"X$A4,KD[@
M#QD9Q0!Z317GWASQ)=^,-<T,Q2RP16.GFYU.-&*@W+DQ+$P']TI*V#Z+7H-
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
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
M4J5VKO8X7!/'2K=GX6T:P.FFVM-G]F^;]D_>,?+\W[_4\YSWSCM6;'X^TQM
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
M;;1&!&;EF7))W':,GK7<6.I0:EI%OJ=ENFM[B!9X=HP75ER.#WY[T 6@ H
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
M4M[;70E1EE63'R[0=P(QSD57?PA#J/Q%U/5-6TBSO-/DL+>&W>YCCEQ(K.6
M4Y(X*\XYKLZ* .2\9>$4U;P9)I&D6MM;M%-%<0VZ#R8W9'#;"5QMW $9'0G-
M8.F^%IYM5-U'X4DTM8+*=%DOM2:XE:5UV[8P)64+C.6;D\<#K7I=% ' GPUJ
MO_""^"],%L/M>F76GR7<?F+^[6+'F'.<'&#TSGM51=,\3Z/X?UCPM9:(+R.\
MEN?LFH?:8UB1)V9LRJ3ORN\\*IS@5Z310!Y_8:)K/@O5WFTW3'UFTNM.M+5_
M+GCBDBEMT* G>0"C @Y!)!!X-;7@'3-1TCPA;V>K01PWPGN))(XW#*-\SN,$
M=L,*UXM8M)M=N='0O]KMX([B0%?EV.6"X/KE35^@#S&^\-:_+:>)-,32R\=W
MKD&I6]R)X]LB>;"67!.05$;'D<]LUN>)-!U'4/%!O;: /;_V%>6>[>H_>R,A
M5<$YYVGGI73ZIJ-OI&E7>I7186]I"\\I49.U02<#OP*GMYTN;:*XCSLE0.N1
MS@C(H XB\\.:LO@SPD+6WCDU303:SM:/(%$I2(QO&&Z X8X/3(JIJ?A[7/&%
MYJU]<Z=_9*OHD^F6D-Q,CR/)*02[>66"J-J@#)/)->C44 >=0V?B;6-9\)/>
M>'VT^UTEI!=/)=Q.6)MWC!0*3E<GO@\CC@FN7U.;5K#X31:%!9VEUIT<\-M!
MJL5VC)<)]H4*%C'S>9T!!X&&.>U>VUQ6J6GA#P]XEL)1X=$^LWLCRPBSM [J
M5QOE(X"XW#+=>: +6G:+?V^L>,KB2 "/4I8VM6WJ?, MU0]^/F!'.*O^#=.N
MM)\%:+IU['Y=U;6444J;@VUE4 C(X//I6C?:G9Z:+<W<PB^TSI;0Y!.^1ONK
MQ^-1Z?K%IJ=WJ-M;ES)I\XMY]RX ?8K\>HPPH X"R\-Z^EGI^G2Z6433_$QO
MQ<>?&5E@:29RX&<C&]1@C//%7/%O@S4?$>K>(5B"107VC06T$SN,&:.9Y-I
M^8#E<G'>O0J* /-M#\-3OXBTNZ?PB^F+9EI9[B]U1[GY]I $*B5AW.6<#CMF
MN_U/3[?5M*N].NEW6]U"T,@_V6&#_.N?OO'NGV6M7NE)IFM7MQ9%!.;*P>94
M+*& )7V-:VA>(-.\1V+W>G2NRQR-#+'+&T<D4B]4=6 ((R* .<\!:!K=E-=Z
MCXD5/[1$,.GP%7#Y@B7[^0>"[EF(Z]*Y"V^'U[8Z.?#[>%C?3"5HTU&75'6T
M>$N3N>)90P8*<%0N"1UKV:LGQ!XBL_#EK;S745S.]S.+>""UB\R260@G 'T4
MG\* .%\4>&-2N=7U&>S\-S?V@ZJNGZQI6H"U*@( !< N"VTCJ%;*X%:QTC7[
M?Q?%>2VOVZ*ZT%+"YNXY40).A=BQ4D$ABPQ@<9KMX9/.@CEV/'O4-L<89<CH
M1ZT^@#S_ ,'^&=6TK5/#T][:B..S\."PG/F*VV;S$.W@\\*>1Q[UFW&A:CI#
MQ:B5MUOX_%%S>65K/<*@O(Y59=BMR Y4D@'^[S7J54]3TJPUFR:SU*SAN[9B
M"8YD##(Z'V(]: .+\-7FH:C\5-;GO[!+)HM*MHA")EE:,&25@'*\!CR< GC%
M6O$=KKMKX\TO7=+T1]4@AL)K:1$N8XBK.Z,#\Y&?NFNFTG0]+T*W:WTJP@M(
MW;>XB3&]O4GJ3]:T* .%ATKQ)KOB)=?U&S@TE["RF@TRU,XG832@;I9"HV@8
M50%&>]<L/"7B"\@T*2XT'4'U6RO[6XO[Z_U83"4(X+F%/,*@'DX(7 &!DU['
M10!YCJWA#6M3MO&.D?8E6+4+Z/4K.[:=1'(RB']TP!WJ28R,XQS5KP]X;E_X
M2FPU ^$Y-*BLXY"\U]J37,AD9=N(@)64#!.68<C& *]$K"TCQ=I.MZ[JNC6<
MDGVW3'"7".FT<DC*GN./U% &CI=S>7>G1S7]@;"Y8MOMS,LNS#$#YEX.0 ?;
M.*Y.*SU[PAK6K/IFCG6-)U.Z:]$<-PD4UO,P&\$.0&4D9&#D9/%;T?BK2YO%
M\WA>.1VU.&V^U2*$^54R!C/K\RG'H:VJ /-=1\+:_KNF>*M7O[2*'5=2TPZ?
M8:>DRMY,0W'#OPI9F;)QP,#DUV%[J4VBVNC0BS\]KFXBLW E"F(%3E@/XL;>
M@[9/0&MJD(!QD=.E &1XIT&/Q/X8O]&DE,0NH]JR 9V."&5OP8 _A7(:FOB/
M6+"*PUOX>:?JU]"I1+R2Z@:VW$8,@#C>N< XVYKT>B@#@?#?@_4M"U7PLLHC
MF@TS1Y[2>=&&WS6>,@ 'DCY6YQV[5C:[X9\0ZM)XBM[[2;W4KBZDF&FW+:IY
M=E#"RX0&(.#N7OE#D]\<UZO10!Q/AG0-3L/$=E>W=KY4,?ARUL7/F*2LR.Q9
M>">@(YZ>]8X\-:_I^DZ3/#I?VJYL?$-U?O:I/&K/#(9@I#$[<XD4X)S7IU%
M'D=QX(O;&XUNV'AB75GOKN:XM+M=4:&%1*=VV9!(I^4DYV@[A[U9O? TNF:]
M]M&@2ZO9S:?;VWDZ??M;-;20J5P TB[HR".2Q(Q[UZG534]2L]'TZ:_OYA#;
M0@%W()QD@#@<]2!0!E>"](ET7PY';SV-O8SR22326]O*\JH68G!=R2S8QD]"
M<XKH*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ KS>/P[;>(/B9XN6\N;Z.*."R"QVMU) -Q1\,2A!)&.,\<GBO2*J0:;
M9VVHW=_# $NKL()Y 3EP@(7VX!/2@#RNPU:XU_P[X2L[MM8U6_EL99Y;*RN1
M;^<JL$$LTN]3@'L#R3D@U#I\NM7OAC4]+AO&CEM?$9MH[&XU9EDFA$:N;5+C
M[V<DGUPI&<5Z)+X'\.36MC;G3S&EBK);-#/)$\:L<LN]6#$$]B<4H\#^&ETV
M?3TTB!+6>59WC0LO[Q0 '!!RK8 Y&#0!D> ;I%N]8TMH-7LKJV:*1]/U"Y%P
M+=74X,4NYBRL5)Y/!["J-WH=IKOQ=U*&\NKI(TT:V;R+>Y>#S#YLOS$H0QV^
MF<9;Z5V6C^'M+T!)ETVU\IIV#2R/(TDDA P-SN2QP.F3Q575?!V@ZW?F^O['
M?=F-8O/2:2-]@R0NY&!Q\QR._?.!0!YD-:US48] T'?>ZC:O?:C"TD=[]GEO
MH[=]L8,N0>A).#EMOUJ:^U7Q%H'ASQ%:1-):QK=6<5O&^II<W%DLS!7!D))4
M$8*ENF[VKTNZ\*:%>:/;:5-IL(LK4@V\<>8S"1T*,I!4]>0<\T6GA30K'2;G
M2X=-B-G=DFX27,AF)ZEV8DL?<F@#A+2+6-%UP0QVUSIMG<:?<F:WO-:%T\CH
MF5EC#,6!!X8CCYAZ55T^TN-.\-^ _$*:KJDNI7]U917;S7DCI+'*O*%"=N!Q
M@@9R,Y)YKT#3/!N@:1)-)9V&)9HO(:26:25O+_N!G8E5]A@5<_L#2_[/T^P^
MR+]ETYXWM(]QQ$T8PA'.3CWH S?'5]'9>&6#W5];O<SQ6\7V #SY7=P!&A)
M4MR-V1C)-<KX5:\TWXF?V7]COM-M+C27N&LKO4S>$NLJ*).6;8<%APQS^%>@
MZMI%AKFGO8:E;+<6SD,48D8(.001@@@]P<U1TWPCH>D7ZW]G8[+U4:/[2\KR
M2,K8R&9F)8?*.N<8XQ0!C^+3+?\ BWPWH$EU<6^G7HN9;@6\S1-.8U4K'O4A
M@/F8D C.VL34HUL=2T[PK9^(KUM/N]6,5U_I+&:U3R#(MN)2=V&(!'.[!QFN
M]UC0]-UZV2WU.U$Z1N)(SN9&C8?Q*RD,I]P150>#O#XT1]'_ +,B-D\GG,C,
MQ8R?WRY.[?\ [6<^] 'G?BN>Z\+KXKT?2=1O19IH:W\8DNGD>TF\TIA78E@&
M S@GL<=:W)=/;PQXU\/+::K?E=1@NUOFN[MY4D9(PZR%7)52#G[N!CCI730>
M#/#]OI=]IR:<IM[\8NO,D=WF Z;G8ECCMSQ6G<:7975]9WL\"O<6>_R')/R;
MQM;CH<CCF@#RSPZ]WHVIZ#/K0U02WDXA76+353=V>I,ZG;OC8_(#U&U>,#G%
M376KWD?P5\0WIU"X6[BO;N-)_.8.F+HJJALY'& !Z5V]AX&\-Z9?Q7MIIBQR
MPL7A4RNT<+'.2D98JAY/W0.M17?P^\*WUU=7%SI$<CW3%YE,CA&<]7V!MH8_
MW@,^] ' >-[:.XM_B?YAD'EQV$B[)&3D1=\$9'/0\5N:W;07'B,:'9VVNZL+
M"RCW6<.IM;Q0;V;:\DQD#NY X'S8 KMKCP[I-W_:8N+*.0:HBI>!B3YP5=J@
M\\8'IBLZ3P%X:D,!;3V!AA$"LMS*I:,$D(Y#?.,D\-F@#SW1+K4==TOP/976
MK7ZI<7VH07#PW;;Y8XO,VJT@P6X4#=U[\&H_$]B(/#WCK1#=7LMAIMU8RVB2
MW<CM%Y@0LNXMN9<DD!B0#SU&:]2L_"VB:>;/['IT4(LI99K94)"Q/("'*C.
M"">.@SQ3[KPWH]ZNIK<V,<JZHJ+>!B?WH487//&!Z8H L-IUN-';309_L_DF
M+/VB3S-N,?ZS._/^UG/O7DGA.V\SP]X!T'[9>V^GZI;W%U=^7=R*TSQJNV-6
MW91>22JD#Y?K7L%C90:=8PV=JC)!"H1%9RQ 'N22?Q-8J^!/#*:4=,32T6S\
M_P"TK&LK@QR=-R'=E/\ @)% &;X3:73_ !AXB\/Q7=Q<Z=9QVT\ N)FE:W:0
M/NCWL2Q'RA@"3C-9EYIEM_PMG6;O=<>:OA])0/M,FW<6E0_+NVD8'3& ><9Y
MKMM'T+3-!MG@TRU6!)',DAW%GD8_Q,S$LQ]R33+SPYI-_K$.K7-F'OX8FA28
M.RGRVSE2 0"/F/7.,T >7Z+IAT3P9X"UJTU#4?MMS=6-O-ONY#$\,ORF/RR=
M@4 C&!GC.<TV:77->F\3ZB;;4&FLKZXM[6[BUD6L5BL7"DQ[@IXPS%@<@^E>
MICP]I0TVPT_[&OV33WBDM8]S8B:/[A'.3CWJEJ7@?PYJU_+>WNF+)--M\[;*
MZ+-CIYBJP5_^! T /CU*_C\!+JD@AEU%=,^T,(6#QO*(MWRD<$$],=JY;0M-
MMK;1?#?B.3Q%?C4;T1/*\MV\B7SR)GR?+)V+R?EV@8VUZ(J*B!$4*BC 4#
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
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ K
MS'5[J"Z^).KV&J^+[S1;.WL[9[>.*_2W5F;?O^]UZ+TKTZN1B\*K<>/]9U;4
M;"TN+.XM+:*W,R+(0R;]_!''WE^M &#X<\8KI<7B(SZI<Z[I%E=P6^FW:A9)
M;F611F%67 D(8@9]^3Q70Q^-?(>]M]6T>[TV]MK*2_2"1XY!/$GWMC(Q&X'
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
MRYE@27S A] V!G\JH>*] 'B;PY<Z8)S;S,5D@G SY4J,&1L=^0,^V: .>O\
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
M=)GCD$Z( 6 9&(##(RI]>]4=.^(J7RZ/=2:#J-KI>K2)#;7LICP9''R@H&+
M$@@-C!^A!K,TGPE<'5OM:>%++1DAM)D#/=FXFDE==HV$':JXSDGDY' J\/"^
MJ#P3X-TORX_M6E75C+=+O&%6+&_![T =;K&IQZ-I4]_+!<3K$!B&VCWR.20
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
M HHKR;5+:_\ $'Q"\1VMSI5GJ<.GQP+;0W>J26H@C:/<9$54;)+$_/G(V@4
M>LT5X_;32ZSIGAC2;V-O$>H?9+B?RDU#R[.6)9-BR2.5W2,!@#@\[CCO6?IM
MU<#09M'EN/LVFMXN6PN%M;QW2&W,:L8EE.&"&3"]OO$=Z /7M>UNV\.Z/+J=
MVDKPQO&A6( MEW5!U([L*TJ\E\<:1H>C^'?$&E:1>7$$LB6,DMA&[&.#-RJB
M1<@[6;TSSM!QWK;M='L_#/Q.TJVTE98(+_3;EKF,S.XE:-HMKG<3EOF;GKS0
M!W]9MAK=MJ&KZKIL22K-IDD<<S,!M8O&)!MY]&'7'-<UXPBCU/QEX9T746;^
MR+I;F22'>56XF15V(V",C!=MO?'M7)C^RM"3Q[:6\]^UJVH6=K$MG<XEWNB+
MY0D;.U<_(3GY5R!TH ]CHKR'2]*,'Q"&AR:9;Z-;:EHUP+BSM-0><L-R!9'!
M4!6Y;!&3UYJYX9U&]\0ZKH&@7<CF?PX)9-5()^>:,F&')[[AND_ 4 >I54U3
M4;?2-)O-2NRPM[2%YY2HR=J@DX'K@5RWCUO/OO#.EW,TD.E:AJ!BO&20IYF(
MG9(BPY 9@!COC%<?XITRQT]O&6@Z>K'28_#QOGM1(S);70+A2O/R[E&=O0X!
MQ0!ZEH6JR:UI<=])IMU8>9RD5R4WE< AOE8@9STSFN;M;GP9;3:7K^G:+:B?
M5[YK*"[ALT23S/WF6)." ?+;GJ<CBM[0M+LK?PI9Z?% %M7M@&CW'G<N6YSG
MG)KR73=%L9OA_P"";9%>);OQ&1<&*5E9L?:5QD'(^48XQ0![E17CGB(S^#_^
M$VL_#K2VL":;9W"1K*V(&>5TD=<YV_(,DCTSVK0T33;S1O&.@&VM-+TF&[25
M9HH-7ENFOXQ'D-M:, LIPV_/0D=Z .Y\3>);?PQ8VUS/:7=VUS=):10VJJSM
M(^=H^9@.WK6?9>.;>;5K33=0T;5])FO&*6SWT*!)7 SM#(S -@$X.,XK/^*"
MW+V'AQ;.2..Z.OV@B>5"Z*WS8) ()&>V15A?"VO:EK&G7WB+6K2ZATV8W%O:
M65F85:7:55F9G8G 8\#% '945X'91ZS>^#!XG>'3K;5FN"[:U<:Q*LL4OFX\
MMHA$0%_@\O.,5VFF>&].\0^//%T^KQRW/V6Z@2"(SN$BW6T>XA00,GC.?2@#
MJ_#'B9/%-G)?6VGWEO9;L6\]P$ N%R064!B0,C^(#J*W:\1\+:=9R:'X!TF?
M?%I>J+=37B+*RK<S(!Y:,0>F-QV]#MJ7Q$ATVV\7Z%I%U/%IEO-I;1".9C]D
MFDG =$).1P%;';/O0![317F=_P"$M(A\=>']!AAF32FL;V:6V%Q(5F;=#]\E
MLL,\X)ZBN:N-%MK7P#XDU6.2Z-[HVKS0Z;,US(3:QQS@*B<],$_7/L* /<:J
M:CI=AK%FUIJ5E;WELQ!,4\8=<]C@]Z\X\106NN^)M>5-)_M,:?'''//J.I&V
MM[(^7O\ W2HI;H=Q8]^AXK,\/P?\)1)X"@U>>XN89=#N7G0S,!.5:(#?@Y;L
M>>I% 'K6FZ7I^CV@M--LK>SMP<B*WC"+GUP.]6Z\;9GL=&O=#2ZN(-('B]-/
MD(F8&&T9$<QA\Y52Y"]>C8J[XRAT_P (Z1K5KX:OI[2ZEAM3<V:3,L5O$\P1
MI@V#Y;,"02#T&['&: /5ZYWQ9XTTWP:FGR:G'<-'>W'D*T*@B,XR6;)&% Y.
M,UR?A_3;W1?'.E10V>F:/;W5M-Y]G;ZK)<FZ4 %9 K1J 5;'S9R0QZUH?$33
M8-8UGPIIMR,P7=U<PO\ 1K64'^= '1>+/%6G^#= EUC45F>!&5!' H9W)/0
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
M?;7CYW3PVR(YSUY SS6M10 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 5D:OX6T+7Y8Y=5TFTO)8UVJ\L8+!?[N?3VZ5KT4 9&H>%
M]"U6"UAOM)M)H[4;;=3$!Y0QC"XZ# ' XXIZ>&M#BL+FQCTBR6SNL>?;K HC
MDP !E<8X  _ 5J44 8]KX3T"RTZ;3[;2+2.TF=9)8A&,2,I!4MZD$#&>F*T'
ML;62^AO7MXVNH4:..4K\R*V-P!]#@?E5BB@"EJFD:=K=G]DU.R@N[?<&"3(&
M 8="/0^XJI%X4\/PZ=<:=%HUBEG<A1- (5V2;1QD=R,#FMBB@#%M/"VC:2!-
MI.DV-O>1H_DR^7@Y8 '<PY(.%S["J_A70+K2I-3U+5&M7U;5+@37+6JD1J%4
M(B+GD@ 9R>I8UT5% %74--LM6LI++4+2&ZMI/OQ3(&4_@:J6?AG0]/TRXTVT
MTJUAL[D$3Q+&,2@C!W?WN..:U:* &QQI%&L<:A40!54= !VK+M_"^A6DADM]
M)M(F-S]KRD0'[[!&_P#WL,>?<UK44 53IMDUU/<M:0M/<1"&9R@)D09PI]1\
MQX]S5'2?"F@:%<O<Z7I%G:3NNTR11 ';G.T'L/8<5L44 5[NPM+_ ,C[7;QS
M>1,L\6]<[)%^ZP]"/6K%%% &*WA#PZ^L?VLVBV)O]_F>>81NW_WO][WZUI06
M-K;7%S<06\<<UTP>=U7!D8 *"?7@ ?A5BB@#+F\-Z+<Z,FD3:7:R:='C9;-$
M"B$<@@=CR>126_AK1+72CID&E6D=B9!*T"Q *S@A@Q]3D Y/H*U:* *[V-K)
M?17SV\;74*-'',5^95;!8 ^AP/RJ!]$TN2RN;)["W:UNI&EGB*#;(['<68=R
M3S5^B@#'O?"F@:EJ8U&]T>SN+P  RR1 EL=,^N.V>E6;30]+L6MFM;"WA:UC
M>* H@'EHQ!95] 2 ?PJ_10!0?1=+DMKVVDT^V>"]<R74;1@K,Q !+ ]3A1^0
MJ'3O#6B:397%G8Z5:06]QQ/&L0Q*,8PV?O#''-:M% &1I'A?0M EDETG2;2S
MED&UGBC 8KZ9]/;I5^>QM;JXMIY[>.2:U<O [+DQL05)'H<$C\:L44 9YT+2
MFBOXCI]MLU DWB^6,3DC!W^O'%0:KX6T+6U@74]*M;KR%VQ&2,$HOH#UQ[=*
MUZ* ,B]\+Z#J-E:V=WI-I);6G_'O'Y0 AXQ\N/N\>E"^%?#Z65S9)HUBMK<J
MJS0B!0D@487(QCCM6O10!E:?X9T/2K.XM+'2K2&WN1B=%B!$HQC#9^\,''-1
M:9X1\.Z-*DNFZ-96LJ%BKQQ ,,C!YZ].*VJ* *2:1IJ:2-)6QM_[.$?E?93&
M#'L_N[>F*JZ9X5T'1HKB+3M)M+9;A=DWEQ@&1<8P3U(]NE:]% %(:1IZQV,8
MLX0EA@VB[!B'"E1M]/E)'THDT?39?MOFV-O(+['VH/&")\+M&X'K@ #FKM%
M&1IGA70=&BN(M.TFTMDN5V3>7& 9%QC!/4CVZ5:.D:>;6SMC9P^19,C6T>P8
MA*#"E1VP.!5VB@"C:Z+IEEJ5UJ-K8P0WEWC[1-&@#2XZ;CWJ9+"TCU"6_2WC
M6[EC6.28+\S*I) )]!D_G5BB@".>"&ZMY(+B))89%*O'(H96!Z@@]167I?A3
M0-%\_P#LW2+2U,Z>7*8XP"R_W<^GMTK8HH I?V/IWV*TL_L4'V:S:-[:+8-L
M13[A4=L=JI7?A'P[?ZH-3N]%L9KT$'SGA!)(Z$^I'8GI6U10!EZOX;T77FA;
M5M+M;QH<^6TT88J#U&?0]QT-7+&PM-,M%M;&VBMK=2S+%$H506)8X ]22?QJ
MQ10!DR>&-"EO+F\DTFT:XNBAGD,0S(4(92WJ00#^ JW<:98W5S]HN+2*2;R7
MM][*"?+;&Y?H<#(]JMT4 4Y=)TZ?21I4UE;R:>(Q%]F>,&/8!@+M/&!@?E5?
M2_#FBZ+;S6^FZ9:VT4_^N6.,?O.,?-Z\>M:E% &)IW@[PWI%PEQI^B6-M,C^
M8DD<(#*V"O![<,PQ[FN.N_AUJ.J731ZA%X?99;A9+C5H;39>SQK('"D!0JL=
MH4L#T[5Z910!6CTZSBENY8[:)9+P@W#!>92%"C=Z_* /I3[2TM["TAM+2%(;
M>% D<:#"HHX  ]*FHH R8O"^A074MS%I-HDTMPMT[K$ 6F7.'_WAN;GW-73I
MUFUY+=M:Q&XEA$$DA0$O&"2%/J,D\>]6:* ,;2O"?A_0[M[K2]'L[2=QM,D4
M0!"]<#T'L.*V:** *FGZ78:5%+%I]G#:QRRM-(L*!0SMU8X[FJ$GA#P[+J_]
MK2:+8M?[Q)YYA&XN.C'U;WZUM44 8NH^$?#NKWXOM0T:RN;H  RRQ E@.@;^
M]CWS5JYT+2;S4;?4;G3[:6\MD:.&=HQO12"" ?3!/'N:T** *-KHVFV,D$EK
M8P0O;V_V:)D0 I%D'8/1<@<>U97B#PX]UI$EKI$.FQ^==?:;JVO+</!=Y^^'
MX)!)P=PYRHKHZ* ./\'^#Y-!U*^U.X@TVUEN(8[>*TTV,K##&A9NI +,6<DG
M Z"MK6/"^A>()(I-7TFTOGB!6-IX@Y4'J!FM:B@"AI>AZ3HELUMI>FVEE"YR
MZ6\*H&/O@<_C6?;^!_"UHY>#0;"-MX<%81\I#!AM_N_, >,<BM^B@#.&@:0-
M1N]0_LVU^UWD7DW,OE#,R<?*WJ.!U]*ATCPMH.@SR3Z5I-I9RR+M9XHP&V]=
MN>P]NE:]% %:PT^TTNS2SL;:.VMD+%8HEVJ,DL<#W))_&K-%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%8WB;Q1I?A+2)=1U2X$:*I\N(',DS ?=1>Y_EU.!0!LT57L+M
M;_3K:\12J7$22JK=0& .#^=<UJ7CN&PN=2\G1]1O;+2CMU"]MQ'L@.T,0 S!
MGVJ06V@XH ZVBHX)H[F".>%P\4BAT8=&!&0:Y+Q'XXO/#<SF?PMJ4]H)D@CN
MHY8=DC.0JX!?<,DXY% '8T5S$?BZ>(Z>NIZ!?:=)?7RV4*321.<E&?=\C'CY
M"/6NF!##(((]10 M%("#G!!QP<5FZ]KUEX<TMK^^,A3>L<<42;Y)I&.%1%[L
M3VH TZ*X_P#X3BYLY[8ZYX9U'2;*YE6&.[EDBD1&8X42!&)3)(&3QD\UUY(&
M,GKTH 6BDW#=MR,^F:"0,9(&>E "T50_MBT_X2 :)E_MAM3=XV_*(]^SKZY[
M>U7LC.,C/I0 M%(2 0"1D]!ZTM !12;AN*Y&1VS02!C) STH 6BD) ZD#MS6
M9H&MP^(-,-]!%)$@GF@VR8SF.1D)X[$J30!J45SFH>--.L=)UG4%CGF32;I;
M2X55 )D/E_=R>0/,7\C71 @YP0<=: %HI,C)&1D=JJZGJ5IH^F7.HW\ZP6EL
MADED;^$#^?TH MT5Q4GQ FL[>/4M2\+ZM8:*Y4?;IC$?+#' :2,,71>>N..X
MKM-Z[0VX8/0YZT +103@9-)N7CYASTYZT +12$A1DD >]*2 ,DX% !12 @C(
M.1ZB@$'."#C@XH 6BBLO5=<ATF^TJUEBD=M2NOLT97&$;8SY/MA#0!J44@(8
M9!!'J* P;."#CK@T +1129&[;D9ZXH 6BBLO4M=@TW4])L7C=WU*X:"-D(PA
M6-G);\%(H U***R[#6X;_7-6TI(I%ETTQ"1VQM?S$WC'T% &I112$A1DD >I
MH 6BBB@ HI 0PR""/:@$$D @D=?:@!:**H:=K%IJMQJ$-L7+6%S]EF++@;]B
ML<>HPXH OT4@(;H0?I69K>NP:''9O-&\GVJ]ALU"8RK2-M!.>PH U***CEG2
M*"2;[PC4L0#Z#- $E%<WHGC*TUR[TRWAMIXVU#2_[30OC"IN5=IP>OSCVXKI
M"0!DG '>@ HK*\1:[!X<T"YU:>*2:.$*!'%C<[,P50,\<LPJ:VU"7^QOM^I6
M;V#I&TDT#.LC1A<]U)!X&>/6@"_16!;^++*ZN]!@ABF*ZU9O>0.P "(JHWS#
M/4B0?D:WP01D'(H **0$,,@@CVH) &20 .YH 6B@$$9!XI 0PR""/44 +129
M'/(XZ^U ((R""#W% "T4@(.<$''!Q1D9QD9ZXH 6BD!##(((]J 0<X(..#B@
M!:*3(SC(SUQ5&PUBTU&^U&SMRYET^989]RX&XH'X]>&% %^BD#!AE2"/:@D
M9)P* %HI"0" 2 3T'K02!U('UH 6BBJNI7<MCI\MS#9S7DB8Q!#C>^2!QD@<
M9S^% %JBC(! )Z]*3(R1D9':@!:*IZKJ$>DZ3>:A*I=+6"2=D7&Y@BEB!^5/
MT^\34=-M;Z-65+F%)E5NH# $ _G0!9HI-PW;<C/IFJ-AK%IJ5[J-I;ES)I\P
M@GW+@;RBOQZ\,* +]%9D^N6<&LMI)\PW:V;7I 7Y?+#;>OKGM[4[0=8AU_0K
M'58$:..\@6=(W(W*&&><4 :-%(2 0"1D]!ZTI.!F@ HK%T[Q'%K%GI5[IUI<
MSV6H;R)]H40J 2&<$YP2,#'J*V<C.,C/I0 M%("#T(/;B@$'."#CK0 M%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
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
M)9.J0!?D "D@ >Q JY%HFE0:8-,BTRS2P!!%LL"B/((8';C&<@'ZBKQ 8$$
M@\$&@#QG1] T74G^&ED]K#)9R:1<33PH?DED\N MO Z_-R0>XYJ'51-I&@>(
MM(TPK;Z5'XF@MWC>9HXH;>1(V=2XR8XRQP<= QKUVRT'1]-,1L=*LK8Q%S&8
M8%387QNQ@<9P,^N!4QTVP*72&RMREV=URIB7$QP!E^/FX '/84 >?>%-.FT?
MQ^+:%-"TZ&73V>?3=+GED#X9=DQ4QJJD<C.<G/?%7O''V;4O$VC:*=+CU2Z:
M&:Y2VO;KR;/:-JEG&UC(PSP,'&2:ZS2M!TC0TD72=+L[%9#EQ;0+'N^N!S2Z
MIH6DZXD::KIEI?+$=T8N85DVGOC(XH \8T^95T*\TR::VBT(>+$MKU+.9C;Q
M0&)24#'!$9EV@]!R>F:O:W9Z'INO>+[70##'"OA&=I;>V?\ =Q.6/0#A21@D
M#V/>O2=7\-B729;;0UL-/EDD1Y%:S1X;A5&WRY5XRI4 <<C QTK-\/>"18ZA
M>WVIP:4/M%H+);&PM/+MDAW%F!4_>+$\Y X&* .-US0H-)TKPC9:?:VHM-6G
M5M2-Y</''=S"$M&)G 8G<V3C&"0!5;4!JOA_0O&L.F3:99B.VMV>QTJ>5ULV
M9\22 E $S'DD+R-N<5['=:;8WU@;"[L[>>S*A3!+&&0@=!M/'%1Z?HVEZ39M
M9Z=IUK:6S$EHH(516)ZY '- 'FNB:6^D>,=!:S3P[ID=S#,)(=,NYIFOHA&2
M&8&, E3M.]CGJ,G.*P=-\-:9_P *_P# VHB)UU"]U*W@N+M96662&0NK1[@<
M[-ORX'&*]CTWPWH>C32S:7H]A92RC$CV]NL98>A('3VJ==*TY+6WM5L+5;>V
M<201"%0L3#H5&,*1G@B@#R;7X7\+Q?$&T\.)]A@2SL)EC@)58M[.LKJ!]T[!
MDD>F:NZ)I;Z1XRT V:>'=,CN89A)!IEW-*U]$(\AF!C )5MIWL<]1DYKU$65
MH+B><6T/G3H$FDV#=(HS@,>X&3P?4U3TSPYH>C32S:7I%A92RC$CV]NL98>A
M('3VH \ATK0M/L?AAX3\0P0;=9^W6?\ INXF4JTX0IG/W-IQMZ8J[<Z3H\1^
M(<:W-II-P]_!$+ED. CK"Q5]OS"-W.&/^T:]8&E:<MC%8BPM1:0LK10"%=B%
M3E2%Q@8/(]#3)-#TF:\N+R72[)[FYB\B>9H%+RQ\?(QQDKP.#Z"@#A_!"1Z3
MXQN]'ET2RTR]EL%N#_95R7M)45]N[RR 4?+=3U&>>*F\4Z)8>(/B=H=AJ</V
MBS_LNZ=X2Q"N1)%C< >0"<_4#TKL-*T'1]#21=)TNSL1(<N+:!8]WIG YJVU
MI;/=I=M;Q&YC0QI,4&]5)!(!Z@$@<>PH \4GT^;5;KQA<7]KH326-Y-"ESJ%
M[+%/80(!Y1C"H=@VX8%3\Q)K<TJTM=?\3Q6WC"2VU#R=!M)K/SLB*4MN\Z95
M8#YLA.2 0".E>@W_ (:T+5+V.]U#1K"ZNH\;)I[='<8Z<D9J74]#TG6DB35-
M,L[U8CNC%S"LFP^V1Q0!Y-X>FMH-*\%31W1>R'B2^1+B23.]3]H"$L>I/'UI
M_BR\ANI/B4;>=9%CBTM"4;(#!SD<=Z] T3P?9V/AJ71-3@M-0MGNIY_+DA!3
M#RLX&TYZ;L?A6E#X=T2WM)+2'1[".VD54>);9 KJI)4$8P0"21Z9H X2'1;>
M\\:^.M7^R_:=3T^2%]/#DD12_9$(*KTR3M_(5RVC6-PNA>&M;@?0+6^N+FW/
M]IB]G>[NI&8>9%(HC^8M\RE2<+^%>XQ6EM!///#;Q1S7!#32(@#2$# +'O@
M#GL*H0>&="MM5;5(-&T^+4&))N4MD$A)ZG=C.30!YC?Z?HFJ:!X^U+7S'_;%
MK<W<232R8EMHU7]PL?.55A@X'WMQSFO2=!F2V\$:9/(6"1:;$[%1DX$8)P/6
MIKWPWH>I7RWM]H]A<W2KM$TUNCN!Z9(SBM&**."%(8D6.)%"HBC 4#@ #L*
M/!Y8X8=-\,:]9Z7I]A]KU2U:"^EOS-J-R'D&[S"% Y4G<"Q Z8KO? VFZ99^
M-/&CV]M;Q70U!5&P .(VAB8^^"Q)^M=+#X1\-VTDLD.@:9&\K!I&6T0%B"&!
M/'J ?J,U>32M/BU234X[&V2_E3RY+I8E$CKQ\I;&2.!Q["@#A-4TW3/^%PR7
M,UM;_:6T!Y4=@-QD$FS</?;Q]*YK2= TW2O ?@/7+.W\O59+ZP62[#'S'21@
MK(3GE-IQMZ 5Z_=:3IM]=V]W=V%K/<V^?)EEB5GCSUVDC(S[4HTO3Q:6]H+&
MV^S6S*T$/E+LB*\J5&, CMCI0!XW=65QK-WXRO=2M]#>>SOIHQ=ZA>RQ3V,*
M@>4T85#L&W# J?F)->K:/$VH^#;&'5'BOFN+%%N7VG9/N0;CA@#ALG@@=>E2
MW_AK0M4OH[W4-&L+JZCQLFGMT=QCIR1FM2@#Q?P5;V=MIWPR-G'$C2W%V]QY
M>/FD^S2 EL=\ ?D*I1>'M.;X;Z9K(CD759=;$7VU)665$:\:(HK Y5=I(P..
M<]:]DM= T:QD62TTFQ@=96G5HK=5(D8;6<8'WB.">XJ4:3IPLTLQ86HM4D\U
M(?)78K[MVX+C .[G/KS0!Y1XGM3X1OO%UOX7A^P(WA^"Y,=OD!7\Z1'D '1@
M@/(YXS5C1-*;2O%?AJ6Q7P[IJW(<%=.O)IGU"'RR3N'E@-@X;>QZCKS7JAL[
M4W;W1MH?M#QB)I=@WL@)(4GKC))Q[FJ6F^&]#T>YDN=,T>PLYY1AY+>W1&8>
MA('2@#4HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ K
ME+SQ-JUQKM_I?A[1[>^;353[7+=79@7>Z[A&F$;+;2"2< 9%=77'SZ)XATKQ
M%JNI>'FTV:'5?+>:&^=T\F5$";U**=P*@94XY'7F@#E=<U>Y\;:KX-2WT\/I
M5\;EYK6:^D@8RQ@JZOL4_<()'/S'TZUU/Q'U'5M,T.QDT@())-2M8G)G,1VM
M*HVY"GAONGT!/7I46D^!KC2;CPLRWD<XTHW<EU(P*M-)."25 X W$\$],=:U
MO&6B7FO:"MMI\D"7D-U!=1?:,B-FCD5\,0"0#C' H Y6UUCQ-#XW\6QZ?I,%
MZT26<LB3WQCCB/D E(SL.23GG"CC)ZUHR_$1+FRT+^RK2![W5[4W:I>W0@BM
MXQC)=\$D[B%  .>>E:NBZ%?V>MZ]J=Z]MNU1;8A(68A&2+8W) XW=/;TKF(_
MAQ>V>F^&Y$BTC4+_ $JQ:RN+:_0M!.A(;*MM)5@1P=IX)% '5^%O$R^(H;V.
M2".WOK"?R+F**83)DJ&5D< ;E(((X!Z@CBJ5WXJU:;5]3M-#T2*_@THJMW++
M=>4SR%0YCB&TAF"D=2HR<>]7/"6AW6C6MVU['IL,US-Y@@TZW6.*%   @(4%
MSU)9O7@ 5Q^JZJ/#7B3Q,FGZ_I%B+G9<W,.IADDBD,0'F0#I,"%'']X8SVH
MT(?B'J>I1:"FD^'H[B[U>P>]6.2\V)"%900S;.1\W7'7''<6M>\9ZUH\6H7G
M]AV:6-@"7-YJ'DRW&U06,*["".H!)&2.E4O 7AF_M[3PEJEQMB6UT-[66%\B
M0/(T;CC'8*<YYS52_P#AYJUU-XAC%OH5P^JRS/%JUXK27-O&XP(PNW VC@$,
M .N.U &Y/XRU*[UV'2="T6*ZDFTR'4EFNKKR41'9AM;",<_*,8ZY/3'.+JOC
M'6]4TWPG?:39);O=:NUK=6TMX4_>1B53$65#E"4)W?[*\')QT6@>&+W2]>M]
M1N)H&1-#MM.98R2?,C9BS#('R_,,=_:LE_!.LVWA_3H;*>P?4+#6Y=403,XB
M=7>4[20,@XE].HH 1O&']CC4FLM'FNIYO$G]F>4UX?GD:)2'!881>@V]!R?:
MKH\=3Z8=<B\2:;'9W&E6B7O^B7!G2:)BP 4E5(;<NW!'>H3X)U!KEI3<6P#>
M)EUG&6_U0C"[>GWLCZ>]+XN\+QW<WB/5-0G*:;<Z*EJWD(SRQM&[R;PH'(&X
M' Y.#0!-%XMU^UUO1-/UCP[!:IJ\K)'+#?>;Y.V-GVN"@^;Y>Q(Z\\<['B7Q
M VA06<=O9F]U"_N!;6EMYFP,Y!8EFP=JA5))P?I7 VVKZEXA\;>#HY-8T344
MMI)KB0:2S/\ +Y#+YLN?]7DL %]6//%=UXJT*[U9=-O-,GAAU+3+H7-N9P3&
M_P K(R-CD JQY'(XH YO7_%NN0Z'XCTNXTV"RUNUTN2]B>&\9HGAP5:1'V A
MT/\ "0,G'/.:W? NGR:;X*LU6SC@N)8A,R"[>8.Q488NPR"< D8P/>LNY\):
MWK;:YJ&K2V$-_>Z1)I=I!;.[Q0J^26=RH+$MCHHP!WKL=,M7LM)L[21E9X($
MC8KT)50#C\J /(DU_P 22^%M%O+J$SW)\5&*)8KPEI_WDX,;$J J @*.HP,X
M'2NS3QS-IAUN'Q+IT5E/I5FE\?LEP9TFB8L!M)52&W*5P1UJC9^"=:A@L[*:
M>P-K8Z__ &I!(C/O>)GE9E8;<!@9 !@XX-:&O^"&\0:MKDEQ<)'9ZEI$=@NW
M)='61WW8Z$?,O?L: (M-\=W3ZKIEIJUA86T>J,8[=K34!</%)M+!)5VC!(!Y
M4D9X]ZZ#Q1K<?ASPQJ.KN QMH2R)_?<\(OXL0/QKF=&\):M#J^G3WFG>&+&&
MS):273K0&6Z;&!]Z,>4,\G:2>,9Q6SXK\-R>)Y=)M)C VD0W?VF^ADR3.%4[
M$QC!7<03GT% '-^ Y+_P]J]WX9U"^:^N;BRCU.WDEFW9D*A)TW<X <!@.P>K
M9^)D"V/A>X;3F#:S+Y4Z>;_QYX=8F+''($CJO;K5B_\ A]86NIZ/JOABPT[2
M[VQNP\ICB$8F@8%9$.T<D@Y&>A%9LWPUN)KGQ6QO(1#J$3#2UYS:N[^<Y;C_
M )[!6XSP* -Q_%M].FIG3-%:\-KJ(T^)O/V([!09)'.T[$4DKD;B2.E99^(U
MQ9V?B,7^G6;7NBVBW96ROO-BF1MPQNV JP*\@CTIE[X"U"3P=HNF+)97ES9W
M?VR_M[IF6WOI&W-(&(!.-[DC((X&15*7X=:M<0^(P%T6Q75M+6RAMK)62.W9
M68\G:-P.[); /;'&: -M_%^N10V$$OA^%-5U2=EL+4WOR^4J;VDE8)\NT<$
M-S@"HO!M]J=YXW\7)JEN;6:(6:^0LYEC'R/\R' X/!Z ^O2M/Q#H%_=W.C:I
MI,ML-3TEGV1W)813(Z;70D E>@(.#@CI3/#&B:U9:]KFL:U+9&74A;[(;0L5
MA$:L-N6 SU!SWYX% &1J&H:[!\5[RVT>RCO-VC0.5N;HPPQ?O9>>%8[CP!@=
MN3Q5_3O'@O;C1HY=-:V6_N+BQG+R@FUNXL_NC@88-M;!R.@XYIVI:-XC@\:S
M^(-%;3)8IM/BLWMKQW0EE=VW[E4XQO'&.<GIQ7/>)-+A\,_#J6WN]2@;Q%/?
M'4K5D&#/?&4.%B0G)&2$^AR: .XT/73K=SJPCM]EK97C6D<V_/G,@&\XQP Q
M*]3G::\Z\2:SX@:/XEPS%8[2SM8_L[QW;%H<Q@KM7:,;@2Q.>#Q\W6O1O"^C
M?\(_X9L-,+;Y88AYTG]^5OF=OQ8L?QKE]>\&:SJ-UXNCM9[ 6>OVD:*TK.)(
MI40(,@*05(YSU]J +VF^*M6CUO2M-UG18K.+5(I&M)8[OS74HFXK*NT!25R>
M"PXQ[UE#XHDV/]N?8+,>'_-V>9]O'VKR]^WS?)VXVYYQNW8YQVKI=3T">^\0
M>'+]9(A#IAG\Y&)RX>(H-O'J>^*Y"S^'&I:?8QZ+;V?AHV<<OR:K-:+)=B'=
MG:8V0HSX^7<6QCG&: .Q\:ZW-X<\%:MJ]LH:>VMV:+(R-YX4GV!(-8@^&]M)
MI"RG5=2'B$QA_P"UOMDI<38SG9NV[,_P8QCCWKK-8TJVUS1;S2KQ2;:[A:%]
MO4 C&1[CJ*Y$Z3\0&T?^PCJ.C" Q_9_[67S1<>7C&[RL;?,QWW8SS0!H77B'
M6$U=?#^DV-MJ6I6UI'/?7$\QMH4W9"@ *YW,58XZ =ZHR?$.9]/TQK31'DU&
M[U&33)K-[@)]GG16)R^""N5'(_A.<9XJ=O#.LZ'K0U+P[+:W0FL8;.YAU.9P
M7,60DGF*K$MAB"".?6J]CX&OK9]'N)KRWENX=8FU6_<*55WDC=2L8YX&Y0,]
MA^% $+>.O$@76H1X9M3=Z'\]]_Q,"(V0QB1?*;R\LQ7/#!0..>>+K^--2O\
M6K33-"T6*Y:YTJ'5!/=71A2-)&8!6PC'/RC&/4],<VCX8NS=^,9O.AVZY&BP
M#)RA%N(OFX]1GC/%<O:67B#2/'UG8:5_9\]Q:>%K2">.Y=TC?;+(NY6521@C
MN.0>U '10>,K[4-%AGT[0RVH&[EL[J">X"16<D>=YDE"GY>!@@<Y'2J'_"R)
M+?0?$5W=Z;;R7FAR0K+'9WGFQ3"0C!1]H.>3P1U%5+KX=ZD;339';3=4G2^N
M;_4+*\W):W,LW<8#?<QA<@]^E-/P[U:32_%-N7TFV;6?LIAAM$9(K?RCRN-O
M(P!SCDD\"@#;C\5Z[#K*:7J6@007-W9S7-@(;WS!(T>W,4AV#:WS+R-P^M2V
MWC>*^TWPS<6=IYL^N2!1 9,&!54M,2<<[-I&.,G'2KNJ:/+/XNT77/.ACM=-
MM[I)@Y()\P)@CC&!L.<FN4\!:9;77C+7]9L;M+K1;>9X=,:,YC#3;9;C8>A&
M_ !'N* /2J\_^)0UU+>TN+?48[72XKVS#0PJ?-G=IU4AFZ! "#@<D]>*ZS0[
MO4;N*^;4H(XC'>RQ0&-&4/"IPK$-SGKST.,CC%5O%NB3^(-%CLK:2..1;NWG
M)D)QMCE5R. ><*<4 4O&5R^C2Z1K\3,JV]Y':W2YX>"9A&<CU#%&'T/J:G\=
MWL.G^#[NZN())XTD@!CCG,+',R ?..1@D'WQCO53QW$=5BTGP]%\TE_?Q22
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
MJ$W(P1MRD $KQR.O-=;X?TR31]!L[":6&66%,220P+"C,222J* %&2?_ -=
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
MUMV2TB,,3 96%2%('LM>26[7VB_$3PEX1O\ S9DL+JXETZ[?GSK4V\@56/\
M?0_*?4;35#R="?X5:AJE[]G'C!9IF><D?;4OA*0B*?OCG: HXV]J /;)+B"'
M_6S1IR%^9@.3T%2UYCIWAS3=?\9>,GUW3K>\G2*S3;.@<1LUL-Q4'[IR!R.>
M!5KP?=^+9O WAF32X=*N+=M/B\Z2^N)5EW#(. JD$;0.IZT ;6H>*I?[>N-,
MT+0I-7O[-%%U*)4AC@W<A#(W5B,': >V:O\ ASQ)'KZ7<3VD]CJ%C+Y-W9SX
M+1,1D$$<,I!R".M<WX5U&R\/^)_%>D:K=0VEY<:FVH0&=P@G@D1,%2>NTJ5.
M.F*I>+O%5OK_ (6U==/\[^Q[74+6VO=0A;Y)H"Z^?L8<D*#ACTP30!Z1%<0S
MJS0S1R*IP2C @'\*!<0-(8UFC+A=Q4,,[?7'I7F&HVVB:?XQTZ+PI'9PK-I=
MX=1CT_:(VA$8\IG"\9WG /4Y-8UIX6T4>%OAK.+"(3WT\"7<P&'N$>W=F1VZ
MLIV@;3Q@8Z4 >T)/#+$)8Y8WC)P'5@0>W6EBFBF#&*5) IVML8'!]#7BOB>S
MT[2K+QUI\<:66DQ:EI,C16X\M(@S1&1E ^Z3C/'I6UJ$5EIOBQ%\"Q6B3MH5
MX]S'8!=A("_9F8+QNW[@#U(SVH ]/6>%YFA65&E3ED# L/J*Q(_%$-[!J+Z9
M:27<MA?"RECWJA)RFY@2?N@/GU.TX[5Y1H=I&NF^$KZVN_#=K=R74!6ZMA*]
M]<.?]:DF 2Q;Y@V[@>V*L3V>E6>A>+H[6WLX;M?%-NI6)%5Q%Y]N5&!SMR6Q
MVR30!Z@_BB&4ZW#I]K)>7FDLJ/ '5/-8HKX5B<=&')QS6HZV,-PES*EO%<2?
M*)&"AS[ ]37CVO6>E6ME\5Q#;V<-Z I 1%63RVAB9NG.TN<GL3SUK>AM?#VH
M^,_%2^+DL99(5@%JM^5VQVAB!+1[NGS[\D<Y% 'I4DL<0)DD1 !DECC ]:5'
M21%>-E=&&0RG((KQGPUI\6OW_@:+6X3>P#3=0>-+L;A+$LR"$N#][Y-AY] :
M[/X=V\5C_P )186R"*TM=<F2"%>%B4QQ-M4=AEB<#UH T_&/BV#PAI4=Y):3
M7DDLA2.WA(WL K.Q&>P56/X5N6UU!=V<-W!(KV\T8E1QT92,@_E7GFI/K/B#
MXDSRZ/::==VN@VQM66^G>-#/, SE=J-DA JG/3<:YE+FYL?""^$M=*1P:-K5
MM!J021FC_L^0EXR6(!*9*H3@<+S0![5'<P2H'CFC=""=RL",#J:59X7W[94.
MS[^&'R]^?2O'=5A\.0>+/$D?AT6:Q_\ "(79GCLMOE*^Y<<+\H8C&<=L4NN:
M)::/X%\*+86ME;VNH7-H=5FN=PCN#Y3%?M##DJ7(SGC)':@#V**:*>,20R)(
MAZ,C @_B*2.>&9G6*5'*'#!6!VGT/I7BFHQW^EV?C#^QKK28)1I,;3V6AI((
MXCYF#+G&U7\O?P#G !QWK2T.Q@L_%OAF33[CPS:&19 (]'61GNX/+)(DP,$
M[6W/W'7)H ]9%Q TJQ":,R,-P4,,D>N/2EBFBG4M#*DB@X)1@1GTXKPRQ\-:
M0WPU\)7QLHQ?76LP137:\3/&\[1LF\<[2AVXSC%:?B2T;P_/X\MO#5NMBIT:
MTF\JT38JDO(LCJJ]#L!Y'/% 'K\<\,S.L4J.4.&"L#M/H?2D%S 95B$T9D8;
ME3<,D>H%>3Z'8P6?B[PS)I]QX9M#(D@$>CK(SW<'EDD28&" =K!G[CKDUEV.
MA:9:?"#1M>ALHEU=-0MY%OMO[X$W83&_KMVG&.F* /7K#7;/4M6U/3;<MY^G
M.D<V<8)9 _'/. 1GWK3KSSPRFB:5\0/'5Q(NGV<T4L,C2,$C9(C!&SL3U"EN
M2>F>3S7H,<B31)+$ZO&X#*RG(8'H0: .3U'QG=646C0)H;R:KJC2!+)[N-!&
M$!+%I.1TQC'7-;VMZU9>'M'N-4U!REO  2$&YF). JCN22 ![UY'X7TG3;T_
M#62ZT^UG=X[\,TL*L6";F0$D=B21Z$YKN?B7#,?#]A?QPO/#IFJ6U]<Q1KN9
MH8WR^!WP#N_X#0 VX\<:KIEJ-2UCPC>V6D @R7/VF.22!2?O/$IR ,\X)(KL
M#<0*%+31@-C;EASGI^=>?>,_&$:Z#)K.@>-=)AC2V9HK3R8[AKJ7!*J/F!!/
M Q@XJ*RT>S\0_$QKC6[*.XFBT&RF$<R?*DI>0EMIZ,#G'IDT >C&Y@6<0&:,
M3$9$98;C^%$MQ!""99HXP" 2[ <GI7@'B&XLKGP5?:]:6&B6?FWK20W-S.9M
M4>43]<X&P\'Y<G"BO0+?P[I&O_$SQ<=6T^"^6*WLEC2X0.J;HWW$ \ \#GK0
M!V-[KMG8:WINDS%OM.H"0Q8Q@! "<\^X J^9X1.(#*@E(R(]PW$>N*\8\/0:
M=</\+KO5(K620VMU$)KE5))3'E+N;N#]WT/2L>&VEN?"-]J&H7/AVTU<7LAG
MOIQ*VHP7(E(4#:"V1\H55XVXXZT >_RSPP;?-E2/<<+O8#)]!4E>.ZE;3:C\
M0/$,>KIX<G,-M;B!-;W ) 8\NT0Z ;]^3U! KN_AYYG_  @>E>9?"^Q&PCN
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
M)/S*O'4Y)(JG>?$"^TW2-4^UZ1&=8TN\MK::UAGS'*LS*$='('!#'@C@C!H
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
ME!R/QH Y^W\+7>F>+=.U'39K8:?#I::9-!,&\P(C%D9".,\X.?2M#5-#EO\
MQ/H.JI,BQZ:;@NA!R_F1[1CZ5<@UO2;F[6T@U2REN73>L,=PC.RXSD*#G&.]
M%UK>DV-TEK>:I96]P^-D,UPB.V?0$Y- '+Z!X'NM(F\,O)=PR#2(;V.0*#^\
M,[JPQ],<TMWX(NKCPGXKT=;N$2ZU>3W$4A!Q&)-N WN-O:NJO-5T[3@QOM0M
M;4*H9C/,J8!. 3D],@BI([^SE, CNX'-PI>';(#YBCJ5]1R.GK0!R.M^![C5
MCXL O(HQK5G;V\1*D^6T0?EO4$L.E1WOA+69]7@UY%T.?4Y+1;6]MKJ%VMWV
ML2KQGEE(W$<@Y'TKMDGADFDA26-I8L>8@8%DSTR.V:DH X8>"]5@M-+O;?4;
M(Z[I]S-<*?LPCMF64;7BVKR% VX;D_*,YK2\,Z#J^GZYK6KZQ=VLT^IB#$=L
MC*D(C##:-W)^\.>YSP.E;5IK&F7]S+;6>HVEQ/%_K(H9U=D^H!R*6'5=.N;K
M[+!J%K+<;2_E),K/M!P3@'.,@C/K0!@:SX6NM1\5C44FMC876F/IE]!(&WF-
MF+;HR.,\XYK-C\'^(KK3M,T'5=3L)-%L)87,D,3BXN4A(,:."=J\JN2,YQVS
M6[K&MZM;ZM%IFCZ)]NG,!N)9IYS! BYP%#[6RY.?E X')JG%XVBF\+6/B'[&
MT=F]S]GO5D<;K7YS$S<<,%D R?[N3VQ0!L:;<:G+JVKQWD<:V<,J+9NL;*64
MH"V23\V">HX[=0:RM4\.ZC<>,4UFRN+402Z<VGW,4RMN"EBP9".,Y/.>U=%>
MSO;6%Q/&B.\43.JNX16(&0"QX4>_:J8URQ@TZ"YU*\LK)W@2617NDVIN'9B0
M",Y /0XH P1X-N1X0\,:+]JB\W1[BSFDDP=L@A() ^N.*S[CP+JMI=ZLFD/H
MAM=2N)+D37UH9)[1Y/O[.SC.6 .,$]Q7<-J%DEA]O>\MUL]N_P"T&51'M]=V
M<8K(U7Q5:V5GI=W8M!J$%_J,-B)(9P57S&QN!&0<>E &O:6:VVFPV3MYRQPK
M$S,H&\ 8)(  &?0#%<;8^'/&'AZP.C:#JFE/I:$BUDOH9&GM4)R%^4[7VYXS
MCWKM/MMIY$T_VJ'R82RRR>8-L97[P8]L=\]*BN]6TVP,(O-0M;<SG$0FF5/,
M/^SD\_A0!R:^"+[1UT6[T/44EU+3H);>5]0W,MVDK!WW$<J=X!&,XZ=*BF\"
MZC?66HSWU_;-JVI7]I=3-$C"&..!U*QJ#R>%/)ZENU:V@^*IM=L-%O$L888]
M0>=9 UT-T7EE@-H(!?)7G&,9K8CUS2)KN.TBU2R>YE7='"MPA=U]0N<D4 4U
MT.5?',FO^<GDOIJV7E8.[<)6?=],-BN"DT'6/#VM^!]+T^[M&OH%U-]TR,8I
M%9E?:<<CANOJ.AKTRYU?3;.ZBM;K4+2"YE&8X99E5W^@)R:LQ2Q3Q)-#(DD;
MJ&1T((8'H01U% 'GVH?#_4M4T^\N;N]LI=6O-0@O9XFB;[)(D(VI PSDICDD
M]3VJ2#P-JC:KJ%_/+I5LMWH\NFI:6,!2.$LP(;/\7?)P.W'%=+K_ (B30;O1
MXI8D,>H79MWE>38(0(W<L>.?N8[=:OPZOIMQ8-?P:C:2V:YW7"3*T8QURP.*
M ,&;PI<2Z/X3LA<Q!M$N+>:5L'$@CB:,A?J6SS7/:9866N?%Z]U/3KH7&F64
M:S7"H/W8U#:T7![L(NOH2*]%FN[:V95GN(HBP9E$CA<A1EB,]@.3Z5E^%_$=
MAXHT5=2L-JQM(ZF/<I92KE?FQT) S]#0 WQ+INJZA!;G2[FT!B<F:TO8M\%T
MA&-KXY&#@@CN.0:I>#/"LGAI-3DE^QQ/J%P)S:6$92W@PH7" ]SC).!DGI6U
M<:YI%I(([G5+*&1G\L+)<(I+\?+@GKR./<5+?:G8:7")M0OK:TB)VA[B58U)
M],DB@#GM4\.ZO;^))?$'AN\LXKJYA2&]M;U&,4X3.Q\J<JP!([@BJ,O@;4-<
ML]9?Q'JJO?:E EO&+-66&T5&WIL5CECOPQ)Z].*W-<\6Z7H*:6]Q<1,FI7*V
M\+B50H!!)D))^Z .H]1ZU)XIUW_A&_#5YK MQ<_9PI\K?MW;F"]<'USTH R(
M?#_B'5-9TF[\1WFG-!I4AFBBL8W!GF*% [[ON@!B=HSR>M0)X'NE^&]GX8^U
MP^?!/%*9L':0EP)2,=>@Q72QZIC4=0@NA;06]L8A',;E27+CHR_P<X S][/%
M \1:(;>:X&LZ?Y$#!)I/M2;8V/0,<X!]C0!R/B?P3K/B(ZA9SS:-=65TY,%U
M>6I-U8J0,K&5P#CDJ20>><U?N/#>O6'B2;5-!O[';>6<-K<B_1W93%NVR*5(
MW'#G(./K6]<ZL(KG3O)-K+9W6]GN&NE78BH6#*/X\XYQT'-5?#_BS3/$.A/J
M\$\<5NCR+)YDJ_NPCLN6(.!D+GZ&@#$\/^!KO1F\+>;?13?V-'>)*P4@R^<P
M((],8YK)B^'>M0Z1H=E+/H]\FBW$Q@MKF)_)N(W& 9!SB12200".:]%LM1L=
M2MOM%C>V]U!DCS8)5=<_4'%8LGC"P?Q!I&EZ?-:WRW[SQR2P7"MY!CCWX(&>
M3TZB@#FY/AYJEQI_BB&>]T])-:2V"+;P-'%;F(_= YR,8Y[G/ KK-1T.6]\6
MZ)K*S(L6GQ7,;QD'+^:$ Q]-I_.E\1>)[#PT-/\ MTBK]NNTMDW2*H7/5SD_
M= Z_4>M7;G6=+LKB*WNM2LX)IO\ 51RSJK/_ +H)R?PH R?!.AZAX:\.QZ/?
M3VLZ6K,MO) K*6C)R-X/\7)Z<5T=%8OB+Q/8>&AI_P!ND53?7:6R;I%4+GJY
MR?N@=?J/6@#:HKF['QGIT^H:K:7UQ:6'V*]^R1--<JOV@^6CY ./[^,#/2MJ
M^U*QTR 3ZA>VUI"3@27$JQKGTR30!:HID4T5Q"DT,B21.-RNC AAZ@CK3Z "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "O.+S^V_$
M7Q*NKK1'T[[/X?@^Q@WR.Z&>4!I"NPCD($4Y_O&O1ZC=H;:-Y',<29W,Q(49
M]2: /$S]JTKPY/X2UA4DMM$UBUN+Q(58QOILC[^%.245N".<!:N:G>>'+[QE
MK<WAYK25/^$1O!/-9@>4S;DP,KP6 Z_@*]/U;3O[:TW%EJ,ME.65XKRU()!4
MY /9E/0J>"#5#1O"TMEK$VKZIJ7]HWSVWV1"MNL,446[<5" GDG!))/0=* /
M/];TBWTWP)X)EM(;"RL&EMI-1GGM?,B)\DE'G"E2R[VY). 2":I:G!=76G>,
MYM%U>QOY7TZ%+E=%L6CMSB3+'<)&#2>5O! YQBO;RB&/RRJE,8VXXQZ8IL,$
M5O&(X(DB0=%10H_(4 >4:"+2Z\:>')+#7M!N'ABE(BT333'^X*8VS-YK!%SM
M(##.X5DVNA:7)\*/#4KV%NTMSKL(FE*#>X:Z9&!;K@K\N/3BO;(K:"!G:&&.
M,N<N40#<??'6G>5&$">6FT'(&. : /(/&EA+:ZCXUM="MQ TNAV;O';1XW*)
MI!(=JXR?+##UQQ4^@BTNO&OAR2PU[0;EX892(M$TTQ_N"F-LS>:P1<[2 PSN
M%>M;%#E]HW$8)QSBHXK:"!G:&&.,N<N40#<??'6@#QBWTG3X/@A9:C%9P+?#
M48IA<A!Y@?[:%SNZ_=X^G%=7HEYH^D?$3QR]U+:6LJ""Z.["OY(@4R..Y7=U
M([]:[W9" (=L>.H3 ]?2H[NQ@O()HY%P98FB:10 X4C!P: )()XKJWBN('#Q
M2H'1QT92,@_E7COA6TMI[7X6M-;Q2%DO02Z Y C<@<^AYKV*WMXK2VBMX$"0
MQ($11_"H& /RJ."2SF.VW>!S"<8C(.P_ATH YGXC6-W=>'+:ZL[>2ZDTW4+>
M_:VC&6F2-P64#N<9./:N=\6>.M.O=(:_\.>.Q:W8@80:=;0132SS8.U6C9&=
M3G Z"O4*A6TMEN#<+;Q"9NL@0;C^/6@#SS3--BU;XF13ZW9Q7%Y%X:M'87$2
MG9*99-QVD8#9'IQS7!^)-3M+SP-K4UN=!TXO=S/]@,;SZD95F.6=R^4/!;.T
MA5QSBOH"62"W!GF>.(8 ,CD+^&334@M'>29(H&=QM=PH);V)[T <+I>D:9JO
MQ&\9RWUE;W9\BSC4S1A\*T1W 9Z9P,_05R_AJ2QA7X6W6HM H:QN8%EGQR_R
M"-<GOG.T>O2O9E$0=@H0/@;L8S[9I#;PLB(8HRJ'*@J,*?44 > K&#X6U6RU
M;6M$M-4>^F^T02::\NI>>93L:,B4%C]TJ57&,>AK<O?-M?''B/\ MO5O#]H\
MD%OY3:W8F7SK<1 -Y1\U0!OW[E&3D_2O86MH&G6=H8S,HPLA0;@/KUI+B"VE
M4-<Q1.J'<#(H.T^O/2@# ^'T#6W@+2(FN9KE5A_=RS0F)C'N)3Y"20 N ,GH
M!7F\4=H=+TN>;5;?3;J+6]4-M-?6XELV8ROE),D!21]TYSUQ7MM0R0VSQF"6
M.)D?),;*"&[GCO0!R/PUO4N]'U)8[*P@6+4)%,VG,QM;EB%+21;N@R<$#C(.
M*Y'Q!J%G<:QXNC_XD&G2*P@G&HQ-<WEX1$-IBC+C"G("A<Y.3C->OQ"-8E$(
M01@?*$Z8]L4UK:!IUG:&,S*,"0J-P'IF@# \ 2-+\.?#C[]S'38!DG/(0"N$
M\-W/A.#P=IUGK-O'<>)%U >?:Q8%\;SSLE^H;C[Q;.-OMQ7KRHJ*%10JCH ,
M 4S[/!]H^T>3'YV-OF;1NQZ9ZT >.&;PY!X)\5V6OBU_X222ZO/,BE -S+*S
M-Y!C!^8C'E[2O _.MOPQH\5_XYU(Z]9PW5_#HFG1R_:$#X=ED\SKZE:]':W@
M>=9VAC:5!A9"H+#Z&G$1QEI#M7CYF/''N: /$=-CM%\,>#IGU>TTV\MTOH[5
MM4MQ+9R+YQ!C8DC8V%7!!S@$5<L]5M8]+\,:C-:V6G:?9>))XY;BT=C:/NCE
M'FH6^[&SMCT!KU^2WMI(#%+#$T/4HR@K^72E,<$EMY92-H"N-I *E?ITQ0!X
MSXEU.SU=?B/=6%PEQ;?9]+19HSE'(D<':W0C.1D=P:T-;O=)T?Q#\1&NK**X
MGDL+>1+17\J2>,QL)""OS;<GYB*]62&W\H!(HO+*@ *HP0.GX4XPQ-()#&AD
M VABHSCTS0!XY87,)^(G@L17_AV;!N$\O1+<A8D-N^U7DW'.2.%('0FH?[)T
M^/X(7VI+9P"^_M&287.P>8'6^*@ANHP !7LT5I;0*%BMXHU#;@$0  ^OUI_E
M1^7Y?EIL_NXX]>E '#Z"=/MOBUXK@?[-%>SQ6DL"$ 2.NQM[+W(SC)'XTGB(
MZ?;?%?PO/>_9HC-9W4,4DP WR[H=B@GJW)P.O/%=I%):7,QDB>"66/Y2R$,R
M^V>U2O%'*5,D:OM.Y=PS@^HH \/\W0Q\)KC3IQ;GQEYK@PX'VXW_ )I*L!]_
M.<$-TV^U>H^,X&G^'6O13QK+*=+GRNW.7$1(('KGI6[]G@^T?:/)C\[&/,VC
M=CTSUJ6@#RG0K;1-:\8^%'BBLKRTA\.2O'L5719!)&K''3<"6!]\]ZQ-2MW@
M\/W<$!M[?2+7QE+]I$T!DMX8L97>@*_NQ(5)&0!Q7ML<$,./*BC3 (&U0,9Y
M-.\M-K+L7#9+#'7/K0!YSX*2.7QYJ5U;:SI=\/L")<KH]D8K8OORA9_,<&0#
M<,#G!'I5WQ'<Q>&_B/I?B/46\O2I].ETV2Y(^2WD,BR*7/\ "&P1GID<UV\,
M$-M'Y<$4<29SM10H_(4I\N9&4[77E6'4>X- ')3^-8-8U)]&\+M'J<IM)I)K
MVVF#16K;?W8+ $,S-QC.1@FN"$WAZ3X:Z#8:2+8>+$GM1'"@'VN.[$B^<SC[
MPZ2;B>,?A7L]O#;VZ&*VCBC53RD:@ 'Z"E6W@6=IUAC$S##2!1N(]S0!Y-J&
MDZ?<Z+\5KV>S@EN4DF"2N@9EVVJ,N">F&.>*TUTVRTWQ-X!-E:PV[26%TLC1
MH%,@\A&^8C[W///?FO2?+CPXV+A_O#'WOKZTC1(P'RKD A3CIGTH \+T:?P[
M/\*/#=CHIM#XF^U6S01Q@?:4G$JF1V'W@NS=DGC;CMBI?$NH6=W8^-53^P-/
M?S[B&2WNXFN;^ZD5,*R@N-@; VX!"CGUKUCPQH%IX>T*QTV!TN'LX1;_ &@H
M [ =CCI]*U3;0&<SF",S$;3)L&['IGTH \VT.QL]6\>Z-->V\5V4\)V\B&90
MX#&0Y;GO@GGW/K699VW]F^#?[;LX]O\ PC?B&\E2-!]VU\]TF0#L-C$X_P!D
M5Z^L<:$%44$#:"!T'I]*Q?$F@3:_IITZ'4GL+28E;Q8859IXF^\@8_=)YY'J
M: ,7PA>6UCX>N?%&K3+;-KEY]JW2\;8W(2W3_O@)^+&M;QU'?S>!-<CTL2&]
M:RD$0C^\3MY"^^,X]ZT[O2K2]TY+"6/%JAC(C0X&$(('TX''I5V@#RF:Y\,7
MESX)B\'FR:_BO8FVV87S(;4(PF$N.5&, ANK8[UM?"S2K"'PV^I)9P"^FO;T
M27'ECS&'VAQC=UQA5X]J[>.W@AD>2*&-'D.795 +?4]ZD5%1=J*%'7 &* .6
M\2ZYHHO7\/:W>W&EQW%MY\=Y]I^S)( V&190P.X8!(XR#WYKDK&15^!/B.*4
M;M-@@OH=.F:,(9[<!A$Y  R23UQSU[UZG/;P7*!)X8Y4!SMD4,,_C6?K>BIK
MEO;6DTNVSCN$FFA"Y\X(=RH3V&X*3Z@8[T 9^J+.OPUO5N<_:!H[B7/7=Y)S
M^M<AX<TVRU#QEX?-Y:PW'D^$+9HQ*@8*2^,@'O@D9]S7J1 8$$ @\$'O30L2
MR  ('"X &,[?\* /%[)+.SCT9=12)/#=GXFU*.59 /(A;=((-PZ!0Q.,\ D5
MJ:M<>';F[MI/#L $9\3Z=]HN8#FVFE[^7@[<@8#$ <D=:]00VEPDL49AE0,5
MD1<,,]P1ZTX16\,21B.)(U(V*   >V!0!X[J.N:9IW@3XA:3=WD46I27^H>7
M:,W[UQ)\RL$ZE2#G(XP">U:UM-H-EXPUEO%K621SZ;:"Q:_"['MQ&1(J;N"=
MY.5')R*],:V@>4RM!&TA7:7* G;Z9]*62WAFV>;#&^P[DW*#M/J/2@#R#P:(
MQ;?#(0JRQ"74]@;J!MDQGWJMI^DZ?;?!?PWJ$-G EZ-0M)1<!!YF\W2@G=UZ
M''TXKVD11KMQ&HVYVX'3/7%1++9M)]D5X"Z<^2",K_P'M0!Y7=7/ARRD\<VW
MBM;;^U+FYD>!+A 99[<Q*(1#GEL8(PO1@>E=AX%U*SA\&^%-.DN$6\GTB&2*
M$_>95C7<1],C\Z-5\)ZI?W-\+?Q-<V]C?9\V!X%F:(%=K"%V.8P0.F#@DD8K
M:M-!L+(Z=Y,; :=;&UME+<(F%'XG"@9^OK0!R7Q-;3$N?"3ZR(SIZZP&F\T9
M08AEP6[;0<$YXP#GBN6\1I:ZC;_$";PTL4VE-I$*S-: &*2Z5G+%2O!(CV[L
M>V:]F>-)  Z*V.FX9I(H8H(Q'#&D<8Z*B@ ?@* //+WQ!HOB+XB>#X],OK:_
MC$-XTODL)%4/",*V. 3@_*>>*N?"62Q/@>*WMF@^TP3SI=1QXWQOYSX#@<@X
MQU[8KM8K6W@ $4$48!)^1 .3U-.2*.-F9(U4N<L5&-Q]30!Y;%HVFWMA\3;J
MZL;>>?[5<1B22,,P5;9& !/3!)/'>H]*N=-@\1:%=^*);9;67PU;"PGOB!%Y
MO68 MP'(V>Y%>K^6@##8N&Y;CK]:C>"VN8?+>**6('&UE#*"/:@#Q4C38M&T
M^_E2"/P\OC$O923J!$EJT;9*YX$9DW$=NE=_\42K?#35BI!4K$01TQYJ5USP
MQR1>4\:-'TVLH(_*E9$=-C*I7T(XH \>\9Q)//X_AD&4DN=&5AZ@N@-=#_PC
MVC#XP1Q#2K,1)H.Y8A H0,)MH;;C&0I(SZ$BN_,4;;LQH=V-V1UQTH;RT;S&
MVJ<;=QX_#- 'D'AB--G@"#8IB74M6C5". @\\!<>F.,5CJ8/^%?:)#;S6$,%
MGK\HU<30^;'#^]F\LW"*5.S.SJ0/NGH*]V5(=V%6/,9Z #Y2?Y4""$>9B)!Y
MGW_E'S?7UH \3U"WGN[7Q?-I.K6.H.VF1)=QZ'9-% P$F3\PD<-)Y7F# YP1
M6]]K\)7?Q(\%-X;;3Y)%BN0QL@N%B\@[5?;T/7 /(YKTZ&"&WC$<$21(.=J*
M%'Y"DCM;>$DQP1(2Q8E4 Y/4_6@#B_B;]ABM?#EWJ @6V@UNW,TLX&R.,AL[
MB> O3/;I7/V]UX5MG\:1^*VL?MLUY(ZBZVF2:T*+Y/E9Y88X 7H?>O5Y(TEC
M*2(KH>JL,@TQ[:"1XW>"-GC^XS("5^GI0!S7@N^>S\+>&]+UBX*:S-8*WDRD
M^8P11G/N 5SGO5#XF_88K;PY=Z@(%MH-;MS-+.!L2,AL[B> O3/;I77RZ?;S
MZE;7\@)FMD=8N>!OQDX]<#'XFK$D:31E)$5T/56&0: /+K31]*U!?B3=SV5K
M<2-.\:R/&&(06J,,'MR<\5B^9<C5?"-W?:CI5G:OX9@%M<:Q;&: SG!D .]
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
MGM(99'E$99T!)46J''/;)-8TU[<^%O"G@[QA;0O/(VB1Z;<1@9+EX@T&?I*
MO_;2@#UNWN[:[1VMKB*94=HW,;A@KJ<,IQT(/!':IJYOP_%9>$M%T/0+NY O
MKA65<@DSSX,DIR!W)8\UTE !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !2$!@0P!!Z@TM% "
M   # '84!0"2 !GDX'6EHH *S/$6BQ>(_#U]H\\KQ17D1B9X\;E![C-:=% #
M40(N ![GUI0H!)  )ZG'6EHH *P]6\.G6=7L+FYU"?[#9NLXL%1=DDRDE'9L
M;N"0=N<94&MRB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBN;\9^+$\*:/)<1V5Q>WAADDAMX8R
M00BY9G;HJC(R3^&30!TE%5-*NVO](LKQU"O<01RLJ] 64' _.N<\<^-1X4M[
M:.VMA=WT\D>8\\11&14,C8Z#+A1ZD^QH ZZBBN0U/Q#K=SXLG\/>'X=-6:UM
MH[FXGU!WP0Y(541.3]WDYP,@4 =?17$77C+5]+\.S7>K:3':7MMJ4%E*2S?9
MY4D=%\V-B!E<.>O0@@UT6D^)M#UUIUTK5;2\,'^M$,H8J.Q/M[]* -6BL2P\
M8>'-4U'^S[#6[&YNSG;%%,"6QUV_WL>U20>*= N=0>P@UBRDNT1W:)9@654)
M5B?3!!!^E &O163I7BC0==N)(-*U>SO)HQN9(90Q SC..X]QQ3++Q;X>U+4S
MIMEK-E/> L/)CF!8XZX]<=\=* -FBH;JZM[&UDNKN>."WB7=)+*P55'J2>!6
M,GC3P[<:3>ZE:ZO9W%O9)NF*3#Y/3/IGH/6@#?HKEO /B.\\5>'$U:[DTXB8
M@I'9,S>3E0=DA/\ &,C.,5GP>(_%6O76J2>'K31A9Z?=R6?EWLLGG3/&<,?E
M&$!/3.?6@#N:*XR?XA6EBOAM=4MCIMQK#,LL%V_EO:X5B201R-RA1TSN!]JV
MKOQ;X>L-473+O6K&&^) \AYE# GH#Z$]@>M &S165J_B;1- :)-6U6TLWE!*
M+-*%+ =3CT]^E5%\2"3QC'I,9@>Q?2CJ N5?.?W@48/3;@YS0!T%%5[&^M=2
MLX[RQN([BVE&4EC;<K#ID'O7*Z%\1-'OE,&IZCI]EJ!O9[:.V,P#,$E9%.">
M"VW\3TH [*BL?5O%>@:#.D&JZO9VDSKN$<LH#;?7'8>_2KL&J6%S<I;P7L$L
MSP"Y1$D#%HB<!QCJI/>@"W169<^(M%L[.XO+G5+2*VMIC;S2/* $E'5#_M<]
M.M3:7J^G:U9B[TR]@N[<L5\R%PP!'4'T/M0!=HKE-1\;V&B^+[C2=6NK2SM$
ML(KE)II-K.[NZE0.^ F>/>MJYU_1[32$U:XU.TCT]P"ERTJ^6^>F#WS[4 :-
M%9UGKVD:AI;ZG::E:RV,>=]PLHV)CKN/;'?-1:5XGT/6TG?3-5M+L0#,OE2
ME!ZD>GOTH UJ*Q+3QCX;O]1BT^TURPGNYE#QQ1SJ2X(W#'J<<XZXJSKU_+IF
MC3W<$EG'(A0!KV0I$,N <D<CKQ[XH TJ*QK[Q;X>TS4AIU]K-E;WAQ^YDF 8
M9Z9],]L]:75?%6@:)=):ZIK%G:3NNX1S2A3MSC)]![GB@#8HJLNH6;WJV:7,
M37+0^>(@X+&/.-^/3/&:KS:_I%OI\]_-J=K':6\K0RS-* J.IVE2?[P/&.N:
M -&BLVQ\0:/J>G2ZA9:G:SV<6?-F24;8\#)W'^' YYK$M_'>G:GXJTK2M'O+
M.^M[N*X>:6*3<T9C"%1@=CO/7TXH ZVBN<\3^,M.\+7ND6U[+"AU"Y\K=)*$
M\I I)<^HR OU85:U#Q9X>TG4%L-0UFQMKML?NI9E5AGIGTSVS0!LT5%<7,%I
M:2W5Q*D4$2&221SA54#))/IBN#L_BE87MCX=U /:6]GJ,\\5VTLX/V79$T@!
M;@9.%Z_WJ /0:*S=.\0:/JVGRW]AJ=K<6D1(EF24;8\#)W'M@<\TS2/$VAZ]
M)+'I.JVEX\0RZPRAB!ZX]/?I0!JT5A>*/$1\/VEJ+>T-[J-].MM9VH?9YDA!
M.2W\*@ DGVK+.J^,]*N+275M,TV]L9YDAE_LHRF6WW' <JP^=03SC! YQ0!V
M-%94WB;0[?5H]*FU6T34))/*6V,H\POM#8QUSA@?Q%0V_C'PW=ZH-,M]<L);
MTL46%)E)9AU ]3["@#;HK"N_&GAFPN_LMWKVGPS^88C&\Z@JP."#Z<\<U"/&
M6G'QXWA3S81="U$^?-&XN23Y87UV#=]"* .CHK'MO%?A^\U9M*MM9LI;]25\
MA)@6)'4#U([@=*+WQ7X?TW4UTV]UFRM[QL?N9)E##/3/IGMGK0!L44R5BD+N
M"H*J2"QP/Q]JP(?%^E6FBV5WK6KZ5;S3VRSDQ7&8W!P,QD\LN3QQ0!T5%5=/
MU&RU:QCO=/NH;JUE&4EA<,K=NHJAJOBWP]H=TMKJFLV5I.0&\N64!@#T)'8>
MYH V:*S-3\1:-HUI#=:CJ=K;03_ZEY)0!)QGY?[W'/%-N/$NAVND1:M/JUFF
MGS8$5P9EV2$] I[G@\#TH U:*RAXFT,Z+_;/]K6?]F]/M7G+Y><XQGUSQCK2
M6OB?0[W2Y=3MM6LY;*)MLLZRC;&<@8;T/(Z^M &M16%_PF?AG^S7U'^W+ V:
M3&W,PF!7S!SL'J<<X':J>B^-+'5'U^YDN[*/2]-G1([P3#RW1HD?<6)QU;%
M'4T5C:?XL\/ZK!=3V.L6<\=HADN"DH_=+C.YAV& >?:BQ\6^'M2U,Z;8ZU8W
M%[@MY,4RLQ Y./7'?'2@#9HK'D\5^'XM8&D2:S9+J!8)]G,R[MQZ+_O>W6B_
M\5^'],U%=/OM9LK>\;&(99@K#/3/IGMGK0!L45#=W=O86DMW=S)#;PJ7DE<X
M5%'4D]A43:G8I>6UFUY +FZ1I((BXW2JHR2H[@9% %NBL*Z\1VT6HVJ1:AIO
MV3?<)=F2?$BF)<L$ X)7^+/05S=K\4K"]TS0M21[2&UOKZ6VNS).#]E54D8$
MMP 2$4\]FH ]!HK/TC7=*UZV:XTG4+>\B1MCM"X;:WH?0UEW7C+3K7QQ;^&)
M)85N)K5I]S2@$/N4+'M]2"3]!0!TE%<=X2^(>C^(-,TL76I6$&KWL0<V23#<
M&/\ " 3G..<=:V=0\5^']*U!+#4-9LK:[;&(I9@K#/3/IGMF@#8HJ.>>*VMI
M+B>18X8D+O(QP%4#))/IBN9\/^/M%UKPG_PD$]Y:V=NKLDPDG!$1#$*">.2,
M''O0!U5%95MXFT.[TI]4M]5M)+&-@DDZRC:C9 PQ[')'!]154>-_"QM/M8U_
M3OL^YU$GGK@E-NX#UQO7_OH>M &_16 /'/A4BT/_  D&G8N_]1_I"_/SC\.0
M1SWXJ?4O%GA_1KU;/4M9LK6Y8 ^7+,%(!Z$^@/J: -BBD!! (((/0BL>U\6^
M'KW53I=KK5C-? E?(292Q(Z@>I'<#I0!LT5Q?AOQJ_B;Q?JUC9W.EMIU@QC5
M4D9KB4A5)D&#M"9;;]16A<^,].M?&\/AB26%;B2T:XW-* =^Y0L>WU();Z"@
M#I**X[PE\0M'\0:9I8N=2L(-7O80YLDF&X,>=H!.<XYQUK9O_%?A_2M133[_
M %FRMKML8BEF"L,],^F>V>M &Q117G.B^*/'>M^&8O$%KIWA]K61'D6!KB9)
M6"D@C.TJ"=I]J /1J*X_0/'"Z_JUA'%;K#97>BC4]\A^9&\S85/; YY]JUM-
M\7^'=8OS8Z=K5C=76"1%%,"6 ZE?4?2@#:HK"?QIX9CO8K)]>T\7,KF-(S.N
M2P8KCV.X$<]Q6[0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !6'XS5G\#>(%52S-IMP  ,DGRVK<HH P=-U*UTGPOH/VUWC^T16UK&!&S$
MR,H"@X!QSW/ [UYYXTT'Q99Z-KM[,=(NA?7ULQD7S3,L:W">5&!C 5>I^K'J
M:]AHH AL_M7V.'[;Y/VK8/-\G.S=WVYYQ]:\]\8S^&9O$DEMXTTDVT$4:-IN
MKQB4%\@[T,D?*$-T4G!!SWKTBB@#Q:=+G4/"&I6JS:AJ7A[^V;!-.EU!6:66
M,RQ^:,L S1@\ D=,^E=+XG62T\<W-U;Z8;TKX6NU^SJIQ.1*FV,X]>1CKR<5
MZ)10!XG#J+ZAJ/@@QZO%?1P:A%NMK'33#!9 Q.NPN<L#DA0I(S@DC@5?&AW5
MU\(O%,.G6C?VA<ZC>.P2/]Y*HN3N [G**0!WZ5ZN+NV-X;,7$7VH1B4P[QO"
M$X#;>N,@C/M4A=595+ ,WW03R?I0!Y1I<MOK7BK0GM]<N]7:RCF;RK;2TMUM
MXS&5,<K97;G( 7KD#@8S5'P]>BTO_#FFZ5>?VM:Q72H-(U'3MMWI288,YD7
M&SD?,.<\$YKV&VN[:]A\ZUN(IXMS)OB<,-RD@C([@@@^XHCN[::XGMXKB)YX
M-OG1JX+1[AD;AU&1R,T <K\1[>2;0K";[/)<V=IJ=M<WT,:%R\"/EOE'W@.&
M(]%K$NKZS\2^-%U+0,SVMKHUU#>W<<9".7VF.+)'S,"&;';->EU'<7$-I;R7
M%Q+'#!$I>221@JHHY))/  H P? *-'\//#B.I5ETVW!4C!!\L5PFI7'@VZU.
M]E\3VEWX=\21S.GGV)GC>=03LDC>,8DRN.H)!XKUF">&ZMX[BWE2:"50\<D;
M!E=3R""."#4E 'DXO=1M=+\ ZKXE-PI@U"<33SQ'S%C:*583( .&(*9]SS4"
MW^FZ7X-\3^&]7MI'UZ[N;P_9OL[/)>M(S&)TP/F&"G/\.WMBO7Z* /+M'NX?
M"'B.]D\7.8Y+K2K&*"ZDC:19/+C*RQA@#\V_+;>^X'FL35?#U[XBU2Q@T6SE
MT:(>'3*FFS)A95%P&6WD/55;C(SGG![BO;** ,GPUJUOK?A^TO;:W:U1DV-;
M.FUH&7AHR.V",5YK-IRK\%O%FVT_?RW][*1Y?S,PN3M;U)P!@^U>P44 >6:M
MK$D7C#7K5KN#16:.%5":<;BZU,>7U0G*D DJ%"GG.:S;![KP[\.O!_BRWM)I
MKC3+9[2ZMU0[WBDRNTCK\LJQG\Z]EIN]0X3<-Y!(7/) [_J* /(=7T&^\.V7
M@JXN+U[6.U>XFU*]%L+@174RAO,9?3<9%W=LBNC^'Z)<:UXAU2'4;K48[IH%
M:[:S6W@F=%.6C /S$ @%L ' P3BN]HH \[U+5=*T+XNW-_JX,,3:)#%%=O$S
M(C>=*2FX X)&/KBN2-A?V4'A_6&DGTK15U74;B)VL_-^QQS',#-$1\H(WX./
MEWCI7N-% 'B&HZ?<ZMH?B34=.O[[5(9;RQDNIUT]4BN$B;,C1(#^\P,;LC!V
M@<ULZ;)%K/BI;ZWUZYUE[73+B.2:#3E@A1& Q'(XP2V1D+@XP>E>K44 >3V^
MGK!\,OAXL5KLDCU'3I&"I@J6;YR?3.3GZUU7Q.C>7X>ZDD:,[%X,!1D_Z^.N
MNHH \<\47,6F:IXE6QU!H+BYD\R;0M4TX7$6IOY:@&(K\V&P%ZG!!R!4_B&Z
MCL=:U"Y&I2:#J%W8P?:;*_L1<VE^!&1L3'S97)0@$'V/6O7** /+K+68]$\4
M:%J^O6?]CV]UX<2V$:Q-Y<,PD#>4  =IVG@'TQUKG3'>RZ;INL;KFQT^'Q+J
M%S/(]F96M]Y?RI'B(Z G&2/EW9[5[G10!XI>V,NLZ?XGU'3[V]UM'%E]JDCL
M5AANTBE#NL>#F1@F0>.1@9-=)'K&CZ_\4?#MUHP,ZPV-W'-<I"RJ ?+VQDD#
MD?-QVW>]>CT4 <5\0;B*PNO"NHW.Y;2UU<-/*$+"-3#*H)P#QD@?C6!!J>E:
M#;^,=+U^!SJ%_?7,T<)MV=KZ*0?NA'@'=QA<?PD=J]4HH Q/!]G>V'@K1;/4
M<_;(;&*.8,<D,$ ()]1TKS/PNL%_8?#FR>%I)-/OKF.[BDB(\F589& 8$=0=
MI!^E>ST4 >0^+-+OKR7XAPV%O*QD.FRLD4>XRHHS)M7^([5Z=\8[U=T&6'6?
M'6CW5OX@N=7:RMYMSP::D$4*,H&R5N""3@A<$@KT'6O4:* .-\<VMW!?>'_$
M=K:37BZ/=N]Q;P+ND,,D91F5?XBN0<?6N6\4>([;7I1)X0\0Z_/K,CQ+'I]H
MCK"@#C>T@9!L^7=G+#G%>MT4 <'I-L(?%WC^_&G_ &BXWP>6NWYI0MJI"J?<
MY'XUP@U*2_TSPDD>HPNL&J64DFE6&F&./3QY@R)';+ J3MY(R2>HKW>B@#RU
M-.0^"/B:S6@,L][J!R8_F?$0V_7!Z>]*'FB\66\ =X;O4?"<=M9R,K -."[8
MW8P",@\UZC10!X7I"+<Z'X;T%]:O3?6MS;_\2F#246:TEC8%F9CC"@@Y?/S
MGKFGSA].B\6:5J^M3VD][?7+G3UTM9Y+Z.0_NS$Q^]E<*.?E([8KW&B@#)L;
M>2U\)6]M(TS216*QL9@/,)$>/FP2-WK@GFO// =CNUOP;)/;','A5MK.GW'\
MR,?@<$_F:]9HH Y#X?PFWA\1Q^68T&O791=N!M)!X]NM<GK6K2G7?%5E]JAT
MB60B-;2'33/=:F/* 5PQR"#G: %.,<XKUNB@#Q_PQ>6^A7'A36-;W0Z>?#,5
MI#<R1DI!.&!=2<?(67')QG:15O[9IMKK_A_Q&VE2Z=X=22_5)'A(5)9&4K.R
MXRBN ^"0,9[9KU6B@#RF_O--GU;2?$=OI,T7AVVUB:6ZN!"Q6>1H-J76S&=H
M?C=CMFLSQ:T6OP^,]6T:*232IM,M;9YDC*K=7"S$DKQ\VU" 6'T[5[310!P?
MB,6F@>-?#NK7D"PZ);6UQ;B5(LQVLS;-C-@?*"JLH/;IWKDI-2MTL_%&H:?I
MD1L;GQ!:LLUW:.T4"F.,FY,8P64,-PZ9W U[310!XI+<3:AXB\07']IR:NDG
MA.ZC2\2R\B)V# [(\??QGKD]<>M='/8);Z3\,Q!;",PW<"G8F"BFUDW9],G&
M?>O2** /)M$U+2=,\)-X:UC3)+W7OM\AFT[R6\RYE:<LLP;&"N"K;\X '7BL
MFYWZ:WB[3=7UN:SEOKZXD%B-+6=[Z*3_ %?E,1\WRX4#/RD=J]OHH Q].TM9
M?!MKI-[YTB-8);3"X $C QA6WX)&[KG!/->/P-JUM9)XIN[2XDNO"$MOI@0*
M=TR)OCG9?7<LJ'/^S7O%% 'F6F:/<:5JGP\@N$8W.R^GO&Q_RVEBWOD_[S$5
MBZ L%[I'@73I(6>;3];G6[ADB(,3A9V7<"/]TY^E>ST4 <AH4)B^)GBYQ&52
M2WL&SMP&;;*"?<]/TJOJMQ%8?%O29KG='%=:3-:POL)5I3+&P3('!P">:[>B
M@#Q^QT\0?!3PDL=ILF2_L9B!'AE8W*[F]<X)YJG=%]+NO&%AJ^MS6,E]?3RK
M9_V6MP]]"X C\MB/G^7Y=N?E([5[910!F>'+5[+PQI5K*9R\-I%&?M  DX4#
MYP"1N]<$\UXY;-*?"OA&1;F:TAT34+E-2?[&93:2MO\ +=XV'(&?O=MP->[4
M4 >(:M;)JGAWQE?V^H7>K)=1V<,ER+)8()V64?<VG+L <$XQTY.*[G6M.@_X
M63X-V6B"&""^9=L8VHVR( ^@..E=M10!Y!?::B_#OXE[+,"675+IAB/E\!"I
M'KSDCWS2^*;F'3==UZ2VU633[NZ@C,^GZCIXN;;5,1!5\O'S=!L(!ZCI7KU%
M &$J7]_X""16HT_49],VI;K\HMY6BX4>FTG'X5YVU]IVI>!O#?AG2;65/$%K
M/9C[+]G99+*2-U,LC\?*,!_F_BW=\U[#10!R/@N-DU?Q@60J&UIBI(QD>1#R
M*JZI<16'Q;TV6YW1QW6C36L+["5>4S1L$R!@' )YKN** /(+'3Q!\&/!ZQVF
MR9-0L9B!'AE8W"[F]0<$Y-4;DOIEQXPT_5];FLI+Z^N)5LAI:SO?0N/W?EL1
M\_RX7&?E([5[;10!F^';9[+PUI=K(9R\-I%&QN !)D(!\^"1N]<$\UYS\/\
MP-#JGP^TUK[5M>CCF202V4=\\46/,8%=HP0".HSWKUBB@#S'Q%;+HWB2_33]
M'%W;6OA)X8K)5.QP)<"/CDC';J16/:Z@]_XH\$R1ZS'J4,%TRE++33!;VFZ!
MP$W')!/0*3VY'2O9J* /'KC3@/@IXLVVG[^6_O)2!'\S,+D[6]<X P?:O81T
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 5P/B?Q!>V_B&XL(O$D.GB.%&@MK+3WOKF1CG)D4*=B], <GDY%=]7+7/@Z
M1M<U'4;#7;W3UU/9]MBA2-MY1=@*,RDH=O''U&#0!S6G^+/$?B./P=%9W5M8
M2:Q87,]W+]G\S8T90912>IR>#D<]\4]?%OB"*SFT=KJVEU?^WQH\5^T&%V&(
M2^:T8.-P7(QG!.*Z+1? UEH;Z&8+JXD&CV\]M"'Q\RRLK'=QU&T 477@6QNH
MM1'VNYBGN]174XKB,J'MIU154ID8(PO0@YW$4 9&AVNJ6GQ:O(]4OTOF_L.+
MRIUA$3%//?AE'&0<\C'&*D\16]])\6O"CPZAY,7V6[/E^2&X4Q%QD_W@0/;'
M'6MC1O"CZ;X@N-<O-8N]1OY[9;9VF1$0(K%AM50 .OZDU9UCP[_:FMZ1JT5_
M/9W6FLX7RU5EEC?;O1@P/!V#D8(YH \UTJ^\1Z#X!U#Q#9ZG;K96.I73"P:U
M#><GVI@^Z3.0<EL8P.!UKH-6U[6K74O&"Z19I)/:36*AH+422K&Z R/M&#*R
MC) )_2MU_!%F_@R]\,FZG^S7<LLC2\;U,DID..,=3CZ4Z^\&6]Y=:O=IJ%Y;
M7.H2V\XE@8*8'A4!"O&"#CD-D&@"GX'\02:S<:A"VOV^JQPA"H>U-M=0DYW+
M)&0!C@8('K5/XGZO9P6NDZ%=SF*'5;M?M3!&8BVC(>3A03SA4Z?Q5O:+X8;3
MM8N-8O\ 4Y]2U.>!;;SI(TC"1*2P550 =222<FK2Z! /%DGB&2:22X-H+.*,
MXV1)NW,1[L<9/L* /._#GC6TT#P;XIM[)OM2:!(\E@KJR;X)3F($, <*Q*'V
M45NR7/BS0_$7AJVU#6;6_MM3N7BN5%H(S&PA=P$(/*Y7OSP.>:T?%'A2VU&X
MNM86VDN[@Z9-8RV*R!%O(V^8(6(^4ALX/8FN4TC2M2U3Q=X;N/,\2S6VE&62
M1M9MU@6%3$45%PJF5R6&6YX7KSR $'C#Q/9^!KGQ=>W]M.DDCVEI8K9\+)]H
M\I9&93N;&"2H'/&.:MZ=XVO['51'<7EYK5@UI//--)HTMD;9XDWCEE"E6 8
M'D$#DYKIXO!.G#P8_A>:2>6T9G<2[@LBLTIE#*1T*L<CZ"DL?"<ZWZW>LZ[>
MZN8X'MXHID2.,*XPQ94 WL0,9/Y4 <5IGCW6IH])U(WEQ>M>RQ?:-+CT2=(X
M8I",E)RN"4!!))(;!QVJUJ7B+Q7]@\7:O:ZI:P6V@7DJ0VQM YG5$1RKMG@8
M; QSUYKH;'P(]F+&T/B+4Y='L)%DMK [%QM^XC2 !V1>RD]AG.*MR^#;2;1O
M$6F&YG$>N32S3.,9C+HJ$+QZ*.M &&WB'7O#^M63:Q?P7UG?:;=7K016PC^S
MM"J/M1LDL"&(^;GC/M6+I?CW6IH])U(WEQ>M>RQ?:-+CT2=(X8I".4G*X)0$
M$DDAL'&.*]!N_#-I?:GIE[.[M]@MYK81$#;(LJJK;OP7]:R;'P(]G]AM&\1:
MG+H]A(LEM8'8N-OW$:0 .R+V4GL,YQ0!B7.L^+;RU\7:C9ZO:VL&A74Z00&S
M$AG$<:R%78G@8...>3SVI^F27^I_%>QU(7HBAN/#L5P;<0@X5G&4W=?O'=GK
MVKJ8_"EM%IOB"Q%Q,4UN:::9CC,9DC6,A?H%SS44/A!+36M)U.TU*YA>QL5T
M^2/:C+<0KR V1D'(SD8H Z2BJ>EV<VGZ=%:SWT]]*F=UQ/C>^23S@ <9Q^%7
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
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
M_+S,UM(JN7R%"97YR2",+DY&*NZ=XMT;4HKQX[E[=K)/,N8[R%[=X4P2&99
M"%P#STXH VZ*Y:'X@:#=)+]GENC(+=[F%)+*9#<1J.6BRG[P<C[N?6JNB_$+
M3KKP=I6LZD9(+B^ 1;:*UE9Y)=NXK$FTLX /WAD>] '9T5SO_"<^'1HLNK2:
MAY5I!.MO.9871X9"0 KH1N4Y(ZCWZ5$?'^@^1;R(U_(\ZNZ01Z?.TVQ3AG,8
M3<%SW(P>U '3T5Q&K^/K.SU#PQ<VUVDNC:H+@N\<+2/(40;%10-V[<<8QGM5
MVY\8Z=>^&[C4=-U,6GV>ZBMYFN;23="YD0%&B(# D, ..-P/:@#JJ*YF]\?^
M';"]O+26ZN&EL6VW?DV<L@M^ =SE5(5<$<GCKZ''1PS1W$$<T,BR12*'1T.0
MRD9!![B@!]%%>?:MXYO=)3QU*Z+(-&\I;)5@9_F>W#_/M_AW'DG  [B@#T&B
MN?\ #.H7,GA*+4M1O9KURC2O)]@>!\#JHBQN/0XXR>,9R*Y&V^*#7&C^&M5G
M7[+#>W\MO>*;63[H20H(\C+$E4&5SDY'7B@#TZBL/3_%^B:C8W]XEVT$>G_\
M?BW<3P/!QGYU< @$<@XYI-(\8:-K=Z+.UEN$N&C\V..YM9(#+'_?3>HW#D=*
M -VBN=\7>(+G1+6RM]-@BN-5U*Y6TLXY21&&()+OCG:J@DXY[5GO!XYTB6VN
MFU&SUR%ID2YLTLA;NJ,0"\;;SG;G.&Z@'F@#LJ*P)_&>AP>(?[!:YE;4A(D;
MPQV\C^66 *EF"X4$,.2<?D:KV_Q \.W-Y;V\5U<%+F;R+>Y:TE6WFDS@*LI7
M822,#!Y[4 =/17+7WQ#\-:?<74$UY.6LY#'=F*TED6W([R,JD*.>IXZ^E(/&
M43?$*/PVD3O"]@+E9UMY&#.6&/F V[-O\73)QG/% '545S=MX\\/7=_%:0WD
MI$TQ@AN#;2"WED!QL24KL8Y!'!Y[4[4?'.@:7?SVES=3%[;'VF2*VDDBML\C
MS'52J<<\F@#HJ*PKG4Y]/U.\U&]NX8_#L-@DHE*C DW-DA@<L-NWC'<8SFG:
M/XKTK6[V2RM7N8[M(_.\BZM9+=VCSC>HD497/&10!MT5FZSKVG:!!%+J$S*9
MG\N&**-I9)7Z[41068_050'C?P^-%GU:2_,-I;S+!<&:%T>"1B %="-R\L.H
MZ'/2@#H:*Y,?$?PVS2Q":]^TQX;[+_9\_GNISAUCV;BO!^8# []15F?QWX<@
MLM-NS?M)'J:,UD(8))'GVXR%55)W#<.,9Z^AH Z.BN-UKQK$WA@:GH<P:1-1
MM[.9)X61XB\R(ZLC %6PW<=P:OZEXZT#2;Z>TN;J8O;8^U/#:RRQVV1D>8ZJ
M53CGDT ='15"UUK3KW4IM/M[E9+F&&.=E .#&^=K*>C X/()K)F\>^'((+24
MWLCB],HM5BMI7:<Q,%<(H4EL$]NHY' S0!TM%<B/B7X5:))1?3>47\N5_LDN
MVV;=MVS';B(YXPV/7IS6AJWC'1=%OFLKJ:X>X2,2RQVUK+.88S_$^Q3M'!ZT
M ;U%<_?>-= T\67F7IE:^A,]HEM"\S7"#'W @.3\PXZXR>@-9&M?$?3K70]/
MU/3/,NH[G4HK*0?992T7S@2!D"[@X!X4\DXP#0!V]%,BD6:))%W!74,-RE3@
M^H/(^AI] !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !7&^/M<UG38+*QT:PU!WO&83WUI9M<&TC'4A1P7.<#/ Y)KLJ* .+\-ZAIV
MC>&+K^SO#_B!$M6#R1W%DPN;N1S\SC<<R-GDGM7:444 %<S\0[2YO_A[KMI:
M023W$MHZQQ1*69SZ #J:Z:L+4O"&D:M?/>78OO.< -Y6HW$2\# PJ.%'3L*
M,?QWHU_JO@BSBLH[AY[2XMKIX8"%E=8V!94W<;L<C/<"N=CTV35;Z]N[:#Q3
M=F#2+J);C5AY7SR+CRDC,:LY.,YZ# ZYKL/^%?Z!Z:I_X-[O_P".T?\ "O\
M0/35/_!O=_\ QV@##N=(O&\'_#ZU6PF,EG>6#W$0C.80D1#%AVP<9ST-:-II
MUTOC7QG=-:2B*YLK1()2AQ*524,%/?&1GZBK?_"O] ]-4_\ !O=__':/^%?Z
M!Z:I_P"#>[_^.T <)9:%JZ:-:1MIEV'7P-/9LIA;(G)3$?3[YP>.M=-=Z7>?
MV=\/8X[*;-E=0&X58S^Y46TBG=_= ) Y[UJ_\*_T#TU3_P &]W_\=JA#X9\&
MSK(T=Y?$1W1LV)UJ['[X''E\R\MGM0!POB&W\0:OX5UVQGMO$/\ :KR3A-+L
MK)8K()O)#"0)^\RO/WR6)QBNEUJWOAKWBE%TR_E75O#JQ6TL=NS(9$2;*,1]
MUOF4 'J372?\*_T#TU3_ ,&]W_\ ':/^%?Z!Z:I_X-[O_P".T <YI0N_"FN0
MZE?Z5J%Q:WNBV=N)+6U>9[>6(-NC9%!8 [@<XQD<U4TC0=4&L:!J%QID\,=S
MX@OM1:%DR;6*2%PGF8X4DX/U;'6NN_X5_H'IJG_@WN__ ([1_P *_P! ]-4_
M\&]W_P#': &Z'97,'C_Q9=2V\B6]PMEY,K(0LA6-@V#WQP#5"\EG\-_$&_UB
MYTV^O+#4;&"&.:SMFG:%XV?*,J@L V\$'&,BM'_A7^@>FJ?^#>[_ /CM'_"O
M] ]-4_\ !O=__': .2LM#U81Z+>2Z;<0_:O%<NIM;E<M;0/'* 9,9"]B?0MC
MK73_ !.LKK4?AQK5I96TMS<2Q*$AB0LS_.IP .O%3?\ "O\ 0/35/_!O=_\
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
M(*D$$<&M.HDMX8[B2X2)%FE"B20*-S 9P">^,G'U-2T %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
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
M4 YMK@ ,8VVL""&!![$$ T >9:=XV\07NGWUF]V8]0U:]MI-'?RUS%:W#MC
MQSL2*1LG-)X@FO\ 6H)TFU.XA%KXT@M83"L8VIF+;U4Y*DD@GN><CBO01X-T
M==;TC5UA<7.E6QM;7#?*$V[1D=R 3CZFH;OP/I=Y8W]J9;N+[9J U(RQ2[9(
MIQMPR''&-@ZY[T <E;Z5JEUXN\=/:>(;VP%L]L5,$<1:246B?-(64Y' ^48Z
MGVKM_"NI7&O>"])U&Y;9<WEE'+(T8 P[*,D#IUYJ2Q\.V=A-J<R27$DNI;/M
M#RN"6*1B,$<=<*,^]6M'TNWT31K/2[0N;>TA6&/><MM48&3ZT >-6NGWJ>#]
M&2#5K@S3>,&2.29(V\DB:<%U 49)^\0<C/8#BNAU?Q'K/@F7Q/:G4I]66UTN
M"^M'O53?'))(T1!**H9<@-C'M74P> ]+MY,I<7QA74AJ<4#3 QQ3 L3M&,A2
M7)(SZ5?O?"VEZEJ-]>7D+3&]L5L)XF;Y&B#,W3J#ESSGTH X_1-3\16WB+2H
ML^([ZUN2T=^=4L8XDC.TD21E -HW#&TYX/J*TOB6HFL_#UI<<Z?=:Y:Q7BG[
MKQ_,0K?[)<(*T=-\$65AJ-I?3:CJFHR62LMFE]<"1;?(P2H &3CC+9.*V=7T
MFQUW2Y]-U*!9[2=<.A)'?(((Y!! ((Z$4 4_$=KH4FFP2:Z(8[6VN8I(9'<I
MY<H8!"I!!!R0./7TKEH9->\3-XBU&W\0W.F#3KV>SLK:".,QYB&"TNY26W'M
MD8'2M:V\ 6$=[:7%]JFL:JMFXDMH-0N_,CB<=&P -S#L6SBGZAX$TZ^O+V>.
M^U.RBU YO;:SN?+BN#C!+#!()  )4KGO0!S.EZUK?C36]+ACU>XTFSNO#T.H
M3):(F_SFD93M9U;"_P! />J>GZOXF_X170_$]UXAGFFDU2*QEM!#&L$D1N#
M21MW;SC=D' / %>BVGAS3K#5X]1M8VBDBL4T^.-3^[2%&+* /7G\JJ)X-TN/
MP_::(IN/LEK=K=QG>-V\3&49..FX_E0!S<0\0ZU>>+)X_$US9)IEZ\-C%%%%
MM4K$C_O-RDLN6Z9'?GIBI)XJN==M]$D.JZI:O=:7'=R:?HEGYL_F/_&[LC!(
M^, '&?6KUEX"DOM7\43ZC=:G90:AJ!/E6MT$2Z@\I!\P&2.=XXVG'MBMVY\$
MZ?)J$=[8WE_I4JVR6CBPE"+)$F=BD%3C&2 1@\]: .*T[Q'XDU?2O"]J-5FM
M;J[U6\L;FX,$?FM'$)<$K@J'P@Z<9'<5<N-0\2Z9!XNL;75KB_FT(VM[;R3I
M&998F4O)"Q50#D(P! !YKJ--\"Z/I(TY;4W(33[N:\MU>7=M>565@21DC#'J
M<^YJS=V,>BS:QKMGI]UJ%[?+"LMK$R9<)E1MW$ <,2<GM0!1T;7IO$/C"X>P
MN2=$L[&+( &)IY@) <]?ECV\9_Y:5%KEUJ.I^-[3PU9ZE-IML+![^XGME0RR
M?O BHI8$*,DDG&>@XJ?X?>&3X5\(V]C+$L5U(S3W"*VX(['A >X50J9_V:OZ
MWX9M-;NK6\-S=V5_:AEAN[.0)(JMC<IR"&4X'!!Z4 <'?^(/$ENLV@1:P?MM
MMX@M=/743"A9X)H]XW+C:77/4 9P/>O1K*TGTW11;S7\]]-$C9N;@+O?J1G:
M ..!T[5EP>!](M[2W@!NG>+4%U)YY)=TL\Z]&=B.?3 QP!C%=$Z"1&0]&!!H
M \C\/MJ&M>(OA_JEUJMU]HGT:>:0(L85BK1%AC9P&R,X]!C'.;&C:[K=IKFG
M1^(]5UC3]0GN_*FANK*-]/N=Q(5()$'RG[N"S9]0<UU\7@72[>/05MY[V$Z(
MABMV28 R1G;N23C#*=HSTJ&T^'NEVDMHHO=3EL+.<7%KITMQNMX7!RI QN(4
M\@%B!0!<\;V%EJWA&\TV^U!+"*[*1)</@A9"ZE 0>N6 &.^<5S&I7NM:?/I/
M_":Z%IUW80W\/D:EIEPZ_9YBVV-FB;!QD@'!(YZ&N[U;2;'7=*N--U& 3VEP
MNV1"2,\Y!!'(((!!'0BN?M?A_8Q7=K->:OK6IQVDBRP6U_>>9$CK]UL #<1V
MW$T 9Z>(-3/A#Q[>F[/VC3+F_2T?:O[H1Q!D'3!P3GG-9L5GJ&N_$.T=-9N;
M OX8MI+B6U5/-D)E<X!92 ,Y)P/05T6H_#S2M1N-29KW4X+74R7O+."YV0RN
M5"ER,9SP,X.#CD&I;SP+87.H6^H0:AJ=C>V]DEC'-:3A3Y2DG!!4@Y)YR.PQ
MB@#DWUWQ3=:+'$LFH7*:?JMS8:E<Z5%%]JF2/_5NB,-O)(W;1GCBIH/$UT^B
MZ3]FUR>]<^(X+*8W5F(;B.)N?*E4J/FQ_$ ,\5TS^ M(&G6%M:2WME-82/+!
M>6\_[\/)_K"S,"&W=\@YI\'@;2H8(D:6\GF34$U*2YFEW2S3H,*7.,8P ,
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
M\JZO(K21[>W?NKR 8!&1GT[XJSJOC'2]*O5LRMY>71A%PT5C;/.8XCT=MH.
M<''<]JXZ./5]%\+:YX4_X1Z_O;NZENQ:W,2*8)UG9F5W<G"8WX8'GY>,U9TF
MTU#P)K-VT^EW^J6]WI]E$D]A%YI62"+RV1AD$ \,#TY.: -1/&EM)XJC==1@
M_P"$>;0CJ/G, !GS0NXD\C@XQZ^]=3IM_%JFG07T"3)#.N]!-&8VV]B5/(S[
MUYAJW@K5O%NN65Q?VITJ>+1=\?V9LP0W0G#QHXZ. ,$CIU]J]&\/7]]J6AVU
MQJ5A)8WY7;<6[C[KC@E3W4]0?0B@#-\&:Q>ZS:ZP][(KM;:O=VD6%"XCCDPH
MXZ\=ZR]*\=16>F:G>>(+DB./7[G3;8QPECA6.Q<*,DX4CU)JKI=[J/@J^URQ
MN?#NK7\%WJ4U]:7.G0K*KK*=Q5OF!5@<CGBJ5MX9UB/1=$ENK%EO+CQ3_:]U
M;H0_V9':1L$CCY05R1W- '22^--/OM$UU[>XN],O--M6FF^V63"2!2I*R>6V
M-XX)QWQBJMMXY \87&D722BQMM+CO&O&M75<D.S.S=%3:HQ[Y&215#Q9HNI7
MFK>+Y+:REE2[\,BU@91_K)=TWR#W^9?SI)+#4;;Q1,&T.:^@O_#D5FH; A,J
M>:6BE;J@8,!G!ZT =)I/C32M7U""RCCOK>:YC,MK]KM'A%P@P24+#G (..N#
MG%5_&?BN7PQ)HBQ6DT_V^_6WD,=N\I$>TD[=O\9P,#N-W'%<UX4M-6M/$6EQ
M:7!XBM-*6-QJ%GK!#PVXV?(L+MEB=V!P2,"NA\?07C6^A7MI8W-Z-/U>&ZFB
MME#2>6$=25!(SRPH S+3XBPV.I>)(-66]ECT^_90UM8O(MM;^6A#2,HP!DOU
MYX/I71:CXPTO3Y[>WC6[O[FX@%S'#86SSMY)X$AVCA2> 3U[5A6&DWPTGQZK
M64JR:A=7#VRLN#*K6R*N/^! BL86^NVSZ/:7T&OPZ=%HMM&BZ-&HD:<+ATE?
M[RXXQR!UYH W-6^(MM%%X<NM*AN+NUU2]:"1DM)&9%57W*% R) RXP><!CCC
M-:WCW6+K0/!&IZI92+'<6Z(R.RA@,NH/!]B:X/3M(UK2?#&@33Z+J#RZ=XBG
MNKBV0B:81/YP# D_/]]><\]:[?XBZ?=:KX!U6RLK=[BXE1 D2#);]XI/'T!H
M GTOQII.JZG_ &?&+RWG:$SP_:[5X!/&,9="P&0,CWYJM;?$'0[JYM(T%^MM
M>RB"UO9+.1;>9SP KD8YQP>A[5%XEL-2F\9>'[[3[7S?LUG?J78?(LCI'Y88
M^A(/Y5PK:;KVHVGAY[BS\3W&H6VHVD^H+<[8K6 +(I?RXUP' [8!PHSD4 >G
M'Q9I"Z%?ZR\[):6$DL5R60AD>-MK+MZYST]<CUJOJ/C?2=-O)+1X[^XF@C66
MY6ULY)OLR,,@R;0=O'..N.<5S>K>&-3F\=_8H+8GP[J=U!J=[)_"LL(.8R/]
MME@/_ 6JA?Z->Z1XJ\07$]OXGFAU&9;FUDT:<A'/EJICD /RD%>">,'VH ]0
MM+NWO[.&[M)DFMYT$D<B'(92,@BN63XE>'7*.K7IM3/]F>\^QR>1%+NVA7DQ
M@'./S&<5J>$-+;1O"6F:>]J;5H80&@,WG>6222N_ W8SBN*.@:I_PI2ZTD6$
MW]H/=2N+?;\Y!O2X./\ =P?I0!UNJ>-M)TK4)[)TO;F:U0277V.TDF%LI&09
M"H...<=<<XJC/XW0^,M"TJRBDN;#4K1[@7,,#N&Y0(0PXV_,2Q[<9Q5*VGU#
MPCKGB-9-"U'4H]2N_MMI-9QAPY,:(8G.1LP4X)XP:S="T#5?#%]X(%S83W"P
M65S:736JAUMY)I(W&[G[@P1D9^[0!ZA1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %5+[3;741;_ &F/<;>99X6#$%'7H01[$@^H)!X-6Z*
M"BBB@ HHHH **** "L;6/"VE:Y<PW5W'.EU"AC2XMKF2"0(3DJ6C8$K[&MFB
M@"GI>E6.BZ=%8:=;K;VL6=J+D]3DDD\DDDDD\FKE%% !1110 4444 %%%% !
M1110 4444 %%%% !1110!'/"ES;RP2;MDB%&VL5.",'!'(^HJGHVB6&@:>+'
M3H3%#O:1MSL[.S')9F8DL3ZDUH44 5-.TVUTJT^S6<>R/>TARQ8L[,69B3R2
M22<TD6EV<.K7&J1PXO;F)(99-Q^9$+%1C.!C<W0=ZN44 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110!S=_X$\/:E?7%U<VDV;E@]S%'=2I#.P &
M9(U8*QX'4<]ZZ-55$"(H55&  , "EHH **** "BBB@!CPQ221R/$C/$28V90
M2A(P2#VX)'XT^BB@ HHHH R],\/:;I%[?7EG"XN;Y]\\LDK2,W)( +$X49.%
M& ,]*U*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHI"0 23@#J30 M%1P3PW5O'<6\L<T,BATDC8,K*
M>A!'!%24 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !6!XPT;^V]
M!GMY+ZZM[98W>:.W8(9P%/R,W4+Z@8STK?J*Y@%S:36[$J)49"1VR,4 8'P]
M_P"2<^&_^P;;_P#HL5TE9^AZ5'H6@Z?I,4C2QV5ND"NXP6"J!D_E6A0 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% '_
!V0$!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>16
<FILENAME>cgnx-20211231xexhibit10l002.jpg
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 cgnx-20211231xexhibit10l002.jpg
M_]C_X  02D9)1@ ! @   0 !  #_VP!#  @&!@<&!0@'!P<)"0@*#!0-# L+
M#!D2$P\4'1H?'AT:'!P@)"XG("(L(QP<*#<I+# Q-#0T'R<Y/3@R/"XS-#+_
MVP!# 0D)"0P+#!@-#1@R(1PA,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R
M,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C+_P  1" 55!!\# 2(  A$! Q$!_\0
M'P   04! 0$! 0$           $" P0%!@<("0H+_\0 M1   @$# P($ P4%
M! 0   %] 0(#  01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D*
M%A<8&1HE)B<H*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U
M=G=X>7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&
MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$  P$! 0$!
M 0$! 0        $" P0%!@<("0H+_\0 M1$  @$"! 0#! <%! 0  0)W  $"
M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF
M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$
MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4
MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,!  (1 Q$ /P#W^BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH ***,@DC/(H **** "BBB@ HIKR)'C>ZKN.!N.,GTIU !1110
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
M%;EKXF\0076O:9?Z?8W6IZ=:QW=O]DE,4<ZON #&0_)@H<G/2H-.^'C65M9
MWL"S1:W_ &Q,MO;^7#GRRGEQID[1@CDD]_6K'B/P(WB"YUV3^T?(&IV,%JH$
M>[88I&?)Y^93N (XXSZT 4M%\=7<_C"PT.ZO_#^HB]BE;=I,S,ULZ*&P^200
M1G!XZ=*Y_P &_?\ AM_USU3^==99^$=6/B/1=7O[_3433!,B65A9&*,B1-I.
M2Q.<A?; QWS2Z+X&DTD^&"U^LO\ 8JW:MB+'F^<>,<\8_'- &MXHU:_TFR@D
ML5L$\R79+=ZA.(H+9,$[FY!8D@  >O4"N0@^)5X=$\13@Z3?W&D2VJK<V+LU
MO.LSA>.201\V>2,XKIO%GABXUV[TB^M)[5;C3)GD2&]@,L$NY=IW*"#D=0>U
M8TGP\O;VW\2+J&LQM-K<5L-T%KL6V>$DKM4L<K]W@G/!YYX -_5=;O;;Q3IV
MB6D<!-[9W4RR2Y^5X]@4<'H2_/?BN)\(>)=?M_!OANP06EWJVKRS_9Y9W?;'
M&A9I'E.26.> !C.1S746'AK7)/%5AK^MZM9SRVEM-;K;VEJT:8?:=V69CGY>
M>W3'?.;8^ -4T[3-,BM]9MA>Z+<2OITYM25,4F=\<R[_ )LYZJ1C H 9J?CO
M6-!T_78-1L+.75M,CM[B+[.S"&YBEDV @'E2"&!!)YQ4YU_QHGB9?#SVFA_:
M[BS-[%<*TOEPHK;65EZN<LN"-O4GVI;SP%?:O9:S+JFJPOJNIK;Q^9#;E88(
MHI X15+$G)W$DGJ?:NB?0F?QI#K_ -H 6/3WLO)V\DM(K[LY_P!G&,=Z .>@
M\9:M=^$;345MM,M;HW<MI>7%W<[+6V,;NI?DAF!*C"CGYN3QFN8UWQMJ>M^
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
M\1Z)<17<EOK%A.MHI:X,5RC>4!_>P?E_&J>A>,-)UKPK!XA-U;VMFZYD,TZ
M0'^Z[9P&Y''O6#J.F65I\3=$BM+."%)M'O(G2*,*'56BVJ0.H&3BN"M)X9?!
MGP_G@OK&VT^QDDBU":XM_/AM[KRP(_.0,N",D9)X+ T >X6FIV%_9?;;.^MK
MFTP3Y\,JNG'7Y@<5'IVM:5K D.F:G9WHB.)#;3K)L/H=I.*\9U*UFO-!\6W6
MF:O!J5M+/9?;7T_32EJRH^960"1O-.S&\*1D#&:Z+PVUM?\ Q TVYL_$6EZD
M\%E*LHT?3?*C$3;=JRN)6 (8 JN,\'I0!Z3=ZA96"JUY>6]LK9*F:0)G R<9
M/8 D^PIEGJVFZC9->V.H6ES:+G=/!,KH,=<L#CBN4\:V=O?^+O!%O=0I-";^
M=BCKE25MW89'U /X5R7B2R6+4?&T-O;'^SDO-*GOK>!/O0=9CM'7*C)QU -
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
MP7#BWLH@98PV%:-]P&>QP,_05P5@;B+1?A[>7.H6=CIT5E<1I=:A;&>WBGW
M+N&]0I* A6)XP1WH ]CN]:C_ +.M+W39K&[@N+B*(2FZ58RK,%)5N0S>BCJ>
M*G_MS2?MPL?[4LOM9W 0?:$\P[?O?+G/'?TKR)(H_P"SKBZM=3BO[6X\4Z<P
MDM;+[/;&02(':+YVW \9(XR#UK9TW1]*N-#^(-U>64CR2:G?1R36T0:X$>P
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
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !28&<XY]:6N.UWQA<Z#JFMV]S#"T5OI(U"PP#NE
M8,49&YY^8QXQC[] '7E5VL"!M/7/2HHY+58U2-X1'LWA5(QM]?I[UPVG^-M1
MU6ST2W>TM5OKF.\;5(MK%81;Y1P!NR,R% ,D\$US=E=+?+9W2VT%LLO@6=Q!
M;J5CCRZ<*"20!]: /80(Y L@"-E>&'.0??TH9HU9%9E#,<(">2?:L+PJ)S\/
M=%%L\:7!TJ#RFE4LH;REP6 ()&>H!'UKR_1I->?P]\.Y8YK.>]DO[DV[2HX5
M5,4H)D^8ER/F/&,\#CK0![:8HS*)3&OF 8#XYQ]:=@ DXY/6O/+GQYJ?A[3O
M$ZZW%97-YHQM_*DM@T4<_G\)N#%BN&Z\GBF:+\09YO$-II5QJFC:K]MAE9)-
M-C=/L\B+OVN&9MRD X;@Y'3F@#T9E5U*NH93V(S1M&",#!Z^]>70_$#Q%:>!
M[/Q-JR:/$FJ&"&RA42*L4CDY>5B3\F 6P!GMGO5_0?'UQ=ZQ=:2U[I6LRBQ>
M[MY]/#0(60@&)P[-MSD$-G&,Y'% 'H#Q1RILDC5U_NL,BF+=6S7+VJ3Q&=!N
M:(.-RCU(Z@5YOI_C_46\0Z182ZQX>U+^T9&@E@TY')M'\MF&9-[*XRN#]TGM
M7*266L0^%/$>I+-I*W<OB3R)KA+-Q*^+M5*[_,SY>[;A?[H(SDY ![O)''*A
M21%=3U5AD4H50@0* H&, <5YMJ_Q N[;Q#=Z*NL:%ILVFPQ?:)KZ*1A<S.@8
MB-0X*( 1R2QY[XI8?'>N^($\-1Z#;:?!-J]M=23/=AW6!X'53MVD;E)+ ?53
MV((!Z+/Y/DM]H\ORA][S,;?QS3]B_P!T?E7&_$_S1\*=<\XHTPM!O* A2V5S
MC/;-+;:WXDT_Q7I>F:VNFRPZK#,\0LT=&MWC"L5)9B'!!QG"\CI0!V.!G..?
M6D\N/:R[%VM]X8Z_6O+W^(NIVFHZ?]IU/P[.]S?16L^E69:2:V5WV9,RN5+#
M(R"H'4"MFZ\;7UCI'B))K:W;6M.OA9VD"A@LYE*_9V(SGG>,X/\ "W2@#MT1
M8T"(H51T"C %)'%'$"(XU0$Y.T8R:\WU;XA74/B#4-*AU?0=-;351)&OXY&^
MU3% Q"A6&Q!D#)W'/;BNS\*Z\OB;PQ8:RD)A^U1[FC)SL8$JPSW&0>: -? )
M!(Z=*, $G')KRW7OB+JFB-=7,NI>'M]O<;#HJ%I;DQ;]N6D5\*^/FP5P.AK;
MN=<\5ZAXF\0Z7HW]DP0Z2(666[BDD:4O$'V85ACG/S>A'!ZT =JD4<2E8XU0
M$Y(48R:>  , 8%<3HGC>YU*\\.275O!!8:YIK3Q,,[DN4PSH3G&TH21QGY36
MSX2UFZ\0Z'_:L\4<<-S-(UHJ @FW#$1LV2>6 W<8&"* -4S6;7PA,D!NU7<$
MW#S OKCKBIPJC& !CIQ7CNF7>J>'U\9^))8M(N;^+64M#+]D82?,UNA ?>2(
MPK<+ZC.3TKO=:\1W>F^)K?3(8H&ADTRZO"S@[M\13:.#C'S'- &EKVEW>K:6
M]G9:I+IK2G$D\,2NQ0@AE&[H3GKU&*LZ;:6FFV$&F605(;.)(DC!R44#"Y_
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
M!<G=CG&,5V]% ')ZEX&M]5N/$3W-Y($UA+8 1KM:W>#)5PV>3NP>@Z=ZFL=
MU\ZA'<ZSXD%W'#"\4<%K:_9T<L,;Y1O;>0.@X ZXKIJ* .2_X0:/_A!M+\/?
MVA(EQIGDR6M\D8!26,Y5]A)!'4$9Z$TV;PCJVKVNIPZ]XB>X6\LGLDBLH#;Q
M1!NK[2[;G]R<8R,<UU]% '$0^"-6DN-!DO\ 7K9H]%G62""UT_R4D 0H=PWG
MYL'@C '/!SQ-<^!#/X8U;2$U,QR7VIOJ4=QY&?)<S"95*[OF *@=1GVKL:*
M./?PIK=MJ<^IZ5K]O;7E]#$FH>;8>9'+*B[1*B[P4..,$L.!Z5;L_";VNJ:'
M?2ZK<W<FF6L]NSW(WO.92A+%L\8*=,=#CM72T4 8_BG0O^$F\,7^C&X^S_:X
M_+\W9OV\@YQD9Z>M1:SX;76=:TO4'NFB6RCN8S&B\N)D"9#9^4C&>AK=HH \
M\B^'.J+H>F:+)XA@6PTRX@GMU@TX(TAB<,/-.\[N!_"%YY.>E;>H^"[?4?&V
MG^(VN706JCS;4)\L[H'$3DYZIYCXX[CTKJ** .3N_"VJP:UJ&H^']<BT_P#M
M+:;J*>S\]1(J[1(GSKM;: "#D''2N@TJQ;3-*MK)KNXNVAC"M<7+[Y)#W9CZ
MFKE% 'G$GPSU%O"]UX8C\110Z3([2(4L!YY)?>!(^_#@'KA03CJ*ZVP\/_8M
M<UW4S<[SJODDQ^7CRO+CV=<\YZ]JVJ* /+/%'AU+7P3H'@>TN+J;6(WB6TNH
M;=@$4'9+(S<JH$;/P3GD5Z99VD-A8V]G;($@MXUBC4?PJHP!^0J>B@#D;KP+
M'=Z'XBTU]0=?[7OS?+*D8!@<>65&"?FPT0/;.<5%'X-U6YUI=6UC7X[JX6PG
ML5CALO*C59-OS ;R<_*<\\\8QCGLZ* .3N_!CS^!-,\.PZEY4^G+:F&[,&X;
MX"I5BF>A*],]^M:&CZ!+IVN:IJL]ZMQ/J,5LD@6'8%:)"I(Y/#$YQV]ZW**
M.&LOA_<Z/8:(=)UE8-4TNWDM?M$MKOCN(G;<4>/<#U ((;C%6V\'7MU:6@U+
M7IKN[BU6+4GD:+$?[L\11IN^1?Q)SDG-==10 UUWQLN<9!&:Y-/ X3P1I'AO
M^T,C3I;:3[1Y/^L\J0/C;NXSC'4X]ZZZB@#QOQ&9;2/Q3H^FWVK637\DQ72A
MI9E:YED7[T,PRJQN3SGE?F^[7?:'X7DT_4[#5)K@>;#HL.FO $X!1MQ;=G\,
M8_&NFHH XF?P#<?V9%#9:P(+RWUJ75X9WM=ZJSESL*;AD 2$9R.E-UKP+J>M
MPWVFW/B!)=&O9C*\5Q9^;/""02D4I?"CTRI*]J[BB@#.UK1;37=!N]'NP_V:
MYA,3%3\P'8@^H.#^%85MX3U:YU+3+C7]>348-+?S;:**S\DO+M*B24[FW$!C
MT"C)S7744 8_A?0O^$:\/6^E"X^T>2TC>;LV9WR,_3)Z;L=>U9NN>#!K5[K5
MS]O\G^T](&E[?*W>7\SG?U&?]9TXZ=:ZJB@#"N_#?VJ^\.W/VK;_ &,[/M\O
M/G9A:/KGY?O9[]*PH_A[<Q6#6T>N;'MM1?4=+F6U&ZV=V=G5_FQ(I\PC^'BN
MZHH XV\\':MK.D:U:ZSXB,TVI6OV5!!;&.WMUY.Y8BYW,2>26]!Q6CKWAJ75
M)M,OK"_^PZIIA;[/.T7FHRNH5T=,C*D ="""!S70T4 <H/#&MRZ?>FX\570U
M2XFCFCG@CV0P;.B+$6.4/.X%OFS51? ,MXVN7.KZE!+>ZKI[:>SV5GY")&=W
MS;2S%FRW4GMBNVHH XX>%_$<5O:>3XF@>:.U^RW$=Q8%[:90Q*N(O,&UP#@G
M<0<=*V?"_A^'POX>MM)AF:982[-(5"[F=B[84<*,L< =!6Q10!Q]IX%%K)IS
M?VCN^QZO<ZICR<;_ #?,^3[W&/,Z]\=!FMBQT+[%XHU;6OM&_P#M"*WC\G9C
MR_*#C.<\YW^@QBMBB@#F]:T'6;S49;G3=;B@@N(1#/9WMI]JAX)PZ+O7:W.#
MU!P,CBLN+X?SZ3;:$=!U@6MWI-O+;>9<VWG)-'(0S J&7'S $8/'2NXHH X>
M'X>/'H]U;R:U+)J$FK?VO#?>0H,4^U1]S.&7AACCAL=LT^^\$ZGK5AJ,>L>(
M/.N;M8(T\BV,<$*1RB3B(N<LQ'+%L].PQ7:T4 8]WH7VKQ5IFN?:-OV&WG@\
MG9G?YA3G.>,;/3G-5_$OAVYUBYTN_P!/U!;'4=-F>2"62'SHV#H4967(R"#U
M!&*Z"B@#A3\/;BXM=86]UPW%UJEW:7<LWV4*$,#(=JJ&Z$( .>/>NBFT+S?%
M]IK_ -HQ]GLI;3R-GWM[HV[=GC&S&,=ZV** .6\/>"+30-9UF_%PUPFH,1%
MZ86VB+,[1KSR"[LW;L.U4K'P7K.GVEKI%OXHDCT*VD5HXH[;;<^6K9$1F#_=
M[9"@D<9KMJ* .)UWP3JFM1ZCI\GB!'T?4)"[P7-GYTT .-RQ2%P%'IE3MSQ4
M][X%2\UC4)FOL:9J6GI87EFT6YV"!PC+)GY2-_H>E=?10!RFF^&_$$-UIXU'
MQ0US96'*106OD/<$+A?.?>=P&>@ !/)K)N_AUJ,NAS^';7Q&+?06E\V*W-D&
MEC&_?Y?F;QE W^SG'&<5Z#10!4U6Q_M/1[W3_,\O[5;R0[\9V[E*YQWQFLJ7
MPE9WG@6'PK?,9[>.RCM3*%VG** L@'."" 17044 <<?"&L0S:;J5KX@C&N6M
MG]BN+J>SWQW<0;<-\>\$,#SD-U)]<5-_PC&M1Z;!Y7BJZ.JQW373W$L6Z&3<
M"#$8=PQ&!T ;((SG-=710!PC?#IY]%UN";5(DU'5KB"YDN+>T$<43PLK)MBW
M'(RO.6R<]:W=%\/SZ;K6I:M=7RW5SJ$%M'+L@\M0T2L"P&X\,6SCMZFMZB@#
MA[3P!<Z38Z,VE:PL.J:7'-"MQ+:[XYXI'WLCQ[@>#@@ANWO3[KP1J-QIUJ?^
M$B=M7@U/^TA=RV^^/?L*;%BW#:FUN &Z\\YKM:* .,E\':Q:S:G'H?B,:?8:
ME,]Q-&UIYDD,C_?:%]XVY//(;!.15F\\*7T6K1:IH>L_9+S[(EG<F[@-RMPB
M$E6;YE.\9;YL\YY%=510!A^$_#S>&=%.GO?/?.UQ-.T[H$9C(Y<Y .,\]?T%
M94GA'6=/U2_N?#?B*.PM[^8W$]K<V0N$65OO.AW*1G&2#D9KL:* .*E^'[CP
M]!96NL.FI1:F-6>_F@#^;<9)):,$#:<XP", "GR^#]8MKC4O[&\0I8VVJ.9K
MJ-[+S&25E"N\3;QM+8!PP8 \UV5% ''GP.^F2:9<>&M173[FQL1I_P#I,'GQ
MS0@Y 8!E.X-DY!'4\4ZV\$%+[2;R^U26_ELS=M<&XCR+AK@ , ,X11C 49&.
M/KUU% &+X8T&3PWI;:8+UKFSCE8VBNF&@B)R(RV3N"\@'CC [5F7_A358O$-
MYK/AW7(].EOU07D%Q:"XCD9!M5Q\RE6V\=<' KK:* .+_P"%?AO#-]ILVJR3
M7^H7L=]=WSPC,DB2(V @("KB,*!GCWK4U;PR-4UV/4_M?E;-/N+'R_+SGS2I
MW9SVV].^>HKH** .-MO ]Q8W.@3VFL>6=,TP:7/FWR;B+Y,E3N!C;* Y^;%1
MP^!]2GO](?6=>CU"WTF83VS_ &+9<R,H(423;SN'/.%&['-=M10!3T^WO;<7
M/VV^%WYEP\D.(1'Y41^['P?FQ_>ZFKE%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%!( R3@4 %%%% !111D9QGF@ HHHH **** "B
MBB@ HHHH **** "BFHZ2+N1U8=,J<T&2,2!"ZAST4GDT .HHR,XSS10 4444
M %%%% !112,RHI9B HY))X% "T4BL&4,I!!Y!'>D$B,Y0.I=>J@\B@!U%%%
M!111D'H: "BBB@ HHR,XSS10 4444 %%%% !1110 4444 %%%% !1110 444
M4 %% (/2B@ HH) &3THH ** 01D'-% !136D1656=0S?=!/)^E.H **3(]12
MT %%%!( R3@4 %%%% !111TH **** "B@D 9)P** "B@'(R** "BBC(/>@ H
MHHH **0D 9) 'O0"&Z$'Z4 +1110 4444 %%('5NC \XX/>EH **** "B@$'
MH:* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ K!\3Z!::W#;RW\=Q>6ED7F;3HL%;MMORA@<;L=@2!D\UO5AZ_I.J7MQ8WV
MCZH+2[LV?]U,K/;W"L,%9%!'(P"&[<^M &!\,I5$&NVBQ2620:BQBTJ;.^QC
M95VJ<\ ,06 4E1G@]:[NN3T_PSJ]C#K.H#5;8^(-5>-GN!;'R(EC&%18RV2
MN[DG))S764 %<5K3%/BSX<8*6QIE\=J]3S%7:UPOB*^TBV\=V-]=W]W#)86D
MUN\4.GSR9\W80P=$*\;??K0!6\)^.]3\1W]ISHCQSLPN+"*=DO+' )&]7QOP
M1@X Z\9%-TCQ[JFK:W]GB&C+MO6MIM*DG:*^BC#E?,^8@-P VT#H>N:P([FS
MN]4TB;6=:%TFE7"SQWD?AZZ2\GV@A5DDVD <_-@?-CM3;Z>SU66WM=2UPW5C
M;W:W,5V_A^Z^W*JR;Q&)-N!_=W =.U '=1>++E]"\77YMXM^B7%S%$N3B011
M*X+?4G'%4]3\6ZK#;:=,DNA:7;7%C'<M>:K<[4>1ADQH@8-QU+'U'6N4U"\M
MY/\ A(;'3O$,EOI6NO)-.LF@W;S1.\81PC;0,$*.HR,G'K0+G3[+68=2T[5(
MY)?[/@LG-_X?NY3#Y0(WQ848SG)7U YH W;3X@ZMJVE>&I--T^Q>\UBXN;9M
M\K>4C0[LNK 9*_(3C&2./>IV\=:IIMIK5KJ=A:3:Q87=M:0):NRQ7+W&WROO
M9*]>>O3BN>T231-);0?-UN]N?[*O;RY+G1KI6F$X?@X3 (+Y/KCM4^IS^'-3
MN]?N#JU_#)J,UI<6TB:/<DVTMN!M;E,-R.G'&1[T =+?^)O$'A?3=3O_ !)I
M]E-9VMIY\=S82%5,FX*(65R2"21AAQC.<50T7XAR3^(=,TR^U#P[>C4MR)_9
M%WYKV\@4L%<9.Y2 1N&.>W-8]WJ5GXBMK^'Q+X@NWBN+0VT=OI^CWD42-N#>
M<0RMN<%5QV SZU8TOQ&JZK9W&K:[OM[-6 CL?#]U";EB,!I25.,==JX&?RH
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
M=0U62>&XDA,/GIL1=ZH>54E3MSV Z]:M:GX0OKO5_$,]OJ%O'::YIWV2>.2
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
M* "BBB@ HHHH **** "BBB@ HHHH *3 SNP,XQFEKA=0;5C\8],CANK9;/\
MLF=S$\;D[?-B#=& W$XP<<#(P: .T@2W\H&!8O+)W Q@8)]>*D$: L0BY;[Q
MQU^M>0>#M;\2:#\._#FHNFF-HS316K6^Q_/V23;/,W[MN<L#MV].^:T-5^)L
MRZIK,=GJ>@V4>ESO;K:W^\S7;H/FP58",9RH.&Y&: /3DABBC\N.-$3^ZJ@#
M\JCFO;2VE2*:YABD?[B/(%+?0'K5'3];34_"MOKEO"P2>S%RD3=1E=VT^_:N
M/\$^$M#\0>"[35]<TZUU34M7B^T75U=1B1R7YVJ3R@48 "XQB@#T,QQEBQ12
MQ&"2.2*7 )!(&1T-<5-<7_AJ'P_X2T2Y6]O;H3!+S4B9!##%@DL%P7(W*H&1
M[GBL_4_'.NZ'I^N6MW:V%QK&F/:-&T0=(;F*>4(#M))1A\P/)&<'D<4 >A+!
M"A8K$@+G+84?,?4T_:N"-HP>O'6N"&L>-O\ A*7\-L^A?:'LA?)>""79$F\H
M4*;\N<XPVY>,\=JKVOC;Q%JMIX8BL;73HK[59+R&Y>4.T<+0,5+J P)!VGY2
M>X&1UH ]& P,"FB*,!@$7YCEN.I]ZXJ/Q5K=O:^(;&ZATU]7T@PD3F0P6TD4
MHRLC;B2FT!LKD_=X/-9NE?$"\FUN]TTZGHNL(FF37L5SIT;HJ/&0"C NP8'<
M.0>U 'I&!NW8&<8S33%&TJRF-#(HP'*C('UKS[3_ !;XH%KX7U?4XM*_L[7)
M88#;6Z2"6$RH61]Y8@].5QQG&3UJP_C;48_#U\K6]J?$,&J_V5'!M81R2.X\
MM\9SM,;!SSV- '>5$(H(4=A''&N=['  SZG_ !K+\4ZM=Z%X7OM2LK3[7=6\
M898@I(/(!8@<D $L0.< UQ9\3W6O>#_%*-JVB:K:KH\[K/IX:*2-]C H\3,S
M#U#9'IB@#TL!&3Y0I1N>.AS2/%')MWHK;3E=PS@^HKSS0M;\2:3;^$(]333'
MTW54CM4B@1Q-;MY)="7+8?(0@_*,=LU3U[XBZGHC75S+J'AT-;W&PZ,K-+=&
M+?MR9%?"MCYL%<#H30!Z:9H(]P,D:[,;AN VYZ9],TLBP*WVB18PR _O& RH
M^O:O(_&'_'YX^_ZZZ+_Z,%>@^.+I;+P+KETUM!<K%92N8)P3')A3\K $'!^M
M &\ OW@!SW'>D:.-HS&R*4/!4C@_A7FVL>.=1T_63IL=WHVCI':0R6O]IQ2;
M+UF7)5) RJ@!PO.XYJSXD\;:CI>KV-D]UI6C13V27 O-0CDF@EF)(,2NK*HQ
M@$L3R&&!0!Z"B+&@1%"J.  , 48&[.!GIFN4L_$VH3:YX=T^>&S U+3Y[F=H
M)/-4.ACQY;@X*G>>Q[5CZM\1KC2[+5FE2RCFBUP:3:23%EB4&))/,E.<D %C
MQC. />@#T%HHW1D>-61OO*1D'ZTHCC P$4#&W&.WI7#^$?&[:QXCN-#GU#2]
M3=;7[5%>::K(A 8*R.K,V&!*D$'D'MBE\0-JW_"UO"T=M=6R6C6MTS1O&Y)
M,6_HP&<$!3CCG.<\ '<;0#G STS00"02!D=#Z5YS_P )EXEF\,3^,[>WTTZ'
M$7E6Q9'^T26Z,07\S=M#$ L%VD8XS76>)9YY/!>IW.G3)'*UD\D4CJ2 -A.>
M"#G'3G@XH V"8@_EDH&?)VG&6]>.]$D,4H421HX4Y&Y0<&O(=/\ ^$@-_P##
MQ;6;3VOI-#GQ-+$_EQQ%8""5W9=L8'4 DYXZ5KW7Q&O])T&[&I)IR:K!K']D
M"<EDMLE!()6!)8*$)RN3R,9YH ])P"0<#(Z&FN(PCEPH0C+9Z8]ZXGPCXW;6
M/$=QH<^H:9J;K:_:HKS359$(#!61U9FPP)4@@\@]L4GBB!/$/C_1?#5_EM)%
MG-J$]ODA;EU941&]5&XMCH>,T =E:W-G=*QLYX)57"DPN& ]N*E>&*2/RWB1
MD_NLH(_*O.KA?!^C^-]+%E87>BZA'<BU$EIIKPV]WO4@1,P4(PS@@]05J[I7
MB3Q5J<NN7J6VE?V=IEU=VD<!+)+.T1.TERVU!]T$D'H3QQ0!W0      Z 4W
MR8C+YOEIYF-N_:,X],UYUH_CV]F\6Z1I,^K^']5343(DBZ6KYM76,N 7WLKC
MY2.Q[U!#XV\5GPM%XKF@T@:8MV();54D\UT\_P DNK[L*<_PD'IUYP #TX*H
M(PH&!@8':F^5'M=?+3:_WAM&&^M>9RZ]J/ASQ?X\U>]F@GL+"TMI!;JC!SE7
M\M58L0O).XXY)R,4_1_B/,^N:59WNJZ%J$>HN8FCTT.)+1]I89+,=Z\;2<+R
M1Q0!Z2L4:1B-454'10, ?A3Z\@7XP.UC_;@U#0_L7F_\@CY_MGD[]N[?NV[\
M?-MVXQQG->@>-Y+I/ >NRV,R13K83.LC G "$G&""#C.#G@X//2@#;Q")L8C
M\UANQQN('?\ "GX&[=@9Z9KR:R'B$^)?"*6DVG&_?P[*&GEB?RXX]\)!V;LL
MV-H^\!DD^U7[GXD7VG: RWZZ;#JRZQ)I)G<LMJI0;C,1G=MVX^7.<GK0!Z0D
M,4;LZ1HK/]Y@H!;ZT_K7$>#O&K:WKUYHL]]INHR0VZW,5[IRLL;J6VLK*S-M
M8''<@AATJUKVMZZGC"Q\/Z,M@GVJREN7N+M'?RMCHN0JL-WWL8R.N<\8(!U4
M<,449CCB1$/\*J /RIVT<<#CIQTK@;3QMJQMK&*[M[+[;_PD1T6[:(-Y;*%9
MMZ G*D@+P2>]6O$'C"_TF]\3PP06S+I6C)J$)=6):0F3AL'[OR#I@]>: .R,
M,1D,AC0N1@MM&2/3-*TB)MWNJ[CM7)QD^@KSYO$7C2/6-&L)(]$#:Y;R2P$)
M+_H9158[_F_>\-CC9S[5D:UK>MZQIND1O#9-K&G>+5L=R;E@D98G(?!)8##
MD9/0T >KI%'&S,D:*SG+%5 +'WIP '0 =^*\_P!0\<ZEX3&LV_B&*SNKBRL$
MO[:6S5HDF5I/+V,K,VTARO.3P<]J@T+XA33^)-,TN[U70]374=Z_\2L.K6L@
M4L VYFWJ<$;OEYQQS0!Z,8T9MS(I;&,D<X]*7:..!QTXZ5Q_@'6_$?B72H-:
MU5-,AL;F(F&"V1_,#!MNYF+$8."<8XXYZU)?:UKNH^*;W0_#YT^W&GP12W5S
M>Q/+EY-Q1%567LI)8GOTH Z:=K2VS=W!ABVC!FD(7 ]-QI+I);FPE2TNOL\L
MD9$5PJ!]A(X;!X/TKR?7M1U/QBWA>">#2XWCUJ:SN[2Y@:>$W,4<H)^\-T>!
MD C.2.>.?0O%FK7'AOPI<7VG6:S26X15C",4C4L%+E5Y*J"6('84 3Z!HL7A
MS2GA>Z:XEDE>YNKN8!3+*YRSD#@=@!V  K46*(2&98TWL.7 &2/K7EVI>([K
M7OAWXN#ZIHNJ6L>ER-'=:;NC8,5;*21,S%3P"#GGTK9TO6_$FG:KX;LM733'
ML]7C:.-+9'$ELZ1>8 6+$."%() 7F@#N/)B\PR>6GF$8+;1DCTS3@JCHH'&.
M!7EVI?$75-+N%FN-0\.LPO$AET:!FEN8XVD"9,JN5# $$@J!VZUL?\)3KS^(
M?$)V:=%H>@R9N'9':>9/(60A?FP",GD]<CCCD [D@'&0#CD9HV+@C:,'J,=:
M\IT[XJ3RR:5=W.HZ%/!J$\<3Z;:[_M-J)#A27+$.5)&X;1WQTJ['X\U6;Q+<
M6'VK1;2:&_-NNDWJO#<2PA]OF)*S!6)'S !2,<9S0!Z53=BX(VC!.<8K)\5:
MZ/#7AJ]U;R#.\"J(X@V-[LP1!GL"S#FL%]9\5:1JNFV.L-I$HU;S(+>:UAD4
M6UP$+JK@N?,0[3R"IX[4 =A'<6TT\D4<T3S1<.JL"R9]1U%-N;JSLPINIX(
MS?*97"Y/MGO7#?"+3Y8?"TM_<1V!GN[F<M-!;E)9")Y ?,<L2_/3I@<<]:J:
M_HL]IXSU/6-3\(+XITZZCB6%D\N66R55PR"*3 ()RV5.>>: /2?+B=UFV(S@
M?*^ 2![&G;1SP.>O'6O';J6)?!VD1>$[^6*U7Q)#&UKJ$+A[1S*I$!4,I"*3
MG:<Y!&"*ZU-;\5:UJ&K1Z%_9,4&E2_97-W%(QNIPBLX&UAY:C< "=QH [8
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
MQUB6!()+D.3&AR%VNR]?PJGX>\:V.H>$;#6]7N;/33="5@DLX5<([*<%L9X
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
M9?8&-U!YZ7$6[=\X#*0V[+9!'WCQBI;;P0RWVDWE_JLNH2V9NWN/M$>1.UP
M& &<(@Q@*,C'%;VN7TNF:)=WL+6BR0IN4WDWE1#G^)NPJ'4?%&@:.[)J6LV%
MI(I4,DUPJD$C(X)SR.: (_#&@R>&]+;3!>M<V<<K&S5TPT$1.1$6R=P7D \<
M8':LB?PCK%K>:H=!\0)I]IJDS3SQ26?FO#*P =XFWKM)P#@A@#S7712QSPI-
M#(DD4BAD=&!5@>A!'45E2^+/#L&JC2Y=<TY+\L$^SM<H'W'HN,]?;K0!F7/A
M*_M]3@U/0]:-M>BS2RN7O8#<BX1,E7;YE/F EN<\YY%<WX;\*7^H>$+9/M\M
MIJNFZY=7<%U<6^[S&\V1273*Y#*Q/!'7(KN]4\2:'HD\4&J:O8V4LO*)<3JA
M8=,X)Z>]+JGB+1=$CB?5-5LK-9O]69YU3?\ 3)YH Y.Y^'-UJ5OX@.IZ]Y]W
MK"6NZ1+0+'$T#%E 0L=R'(!4GL>>>-&T\)ZJWB;2]<U/6K>9]/BFA2UM;+R8
MML@ .,NQ!RH).2., #K6Y?\ B'1M+L8KZ_U6RMK6;'E32SJJR9&1M.>>.>*6
M37]'BTZ'49-5LEL9O]5<&=1&_!/#9P>%8_@?2@"#PKH7_",^%]/T7[1]I^R1
M>7YVS9OY)SC)QU]:YT?#ZY6VN84UO88]4;5-,D6U&ZUE9G9U?YL2*=Y&/EX_
M3H)O%_ANVM+2ZGUW3H[>\YMY'N4"RC."5.><'\JI:)XSL;OPG'KVK7%IIT#S
MS0[I)@J?)*Z#!/4D+G% #]&\-WMOK\VO:SJ4=]J+VPM(A!;^3%#%NW$*I9B2
M6 ))/85+K?AZYU+7]$U>SU!+2?36E#*\'FK+')M#K]X;3A1@\X]#5VV\1:+>
M:8=3MM6LI;$.$-PDZE Q( 4MG .2!CW%)IGB+1=:FFATO5K*]E@_UJ6\ZN4^
MH!H PF\"AOA_<>%?[1_UTLDOVGR>FZ<S8V[NV<=??VJ6\\+ZK!KFH:IX?UJ&
MP.I!/M<5Q9^>N]5VB1,.NUMH (.0<"M:T\3:%?ZF^FV>L6$]]'G=;Q7"LXQU
MX!SQW]*!XFT)M8.D#6; ZB#M^RBX7S,^FW.<^W6@"QI-@^F:3;64EY<7CPIM
M:XN'W22'NQ/^<5PA^&>I?\(M+X8C\10Q:5YGF1E-/_?N?,\P"5]^& .,X"DX
MZUZ%=7EM91I)=7$4".ZQJTCA078X51GN3P!35OK1[Y[%;J$W<:"1X XWJA.
MQ7J![T >9>(+C^Q]>\016>I:GI;7P622V32VN/MDAC"[[9UR%8X"G<#@C..]
M1+8R^%]+\(RSW-WH^IV^D_99KP6)N[?'RL8)54Y#9Y4\#AN3TKL-5\;66EVV
MH:E]KTVXTVVTX7D9CNU\V5BS  #IM8J%5N[$CM5;_A8>EKJ.E^==V,6EWNFR
M7C7C7(V(Z.B; W0\L1ZY% &'X1\+7FJZ7+>7EW<KN\2_VO#-<VVR2Y1%502G
M&P,02..!CBNIU7PUJ#^(3KNA:I%8WLMNMM<I<6WGQ3(I)4X#*0R[FYST.,5N
MV&H6>J6<=YI]U#=6TG*30N'5OH17)S>(O%%[XMUG1]#L-'>+3/(WR7US+&SF
M1-PP$1NG- &?XATN30K/0[J[UC4Y-2MKJ9_[9^R?:$B,BG<LD0.1$W"@+]TA
M>1UK)TCPK>>+D\53W.I7#QWUS9O;7T]EY:2M -W$+8S%DA<$\X)R>M>A:?J-
M_:VL8\3R:59W4]P(;=;:Y9DD)'"@NJDN3NX [55\4^*[?0='O;FVDMKF[LY;
M9)K<RC,8EE1 6 Y'#$C/7% %6Q\*:F/%-EK^IZS!/+;6TML+:VL_)B".5.5R
M[$'*\DDYXP!CG/LOA[?:?I.EV]OKR"]T>>1M-N39\+$XPT4J[_G!]05/ ]*Z
M>Q\2Z-JXNETG5K"]EMU)D6&X5MG^]@\#WK!3Q[;VFI:=;ZQ<:9:VUSI/VY[M
M+H&+?O50J,<!@=Q(/?% &WH6E:G8RWEUJVL-J%S<LIV1QF*"!5& L:%FQG.2
M223QZ5LUD76MQ-:Z9=:==Z?/;7ETD0E>Y 5T.<^61D,_'"]^?2JOA?QAIOBM
MM26PF@<V-T\!$<RN70<"3CHK'./7% '0T5SGC/Q)<^'-*@?3[-;[4[N<06MJ
M6(\QL%FSCG 56/Y5J:)JUOKNAV6JVIS!=PK*OJ,C.#[CI^% %^BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ KBY[2&?XSV\TL"R&+07,;,N=K&<#(
M]#@D?B:[2HYIXK= \TJ1J6" NP +$X Y[DD ?6@#QV%XM'@L;Z=3!ING^,KT
MRN$.R"-O-52<=%RP&>@S4/B6_MM=MOB-=6)>:TELM.2.4(0LH#N"5)ZC.1D>
ME>V=:* .&N=*LD^+FB;+*%4@T6X\O$8 3$D87'I@,P'U-<5$UAI[:#)J4'_$
MNM?%.IL1Y19(@#+M; '"J<'/08SVKVKSXO/\CS4\[;O\O<-VW.,XZXSWHDFB
MB:-))41I&VH&8 L<9P/4X!H \<\0Q2^(;3QQJ/AI'FTRXBLE:2",LMT\<A,Q
M0<;\1D*<?>QCFKNES6VK^+]+N+3Q&FK/9V=P&^P:8L,<43)@),^_Y><%5P3E
M>@ZUZUTZ4  =!0!QWPML+:S^'&@M#;1Q226:-(0@#,3R<GOR364-3TCP[X\\
M4R^)WBM_MRP&SFN$RLUN(@K1H<')#[LH.3N!P:]&R,X[TAQQG'XT >2>&+"Y
MM;GX>1W5K)#\VIO'%*OS10L"T2G/3"E>.W2NF^*\)N/ DL(+C?>VBDQDA@/M
M$?((Y!]Z[:D)"J68@ #))[4 >5^)O#,/A35-*\0W$^J:SHEM.HO+:_O9;G[*
M2<)<(I;G:>H(/!R,=:H7MQ_9GB_Q4^J>(+33$OV22#[5IPN!>6WE* L;%ANP
M=PV#OSWKU2+7=(GE6*'5;&21CA42X0DGV -:& >HH \9$-OH-MX;E.O7FB7\
M>D>3%=ZO8H8)H=^X0NN\[)!QP&SC'7H)[74HH;3P!JFHV%MIEG%?7<;&&)DA
MPT<JHZJ>55S@@'UKU\@'J** /(AI\"?#+XA7*VJ"YEOM5)DV?.WSL!SUZ"K]
MGJ6D^'O%VM7'B9XK>.^L;064UPF5EA6+$D2G!R=^24ZG<.#7IU& >M 'E-O-
M;6GBK0C;64FC)>^')[73H+D$,DIE0HF><-@9P3P*YO242;PQH6@RZ\4U&"Y@
M_P")5;Z0OVRWN%<%F+%P0 029#@%2?7%>]48&<XYH \DN[[1])LO'FE^($7^
MT[^YGE@BDB+/=PM&!#Y?'S;<8X^Z0>E=_P"$MZ> ]"V*#(-,M\*QQD^4O!]*
MV)IH;>)IIY$BC099W8*%^I-24 >*3WG@N2VN+XSZCX4\5G<9[*QDE20S^@C
MV2@GN!R#S6Y;WM[#XP\)W6O[;74[W0);<LZ8!NV>$[>!@-P3CZUZ7--#;Q-/
M/)'%&@RTCL%"CW)Z5$NH63V@NUO+=K;./.$JE.N/O9QUXH \:-UIK_":#PI#
M$1XN5D067EG[0EX) 3,>,@9RV_ICO6['J>B:#J'C2U\4QHUW?W;21Q21DM?6
MQB18TC_O8(9=HZ&O4<#.>]&!0!XEJNCZA>^)-8O;.TD^Q:=9Z7<W&A2KG[4B
MK(?*9L\E &P.06QG->Q:9J-KJVEVVH64@>UN(Q)&V,<$>G8^W:G3ZA96MS#;
M7%Y;Q3SG$,4DJJTA_P!D$Y/X59R!^- 'EO@[QCHO@[PE'H&NW+V>K:=)-$]H
M\3[Y?WC,IC 'SA@1@CUJGH6AS6B?#"RU6SQ+&;V=X95SY;-&SKD'H1D?0BO6
MHIH9]S121R;&*,48':PX(^H]*%GB>9X5E1I8P"Z!@64'ID=LX- 'D?B&#RKO
MQK'%%LC.M:0X55P"28"QQ[GK4FJMI;7GQ"TK4OM:-+<6UWMLXMTPB5(/WJJ>
M&57 +#G@'BO7*;)(D4;2R.J(@+,S' 4#J2?2@#SGP3JLM]XSN8_MNF:]&-/!
M.M6=KY+KAQMADP2I)R6 &",'BM'Q5<VUA\1?!UW>,(X&6\MQ*R_+YCB/8N>Q
M)!Q7:121S1)+"Z/&X#*Z$$,#W!'6GT >-7&GP+\$_%LJVJ"XDO[V4ML^8NMR
M0K>N0 ,5H:UK*Q^,O$5J;O3]%<QQ1D26+7-UJ2^7QY8+;2!DJ%"MSG->JT8&
M<XYH \:\,W,%A!\+;F^;RHOL=W:F1U.!*WEJB$]B2I SZ5V7Q*MH[S1=)MYH
MA+#)K5DLB,,AE,HR"/3%=G10!YIXJ*Z?XRUJXATO[8/^$5DWVJ @3XEP%.WG
MH3TYQTK!M=2%[XH\#O'K6GW\4-TR"/3+$Q0V@:!P$,A9CD] I()P>.*]IH
MZ"@#RBQTZY_X3"'P.T#C2M.U!]95\?(;<X>*/WQ,[<>D=8-P?L5OXMTK6M=B
ML[B\OKEGL'TH3SWB.?W9B)8;\KM"X^Z1VQ7NM)QD=,]J ,JVAEM_"$,$SS22
MQV"H[3*!(S"/!+ $@-Z\GGO7E&E7ND:A\.O"&@Z/&!X@BN+.80+$1+ RNK2S
M-QPI7<=W0AAUS7MM&.<]Z /"K@_8K?Q;I6M:[%9W%Y?7+/8/I0GGO$<_NS$2
MPWY7:%Q]TCMBM&476@>,))M6\0)I22Z1:0VUYJ5@LOFA%(E3=NPC[OF*@G.X
M=<5[)@9SB@@'J* /']&TJ#?\/X76>XLSJ-]/$+NT$.%,<CJ1'EMJYY7/;' K
MK_#,*P_$'QJL<82-I+-\*, L8>3]3WKL:* /*-?EFTGXFZK>ZAKEMHUO=6,"
M6=S=V0GC=%W>9&K$@*=QR5ZG(]*SK:Z30])\*QK-!:6\LUY-;ZOK-B42T#-D
M*D0?"[P3MW,/E'3M7L[%0I+$!1R2>@IL<D5Q"DL3I)$X#*ZD$,.Q![T >%,B
MZCIGBF*:4WL5QK^F,TAM?(6=&:(%@G]TX//<<Y.:] U+3;0_%7PT!:1".#3K
MR2,",!4?=$,CT.":[BF&:(3B RH)F4N(]PW%1P3CTY'YT >+ZO8W']BZ]]F4
MPV-KXS$]UMM_-5(1%&2QC'WU#D,1[$TMY;W/B%O$EQHFNMK5ZVA26S2V-@L,
M#Y8%8RX<[I,!@ !P&/(Z5[52#'08X]* /+)=9\-:QXJ\!IH:1M+:W$B,(XB#
M:Q_9Y!Y;\?*<@?*>?E-=#\2+];#2=,=[>T9&U&(&[O49X+,X8B5U4C.",#)
MR1DUV>*.M 'B$MRU[?\ CF8:DFIB;PN^+J"T\B*4KY@^3!.\#(&[)],\5U-U
M806<OPV^RVR1&*;RP43&U3:/D?0D#->C44 >%7E[I%M\)3X<OHQ_PDD%TIGM
MC$3,)_M +3'C[I7)W]"#C/:O9=<TF#7M"OM*N?\ 4W<#1,?[N1@$>X//X5<E
MFA@V&61(][!%WL!N8] /4^U2$@#)X% 'DFBC7/%EEK6H3121:II6D2:+;;N,
MWI4^=(I]R(@#]:R]%-O>V_A'3(]?\RZL[J!UTVTTA4N+1D^_YI+@HOW@S'KG
MH<U[6L\33/"LJ&5 &9 PW*#T)';.#^528&<XYH \2GOX=+N);73+R&^_XFYD
M/AG5+$?:EE,^2\<B'.,DNK'(QW[59\3I+<2?$C2+,/\ VE</:W20)&2\MLJ0
MB4J/XA@,, \]*]DP,YQS4-S=6]E T]U/%!"OWI)7"J/J30!Y7I<D6M>+M'ET
MWQ+'J=Q:6LX7[#I:PQVZ-'M"3-O^4;MI"X)RO0=:R)+_ $-?AMX?T!H0NOV5
M_9B>U,1\Z"83H)9'XX#9;YNAW#GFO:++4+'483-87=O=19P7@D5US]0:LXYS
M0!R/Q14M\,]>"@DFWX _WA5;1;"VN/B=XOFGMHY&-K8Q!G0'Y2C[EY[' S]!
M7;T4 <A\+0R_#/0E8$%8",'L [ 5Y9KVL&^\!ZK#'=6%A(;EY&T&UL6>YC83
M9+RR,Q(/&XMM [ U]!9!_"C SG% 'FG]J:+H/BSQ>?$YC0ZAY3VK31EA=6WD
MA?+CX^8A@P*CG)SWJ#2]0TGP]XJEOM>M3I%E=:-:1Z8MZ,B&-0_F0;N<-DJ2
MN<FO4L ]J" >M 'E&G7NCZ/XHT?6;W3WT?09-(>'3OMBD);RF=F8'.?++H5(
MSC@8]JS5LH=0>RFCLS_8E[XS2>SBDB(1X_(;<X4C[C.K$>O7O7LL\T-O"TMQ
M(D<2_>>1@%'U)J2@#SN:[TCPU\1-9N/$ AMK2\L+>/3Y98_W91=_FQ+QC<68
M';U.1UKD](U&+3/"WA!4ALM,A:[U%HM1U.!F2QQ,^U-NY0'8' W$8VFO<,9J
M WEIDJ;F#(E$)!D'^L/(7_>]NM 'AUQ_IWASQ^KSF]2>_P!.;SOLOD+.I:(%
ME3^Z<'![@9R<UVOBG3Y1XVLHM)B6"ZE\/ZA!$T2A<,/*\L9'8$\>E>AD@#)X
M%1B>)IV@$J&55#-&&&X ]"1Z<'\J /-?#^K^&I]%\*Z-:6/GZS:"-1;)&5ET
M^58R)))1QM .0<_>)[UQMA&3X,M?#M[KYBU5;I0^E0:2KWJW(ESY@8N,\_-Y
MG V]^U?0&!G-&!G..: ,+QEI#ZYX0U.PA_X^7A+VY':9/GC/_?2K7D5QJ.J3
MPKXZLK:9;OQ')/I$<>#F,-&B0DCL!)"Y_P"!U[U10!Y+KFCK87?B32K.%GCM
M_!*6\*JN2VTS  >]7='DT[6_&OA&]MQ%<V\6@SF*3;D)(KQ(<9Z$?,/SKTTG
M R>E5K/4++4(C+8WEO<QJQ0M!*K@,.HR#U]J .7\ 1"!_%42((XUU^XV*!@
M%8SP/J37&:F_A>+XG^*SXDU2\L"PL_(\BZGA#CR?FSY9&<<=?6O9** /+]5O
MO"]W\/;G2M#GN=7>ZN!;V:-<2O*+IL%&#R990F ^>@ K%O+<0?#37_#^J0E]
M=BU*V?4I&RWVT274168''*E>,?P[<5[,\\4<L<3RHLDF1&A8 O@9.!WXJ2@#
M@]:M8K?XCZ:;>!(P="O8V\M, J&BVKQV'.!7(^&K_2M'U/P5>ZULAAC\+A8[
MB9/DAD+IR3T7(W#)]<=Z]JHQGK0!X[;Q%[:QO+:%X],O/&J7%BI0J#"4(+@'
MHK.'(^N>]=7\/[FV2_\ %6G;@E[%K5S,\)7#"-R"C?0\XKMZ* /.M0@UGQ+\
M2I9M(O;6TA\/0"!9+JU:97GF&7V@.O*H$&<G[QJ?X?+>:!JNM>$-1ECE>WD^
MWVDD41CC>&8DL%4DX"R;AC)ZBN^J".]M)C$([J%S*&,>V0'>%ZX]<=Z )Z**
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "N1U*4ZC\3-(TJ3_CVL+&7
M4RO9Y2PBCS_N@R'ZD>E==7+:Q9S67C;1M?AB>2%XGTR[V*245V#1OCT#KM)[
M;\] : .;7QQJQ\32V5SJ>EZ=<)?F"/2=0M9(C- 'VATN"=K,R_,  1T'O716
MGB.]G_X3#>L/_$HF:.VPIY @23YN>>6/IQ534/ =YJ<4^FW?B*>;1)KG[0UK
M-;K),OS[]BS$Y"YZ<9 X!J74/!%W<:CK$MAK\UC9:P ;VV6W5V+;!&2CD_)E
M0,\'VQ0!S=G=:]KWC30[ZPN;.SNKSPM%/<SR0&54W2!B$3<.2WJ>!GK5Z#Q1
M>7]YH=MJ-E827]MX@FTVXD$1*AD@=Q)%DY0E2OKC)%:2^!+NSN=*N]*U][2Z
MT_2H],!:U61)44YRRDCT!X(QCKVK+FT)=+\1>%])M?MM]>+J<NJZA>/ P5BT
M4JL[,!L4EB%"@Y Q]2 9,GQ3OIK2ZUFUOK 10S.(='-E*TL\2,5R9@<*[ $@
M $#@&NH.M>(O$6LZK;^'KFQLK;3!$NZ[MFE:XE>,2;3AEV* RC/)SFG+X%OK
M:"?3=.\375CHDT[2FUBA FB#-N9(YLY522>Q(SP:MWWA*]&KWVH:'KLFEMJ"
M(MVAMUG#,J[5="2-K[<#/(.!Q0!C6)UV?XN6\E[-;6Y.@I)/:+&7V9DPR*^[
M&=XSNQTP,=ZL>.TU)_$_@U;&]AMU;47&)(#)\WD2')PPR,9&/4@YXP=*U\&_
MV;KNEZC8:G-&EG8BPFBF02FXB!W ER<AMW)/>K?B7P[+KITV>UU!K"\TZZ^T
MPS"$2C.QD(*DC((8T <X?$/BG4],U?Q!I4NFQ:?833I!93P,SW2PDJY:0,-A
M)5L *<<9S75+J,>K^$!J4*E8KNP\]%;J \>X _G6%<^!+O9J5CI_B&>RT?4I
M9);BT6W5W4R?ZP1R$_(&R>,'&3C%=2NG00Z.-,MU\JW2#[/&!SL4+M'Y"@#Q
M71;?2=2^%]GI]O\ #N\O-3GTX1QW@TZ)%:4K@2><2"!G!W=:[+4M8U7P];:/
MI-YXCTG37CTZ/SKFYC-S/<S@;6"Q!E.WC);G)..*[#P[HZ^'_#FGZ.DQF6S@
M6$2%=I;:,9QVK*U#PK>OXHFUW2M9^P7%S;);7"R6JS@JI)4H21M/S'U!XXH
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
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 5S5WXRL+/QS:^&)'B6:>U:;>SX(?<H5,8
MZD%CU_AKI:XK5KA+#XL:-<7(D2&YTN>TBD$;,IE,L3!20, D GGTH 7PE\1=
M'U[3-+6\U*P@U>\3)M$DZ.2<*,]R,'&<\UM:CXN\/:1?K8ZAK%G;71 )CDD
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
M+M!!V[1G)QQQ0!Z!XI\0KX;TJ.X2V:[N[F=+6TME;:9IG.%7/8=23V -9/\
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
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** .4U#P-#?S7RC6]7MK'4'+W=C#*GER$C# $J
M74,!R%8?A73P0QVUO'!"@2*)0B(.BJ!@"I** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *S=*T2VT
M>?4I;=Y6;4+LW<OF$$!RJKA< <80=<]ZTJ* "BBB@"IJ=E)J&G36L5[<63R
M 7%L5$B<@\;@1VQT[TS1M)M="TBVTRR#B"!=JEVW,Q)R68]R222?4U>HH **
M** "BBB@ HHHH *J:II\6K:3>Z;<,ZPW<#P2,A 8*ZE3C.><&K=% $%E:QV-
MA;V<18QP1+$I8\D* !GWXJ>BB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBJ>J:G:Z-
MI=QJ-[)Y=O F]R!DGT '<DX '<D4 7**Y_P9XBG\4^'$U2XLOL4K3S1-;EMQ
M39(R8)]?EYKH* "BBL*]UZ2U\9Z7H0@1H[VUGG:4MRIC*  #WW?I0!NT5CP>
M+/#MS?PV,&NZ;+=S*&BA2Z1F<'D8 /-27WB70M+OXK&_UBPM;N7&R&:X5';/
M3@G/- &I167JGB30]$EBBU75[&RDEYC2XG5"P]0">GO3M0\0:-I,:2:AJME:
MHZ>8IFG5-RY W#)Y&649]Q0!I45C3^+O#=K,D,^O:9%([[%5[I 2V <=?]H?
MF/6K&JZ_I&A1QR:MJ=G8I(<(;B94W'VR>: -&BLZYU_1[.RAO+G5;**UF4M%
M,\ZA) !N)4YP> 3Q5:[\7^&["&VFN]>TV".Z020-)<H!(AZ,O/(]^E &U17-
MZEXVTC3?$.B:2]W;%M55GCE^T* J@?(??>3A?7!JU;>(+:+2KK4-6O=-MH(+
MF6$S)= Q@*Y4!F.,/QRO8\4 ;5%9UOX@T:[TS^T[?5;*6P#!#<I.IC#$@ %L
MX!R0,>XI-,\0Z+K4TT.EZM97LL'^M2WG5RGU - &E1574-2L=)LWN]1O(+2V
M3[TL\@11^)K \0>.]'TGP7=^([.^LKZ&,%8!'<+MEEQP@8=^^.N : .IHK+\
M/7USJ6AV]Y=3Z?/+*"?,TZ0R0,,D#:QZ_P"-<;H_B_QOJ_A:'Q';Z%HDEE)"
MTX@%]*LS*N<@9C*@\'O0!Z-17*:%XTCU[6;2WM[?9:76C1ZFLCGYU+.5V$=.
M,=:U+#Q5X?U6_:QT_6]/NKM<DPPW*.W'7@'G% &O16.?%GAT7L-E_;NF_:9V
M*Q1?:DW.0Q4@#/7<"/J"*V* "BBN,\&^/4\3:OJVE7-K]CO+*XE6%<DBXA20
MQ[USW#*01VR/6@#LZ*YS1?%<%]I.IZCJ3V]A;V.H7%HTDDH5-L<A0,2<8SBC
M4/&^AVGA2_\ $-KJ%I?6EI&S$P7"D.X'"9SPQ. ![T ='167I/B#2]9LUN+.
M_M)OW*S2+%.K^6ISR<=LJPS_ +)]*G75]-DM;:YCO[5X+M@EM()E*S,02 IS
M\QX/3T- %VBN.MO'UDNH^']+OKC3A>ZK \I:WO%>)2" @4]6WDD+Z[34GAKQ
M]I&LV-F+W4-/M-3N9942R-RN\[971< G.3MS^- '6T5E7OB?0=.U%-.O=9L+
M:]?&V"6X57.>G!.>>WK5./QAILGC>;PL)X!=Q6RS_P"O7+,2V8PO7<%7<?8B
M@#H:*R++Q7X>U'43IUEKFG7-X,_N(KE&?CKP#SBDN/%GAVUNTM+C7=-BN'D,
M2Q/=(&+@X*XSU!X^O% &Q16;J?B#1M&EABU35;*RDG.(EN)U0O\ 0$UC>'O%
M=QKEAH-V8[* :B]PLD;3X?\ =E@/+7^/[N3Z#F@#JZ*QX/%GAVYOX;&#7=-E
MNYU#10I=(S.#TP >:?>^)M"TV_2POM9L+:[<;E@FN%1R/7!- &K14<$T5S!'
M/!(DL,JATD1LJRD9!!'4$5EIXK\/2ZM_94>N:<VH;MGV9;E#)N_NXSG/MUH
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
MP$:0LQR>FTX)P3CBO1/^$2OO^AS\1?\ ?5M_\9I!X1OAT\9>(?\ OJV_^,T
M<#)IUNGP.UZ9;5!</J%S,7V?,76[(5L]<@ 8KUJ+5+.;5;C3(YLWEO&DLL>T
M_*K9VG.,'.#T-8G_  B5]_T.?B+_ +ZMO_C-=%;0M;VD,+SR3M&@0RRXWN0,
M;FP ,GKP!0!+7D^DZ!=ZAX5N-4TD"/7M+UN_N+)FX$@\YM\3?[+KQ]<'M7K%
M-=UC1G=@J*,LS'  ]30!XAH]T+G0M(U[4;.:/1T\3WEW?0RQEO(W^9Y;2#'1
M789/8\UI:[);>(+GQKJ7A]1<Z:_AQH)IX$S'<7(WE=I'#LJ<$C.,@5ZZDB2Q
M+(CJ\; ,K*<@@]P?2FPRQ3PI+!(DD3#*NC J1[$4 >1>);O=I^BZMH#^?'KV
MG'0#+".%D9AY;>VT^<*L^$],EB\:/X<,+KIWA:2YN+<L,J?M&#" >^U'F%>L
M44 >->%I[?3E^&%Q>D0Q/I]U;+(Z\>:YCV+GL3@XI$T^WB^ T\R6J+<MJ#3%
MPGSEQ?8#9ZYV@#/I7LU0)>VLGE[+F%O-9ECVR [RN=P'J1@Y],4 >0^*KNTT
MO5?$XM=3MXYKAP]QH6L6(D74&\M0I@93O(8  #G# \"M2_U..P\:7\UWIQ^U
M7GA:-K?3^=TTB&9GA5@/O <<<UZ@<<$XIB312O(D<B.\9VN%8$H<9P?0X(H
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
M00X)R0""01UK/T-%U36/AW-=:/;V8CM-1>.WCB(C3!C"NJMR P^89Y&ZO62
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
MPR]&5@6!''7MBD?X?W%W!XB_M+7I+JZURSCM991;*BPA-^-B@],/T)Z@G/-
M#!JWBC5_$VJZ/I%SIEC;Z?;6THEFMFE9FD0G9@. !E3SVXXJOI_C/6O$MIX;
MM-,%I8ZAJ=G+>7<\L9E2!(V"'8FX9+.W&3P/6NJTSP^FF:]JFJ+<-(U_%;QF
M,K@)Y2LH.<\YW?I7%ZGH$?A&Q\-107.IQ2Z>D\*ZM:67VA45R&*2PJ"2K=B.
MA7J,T =)X1UC6;_4=>T_6OLAGTRZ2!'M495D5HE<,02<$[LX[=.>M<EKJ:D?
M%'Q +WL+6J^'E)B\@[MICGV@-NP"#DDXYR.!CG=^'%A>PG7]3NVO9%U&_$L,
MM[#Y4LJ+&J[RF!L!(.T$ @ 5?U;P;)J.M:G?0ZJUO#J>FFPNK?R ^X;7"N&R
M""/,)QWQ0!@Z'JWB31K?P<-0GT^?3M56.T^SPP,LEN?(+H=Y8[_N8/ Z\5E3
M_%&]E@OM6M-0TY(K:>18-(>TE:6XC1BI)E!PKM@D *0.,UWL_A:.>V\.0FZ8
M#1)HY5.S_6[(FCP>>/O9[]*RSX&U"WBNM/TSQ-<V&C7,[S-;10+YL6]MSK%-
MG* DGL2,\&@#H=0U-HO#%UJMLOS)9O<Q"0=PA89%<A:>)/%%E8>'=:U>33I;
M+5YK>"6T@@9'MC,!L8.6.[DC<,#KQTKKO$$#OX5U2"%'D<V4J(HRS,=A 'J3
M7)^&/!VHSZ)X9.M:Q//::?#!<PV#VPC=)E0;1(_5MA)P,#D#.<4 0GQ1XIO/
M#5_XPL7TU=+M6GDBTZ2!C)-!$S!F,N[Y7(1B %('&<T7_CW5(M/UM+.""74A
M+:?V1&R$"6.Y"[-PSR01)DC'W:O3?#^Y-E>:-:^()K?P]>2.\MBMNID59&+2
M1I+GY48EN-I(R>:T;WP597?BS1M=65HO[,B,0ME7Y)0 PCS_ +F]R/K0!SUS
M\2Y(]-_M:""*6SMM!34KI #N\^5@L40.?EY63/![4W1/'=Z_B#2K*ZU33]5C
MU%C'*EG92PFT?:6!!8D.F1MR<'D'VK7TSX;Z58:)KVDS32W%MK$SL^?E:&,_
M<C4\\)DD'U/2KFG>&]9AU&SN-4\47-]!9 ^5!' (/,)&,S%6/F8'; &><4 <
MO8^*_&=QX(F\4M'831.#'#:06DCO'B;8TS8;+ *';8!V'/6M[P3XCGUV>\0Z
MYI6KVT2HR2VL36\R,<[EDA8D@<#!X[\5:M?![67@N'P_:ZO=6\L#F2*]@^5U
M;S#(,KG!7)P5/!%.T7PM<67B"XU[5-36_P!1EMA:!HK40(L8;=]T$DDG')/;
MC% $.L:OK%UXMB\-Z)-:VCK9?;;F[N(3-M4N41$0,N22&))/ %<5XGU'6?$.
MF6>EWLFGQ75AXDMK"['V9I(;@DHT<@4N,+AOF0DY]17?:SX:N+S6H-;TK5#I
MNIQP&V=V@$T<L1.[:R$CHW(((ZGKFJ47@*)+&".349IKO^UX]7NKIXQF>5"#
MC:.%7   '0#O0!/XS@N;;X9:U%:30P2PZ9*-R0X0!8SN"J&&W(! Y.W(ZXP>
M.LX-?;Q9X7@L[^Q6];PW)YEU):L42/S(B,1[^6^Z.6QU/M7INK:='K&C7VF3
M.R17EO);NR]0'4J2/?FL/1/"4^FZGIVH7FJF]N++3GT\'[.(PZ%U8$@$X("
M>_6@#F+GXB:E8:&L%XUC'JW]L2Z4UV8G,"B,;C-Y8.X_+CY<]3UQ6SX-\73Z
MOKE]H]Q>6^I+# EQ#?VUL\"N"2K(R,3A@<'@X(/;%2S> HW@N&@U*:WOCJTF
MK6MTD8)@D<;2I4\,N,@@XSFM71-%U"QO;J^U36YM1N9U6-46/R8(E7)^6,$\
MDGEB2>G04 ;E%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 5A
M^+==ET#0S<VL23W\\T=K9PN2!)-(P50<=ADD^P-;E<!XCM-4\2_$"PL=.NQ9
M0Z'!]M>XEMO.1KB3*(NTD D)O.<\;A0!T?AGQ#'KOA:WU><);/L87<;-@02H
M2LBDGH RGKVK+7Q_IFH>)]$TO1;VSOH[UYUN&C?+1A(RZD>Q((ST/:N)U;1M
M>TR#Q;X9:1M1;6+8:I;R06YB620.!<1!<GYF4 XSSD^M;DFM:1X@^(/@V71X
M)9!:BZ6646SQK I@.(V) P<C[O;'O0!U2>.O"LETELGB#3S*ZE@// & ,GGH
M.!G'I3)/%^F7_A[4]0T/5M-G>RC)9YY2(HFQD&3'(7W_ "K@++25;X4>#[9[
M#).NVSS1M%SS=-N+#'H><]JN>-;69K[Q\8H)")O#T &U#\[!IA@>IQB@#N=0
M\8^'M';RM3UFRMIU"EXVDY&X9!QUQCG-32ZP'U32([2[T][.^CEDR929)555
M*F+'##G))[$8KGO#5DI^(/BBXFMOO66GQJ[IU78^Y03VZ9'TKE?#=G,-/^'T
M<MG/(L=AJ:21!2&P5 "\XP3T&2* /1['QCX<U.]:SLM:LY[A0S;$E!+!?O%?
M[P'?&:R]"^(NA:OI5UJ$U]:VD,%Y);$O,,8#,$8DXQN"%A[5QGAF]>#5O#>G
MZ9>R:O:Q2>7_ &?J.F[+K28_+(+&4  %>$Y'.< FHXDCN],MM(EMY'GM?&GF
M7,#PM@1O/*RL<C!4CG(R* /1I?''AB#3[6^DUNS%M=!F@??DR!3AB!U(!&#Q
MQ5/6OB#HFDKH<JWEK/;:M<>6DZS#8L85B7R,Y ("X]6K$\2ZK)8>/&A^TP:%
M']@01ZA_9YN);K+L3$A^Z-IP=N"26Z5S6E2MIGA3PU>WT=W'#9>*+B2Y:6V(
M>)6\_#.BCY<EEZ# )H ]2O\ Q?X=TO4AIU]K-E;W?&8I)0"N>F[^[GMG%/U'
MQ3H6D7B6>H:K:VUS(4"122 ,V\D+@>Y4_E7G\6HZ?HFB^+M#UFTG?5+Z\NY(
MX!;/(U^LN?**$ AN"J]?EQSBK_@[1[FS\90C4X-]Y;>&+&W>5UW8<,^\!NYR
M!F@#O=2U2QT>R>]U&[AM;9" TDK!1D]!]3Z57L/$>C:GITVH6>IVLMI!GSI1
M( (L#)W9^[QSS6)\0XK5]$LY;I]0@6"^BFCO;&,2-9N V)74@Y09P>#][\:X
M&_\ [8U_PQXEB@,6JPQSV4K:K::=Y,E\BN#(A0\2%%4=.#T]J /4+/QEX=U"
MUN[BSU>TGCM(S+/MDY1/[Q'7'OTI/!_B>V\7^&K75[<(GFC]Y$K[O*?KL)P.
M0"/SKC-$9-;\;6%Y;Z[?:P]I9SJ\R:<EO#$K@ 1R-A222 0O.-IZ5O?"RYCF
M^'>DVR[UGLHA;7$<D;(T<BCE2"!ZB@"OHOCQ=9\5ZU;I?Z3%H^E@ABSMYS@*
MI:3=D*J!FV].U=%I?BO0=:6<Z;JUK<^0N^4(_*+_ 'B.N/?I7GNKZ=>7%AXR
M*6<UQ"GB&UN9[=$):XMT6!G"C^+@'COC%7=4U"T\4^*].O= 62>&PTZ]%[<K
M"R*%>,!(B2!EMWS;>V* -C6?BCX9TZT66TU2SO9#<00ND<X^196'SDX/ 7+8
M]NU*OQ%TBVU_5[+5=0L;2UMOLYM9&?#3+)$'+8]!D<].1FN=N+1=/^"GA>1;
M5XUMFTVXN0D1+*HD1G8@#/&23^-;GAV&"\\:>-+\0"2&[BLQ'*T9'F1FWS@9
M'3GD4 =O#-%<01S0R))%(H='1LJRGD$$=16!;>+-/MM*2[UK5=+@+S3HCPS'
MRV$;D8!;G<  "/7(%5_AJDL?PV\/QS*Z2+9H"KC!'M@UQ?AZP=]1\&>?:N5B
MU;6)#OC.%.Z4J3Z=B#0!Z?I&MZ9KUF;O2KZ&[@#%&>)L[6'4'T/L:P=<\0ZO
M_P )9#X:T*/3DNS9_;9)]09MFS>4"HBX+'()/( &/6F^&8&A\=^-3Y12.2XM
M64[<!C]G7)'KSUK-\;3Z#)KB6?C'1-VE>2'LM42.1C'+D[XV>,;HS]TCL?PH
M Z+0M6U61-1A\16,-E-8,,W43-]FGC*[MZ,W(QR&!Z8ZU8TCQ3H6O320Z5JM
MK=RQKN9(GR=O3<!W'N.*\LGLM3U7P9XNLO#\VK7V@[;9K WBNTLFUPTZ1;P&
M=-H  /4Y S6A99\0>)M,>P\07VIW-I:W&R1--2WCM0\94+*V%(R2,*,G*YP,
M9H [^'QAX=N-5;3(=9LI+U2RF)90267[P'8D=P.16)I7C^V\06AFTZXTZ,QZ
ML+%UN)B=\9<JK+@??<*2H/'O6-X9U;2(_#7ACPW)HTUQK-G) DMDT#*UK,GW
MYV8C  .YMV?FW<9S69 ^^S331'-]LM/&RS31F)AMC>Y=E;)&"I'.10!Z/=^+
M_#MAJ@TR[UJRAO<A3$\H!4GH#V!/8'K3M5\6^']$F>'4]7M+65 I:.23# -G
M!QUQP?RKSI;ZQTKP9XF\,ZK9SR:[=W%[BV%L[M?-*S&*1"!AA@ISGY=O.,5N
M^#M+N+7QMJ)U&+?=PZ)IUN\S#.Y@)/, ;OD@9_"@#O+6ZM[VUBNK6:.>WE4/
M'+&P974]"".HKB]5\3^*;.SU?68M'LHM)TQY,PWCNEQ<QQ_>D3C:H.#MSG/M
MFK?PQA>W^'NFPR1M&4><;&7! \^3''TQ7):MXNTGQ-KUS8:W=7%EX>L9]GV-
M;.9GU!U/WG94($0(X4'+8R>,"@#O#XB:ZU[2M-T^-6^TVIO[EI0<Q0=%&,_>
M9B,>RM67X6^(>DZS8V:7^HV-MJMQ+)']E63'(D95')^\0H..ISQ2:/(G_"TM
M8D/*7FD6<UH2",QJT@8 'IRR\>XK@[:[L[GX3S>%;6RN%\075S((;?[,X9I#
M<%EFW8QM P=V>-N.U 'JT>LRQ^+IM$NTC59;875E(N1O52%D5L_Q*2IX[./0
MYNZIJ^G:)9F[U.]AM+?<%WRN%!8] /4^PKF]<5IOB9X0CC.Z2""]FFQVC*(G
M/L7*_E47C)ET_P 6^%];OHI'TFS-RD\BQEQ;R.JB.1@ 2!PR[NV[WH F\1_$
M'2=+\$W?B'3;VSO0A\F >;\K3=D..00,DCK@5KZ3JS-X735=3O;"4"-I9+FS
M#+!L!/(W$G&!S^->:>(%.L:9X]UC2[>8Z9>0V44+B)E%S*C_ #NH(R0 57=C
MG'M7L3@E& ZD&@#SZS^*5C>6?AK4&>TMK+4I)TO&EES]E*1%PN[@9^Z.G?BN
MOL?$FBZEI<VIV>J6LME 2)IQ( L>.3N)^[@>M>7^%%BOK;X:VS02,^FSW4-U
M'+"R^3*L#$ @CJ"5P?6G^+=*O[J\\;"S@G,0OM,N94BAWF6-%4R%4/#D8!([
M[<4 >F:/XET7Q 91I.IVUVT6"ZQOEE!Z$CK@^O2LOQ?KVK:3=Z)8Z-%9/=:G
M=- &O-^Q (V?/R\_PUSGAQX]8\>V>H0ZY?:PUI92I)<+IZ6\**Y7$;M@$MD9
M"\XP>E:/Q!TQ]6UOPA;"6[A0ZC)OGM'*21CR7Y##[OI^- %FU\1>(=.\4:;H
MOB.TTPKJBR_9KC3Y'PKQKN*NKC.".A![5+HOCJPF\%:1KNNW=II\FH1;A'N(
M#-W"@Y)_6K6D^"M-TG4QJC7&HW]^D;1Q3ZA=O.T2GJ$W'"YQS@9KS70[^YTK
M0_!D$SP:,HTF3_B:W%BT[JY<9@7LA(^8YSG  H ]67Q5H#Z3%JHUBR^P2OY:
M7!F 0MS\N>QX/!]*DT;Q'H_B%)FTC4;>\$)"R")\E">F1U&>WK7D>FVDMYIH
MCN8KJX#^.(IV-U:^4TD912)&CV@*#UZ#WKO!BS^*NJWKQNMN-!A>1U0D,5EE
MSTZD#MUH [.L7Q1XA3PWI NQ;M=7,TR6UI;(P4S3.<*N3T]2>P!K2L;R'4;"
MWO;<L8+B-9(RZ%3M(R,@\CZ&N:^(-A>7&E:;J-C;274VD:E#J!MHAEY43(=5
M'=MK$@>U $9U3QMI<]I/JFFZ;>V4TR131Z6)3-;!CC?\V0Z@]< ''-:NI^,?
M#FC7IL]1UFSMK@ %HY)!E >A;^[GWQ6+/\1+34#;6?A>";4M3GE16BDMY8TM
MTR-[RDJ-N!GCJ3C@UR>NZG<RS>+[ 7 TJ:226---M-+,MQJ \L!92[ @ANG
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
M64)O"!;"2=5\\G&-F3\W4=/45S&H)XKTC2=3GU"_T[5;(:9<22!K41&*54R
M%R0\9Y!#<\=3FN?TRWO;_P"(FD7LES:B/_A&8KE8!9KM12RY1>?E^;G(Z#B@
M#U&WN8+NWCN+::.:"0;DDC8,K#U!'!J6O(+'QY='2?#.FQ7$&D&YTH7UQ<6V
MF/.%!;:L<<2 A<D,22, #WK4MO'&M7FCV]E"(QJESJXTR"_ELY(HWCV&3SQ$
M^#G:"-N<;AZ4 >C"Y@-T;43QFY5!(8=XWA"2 V.N,@C/M0;FW6Z6U,\8N&0R
M+$7&\J" 6 ZX!(Y]ZX70;;5;7XL:A'JM[%>R#1(?*GCA\HLGG2?>4$C()/3C
M&*3Q%!JES\5M)BTJ\ALY6T>Y\R>2'S2B>;%]U<@$YVCGC!- 'H%%>7W/C[5M
M-\.20W4MNVJ+KCZ,+Q;5V3:HWF8Q+DD[/X0>OM3/^$[U:UL/$4<=VVI"STJ2
M_M=0DTR2U"R+P8W5@ W52".V?2@#O-<T%=9:UFCU"]T^[M&9H;BT=01N&&!5
M@RL#QP1VJ+2M'L/"MK>7,]_)++=2B6[OKZ50TCX"+D@!0!PH  %<?JOB?Q#H
M-IH]OJ.JVWVO6Y&D$\6G/(ME$L89E5$):0Y8 $XZY(JG=^,]0D\,^((9Q%J2
MV3VCV]Y<Z:\*3K),JE6CD&-RGN..5/!% 'K%%<%<:CXIU3Q)XGL=-U2SL+;2
M?),)>T\UI&>$/M8E@ N<\]>>V.>F\*ZO)K_A/2M7FC6.6\M8YG1/NAB 3CVS
M0!KT444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
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
M(SL@=2RXW*#R,],T&1%<(74.02%)Y('6@!U%-1TD0.C*RL,AE.0:=0 4444
M%%%5GU"RC<H]Y;JRG!!E4$'\Z +-%11W5O-M\N>)]Q(7:X.2.2!4M !111TH
M **KV]]9W;NEM=03,GWA'(&*_7'2K% !1110 4444 %%%% !1134D25 \;JZ
MGHRG(- #J**8TL:,5:1 P7<06 POK]* 'T4BL&4,I!4C((Z&EH **** "BBF
MK(C[MCJVT[6P<X/H: '4444 %%%% !136D1656=0S?=!/)^E.H **** "BBF
MB1#(8PZEP 2N>0* '4444 %%%-21)$#QNKJ>A4Y% #J*** "BBB@ HHHH **
M*B:ZMUN5MFGB$[C<L1<;B/4#K0!+112$@ DD #J30 M%(KJZ!T8,K#((.012
M+(C[MCJVT[3@YP?2@!U%->1(P"[JH) !8XY/04Z@ HHIJ2)(NY'5ADC*G/(Z
MT .HHHH **** "BBB@ HIHD1G9 ZEUQN4'D9Z9IU !1110 45%-=6]NT:SSQ
M1-*VV,.X4N?09ZFI: "BFK(C[MCJVT[6P<X/H:/,0R&/>N\#)7/./7% #J**
M"<#)Z4 %%-CD25 \;JZ'HRG(-.H **** "BBFI(D@)1U;!*G!S@CJ* '4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
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
M14JI;*\L >2" 0.N:W-;\>W5CXADT+^U]#TVXLK:)[JYOHG99I7&=L:!P57
MR26)&X#GK5R3X>7,^E^(;:XUYI;G6+B"Z^T&U \J6+:1A=V"N47 Z@=SUJ[+
MX6UJ#5&U?2]=MK?4;JVCAU#S;$R0SL@(614#@HPR1C<1C'I0!H>#?$8\5>&K
M?5#&D<C,\4JQMN3>C%25/=3C(]B*XSQ/\0M4T%M2N&U'P[&UE*VS2&9I;J:-
M3]XNCX1B,D J<=S7H6BZ=-I6DP6=Q?W%_.F3)<W!R\C$DD^PYP .@P*XJ?X;
M:B^@ZKX?@\00P:5?R32EEL ;G,C%MKR;\,H)_N@D<9% #?$7CK4;#Q)<:='>
MZ1I,<<$<EH=5BDVWS,N2%E#*J 'Y><G/:NZ-^(-%_M"[54"6_GRK&V\+A=Q
M/?OSWKG-5\*:U>-=16VOP"RO($BGMKVR^T)&0NTM$"X"YZX.X9YK=TW1+73?
M#EMH:[I;2"U6U_>')= NWGZB@#C1XM\3VOA^P\67\&F?V+=-"\EG$C^?!#*R
MJC^86VNPWJ2-H[X-)X3T^[E^*/BV_OAILTD$T,:RK:D2H# I4(Y8[1M)W#N>
M>.E6XO 6HMIUEH5YX@%QX>LY(VCMOLFV>1(V#1QO+NP5!5>B@G'6NBTO0O[-
MUW6]3^T>9_:DL4OE[,>7LC6/&<\YVY[4 8FN^,;K0M0\06TT$+?9=-2]TX '
M,S$M&4;GG]YL'&.'%9L?C.^UK2-,M1;VZW5W87LNIJ ?W'D@QL%YXS*0!G/
M-;_B;P=#XDU?1;][IH#ITV^1%3(N$W(_EMR,#?&A[]/>J^F>!(--U?Q)J"WC
M.=8!6-#'Q:AMS.!SSN=RQZ=J .9\+:WXDT7PKX*ENUTQ])OEM;!8(T<3QAX\
M)(7+;3G )7:,9QD]:NV_BBZMWO;#2=/L(M2OO$=Q8PEE81_*@=YI #EFVCH"
M,\=*WCX.SX<\-:1]N_Y DUK+YOE?Z[R1C&,_+GZG'O567P$WEW$UMJA@U#^V
M)-6M;CR PA9UVE&7/SJ5R#R.O;% &)XUE\3Q^&7AU2WL9YH=5L&L[FWS%'<$
MS+\K(69D(( )R00>*Z+2-9UZ'QB_A_7#I\YDL#?03V43Q[0'",C*S-G[P(.1
M]*@G\%:CJ<,LFK:\9[N6\M;C]U 4@B6!PX1(RYP6YRQ)/3TQ6VVA;O&47B#[
M1CR[![+R-G7=(K[MV?\ 9QC'>@#G?%3:M_PLCP='9W5O';O]J)CDC9LD)\Q.
M& /RG"\<')YSBN7T;6_$GAWP7JNMVRZ8VE6.J7;/;RHYFG3[2V\APP"$9.!M
M/3WKT/7O#USJFL:+JEEJ"VESIDLC /!YJR)(H5UQN&#@<'MZ5G2^!1)X$U3P
MS_:&/MTT\OVCR?N>9*9,;=W.,XZ\T 97B#X@R6WBJ_T6UU71=+&GQQF274T=
MS/(Z[@JA67:H!&6.>3TXKJ?"'B%?%/A>RU<1")I@RO&&W!75BK8/<94D'TQ5
M&^\,:I%K][J_A_68;"74$1;N*YM//1F0;5D7#J58+QW!P.*W-'T^32])M[*6
M]N+Z6)</<W+;GD8G))_$\#L,"@#@H_'FOVWAS5_%&H0:8-*LI9[:*WC#B661
M9O*1BQ.%4G /!Z$]\!=(^([_ -O65A?ZMHFIQ7D<C%]+1U:U=$+X8,S;E(!
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
M/'*@$,K1XRJ[@YZ<>8#Q4?BE4\06_C+5=*MY9-)NK:PMC((F5;N99\LR@C+
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
MM](M9=,C\G5'TYYIKL;VS$F>%VD9VD$DGI0!Z##K^D7"V#0ZE:R+J&[[(R2
MB?:,D*>Y'I[42^(=&@MKVXFU.UC@LI/*N9&E 6)^/E8]FY''7FO)=/@FO?AS
M::!#;7/]N76LW#6<DL1B>S99F<W#@ ;-JGH,9+8 YJX+\Z1X$TS33ID-K>Z=
MJJ0:C<W<#W"6LOS-]KQP7WG!#$X!?GI0!VVH^.-,;PEK6L:'>VFH2Z;;/*T0
M?.&"D@,.H!Q5_1O%NB:Y,+6RU6SGO5C#R012@D>N/4 \<=*\HOY+B_N/&TPO
M;G5%G\-;8[LV7D),0SY$8 &X#<!GDYSSQ73+?:?KVK^#+30+>5+C2IO-NA]G
M:/[%"(61HGR!@LQ4;>^,].: .CT/QG:7'@JS\0:W<6NGI.SH=SX7<)&4 9Y)
M(7I6[IFK:?K5DMYIMY#=VY)7S(7##(Z@^A]J\9M+6^LM$\#:G+=3Z=8VGVY)
M;H6GGBVD>0[&9"#@$!ANQQGWKN/A[$LNH^(-3BOKR^BO)HO]*EM%MXIW5,%X
MU')Z@%L#)7C- '2:OXGT/0)(H]6U2UM'E!9$ED 8@=3CKCWZ5;BU6PGNHK:&
M\@DFF@^TQHC@EXL@;QCJN2.?>O,]9>XT7XCZ]>WVN2:/;WUO;_9)S8"X25$0
MAHPQ!P0V3M[[@:CCLYO#'@?PYXFM+74)6TF:5GMYX!',UK.[!EV*3@ E& [!
M>@Z4 >D7'B+1K2UN[JXU.UB@M)?)N)'D $<F =A_VN1QUYIMMXFT.\TF75+?
M5;62QA.)9Q(-L9]&]#R.#ZUYIJN@ZCHVB>#[ZZN);<Q7DU[JUREMY_DW$R$B
M1D(.0K,5S_#P:I:K!_:/ACQUJ-K?WNJBXLH(6N?L2P0SNK'[@7EV4'!.,=!D
MXH ]2M/&'AR_FNHK36K*:2TC:694E!V(OWF]P.Y'%1>#?%=IXQT!-4M=BDNZ
M20K)O,9#$ $^I&#^-9NLV:P?$/P8;>W"110WL643 1?+3"\=!QP*9\*[B-O
M]M8G>EU8R2PW,3HRM&_F,<'(]"#Q0!'I/CM=8\9ZQ8Q7VDQZ3I:_O&=SYTF$
M4M(#D*J*S;3GT-=#I7BK0=<,RZ9JUI=-"N^18Y 2J_WL>GOTKS[7=.O+NV\>
M+#:37"#6+*>6!$):>%$@:15'\7"GCOC%7[_4K'Q1XPT2Z\/AYX]/M;LWMPD+
M(J1O%M2(D@9)?!V]1M)H [72O$NB:Y/+!I6J6MY+"BR2+!(&VJPRIX]:P+[7
MO$]UXSU#0]"@TCR[*VAG>2^,H+>9NX&STVU:^&UG'9?#G0(UMQ"YLHRZ[=IW
M$9.??)-84OA:P\0?%77VU."Z,4=A:>4T-S+ "29,\QLN[H.N<4 =;;:C>:5H
MLU[XLN=+M#&Y)EMY&6()QC)?!SG/Z5/IWB'1]7LIKVPU*VGMH,^=(L@Q%@9.
M[/W>.>:XKQWH9TK2/#:Z<]S!I>F:CYUQ)M:\>$%7Q(0Y8N%9N^<9R.E<[J%A
M<>(+/Q3>:7J%]K<CV%O#+,EDL$-R$F#M&F,&1]@<=.C 9[4 =W'X^TS4?%&C
M:7HU[9WT5YY_GO&^6CV)N4@>AYYZ''%:T7BWP]-K!TF/6;)[\.8_($HW;QU7
MW8>G6N)O-7TSQ)X[\,2: KM)!;7D;7(MV18-T/R(Q(&"",[>WXURNF0._A/2
MO#5SK&HKJ,-Q$K:1!I2>?#,L@8R>8<?*""WF9Y!//- 'L1\4:$-7723JUI_:
M#.R"V\P;]RC<1CMP<U%8^,O#>IZD-/L=;LKB[;.R..4$OCKM[-CVS7,:3;FU
MA^(E^NE"\NC?S&.%DYN MLFU >I!)8<>IKE8M0EU&Y\$B/51>)!J5N7L[+3#
M#!8C8R[6<Y8$$A0"1GDD<4 >H^&-<FUR'5'FBCC-GJ=Q9+LS\RQOM!.>YH3Q
M#;VUSJ?]IZAIL%M;726\;+,0R%D4A9<\*Q). .V*S? $<D=MX@\Q&3=KU\PW
M#&09.#]*X[6K%[G4M<BEM6DAE\6::64H2'39"&^HZYH ]*T?Q+HFOB;^R=4M
M;SR,>:(I 2F>A(]#V/0U'IWBSP_J]^UCIVL6=S=*"?*BE#$@=2/7'?&:Y#Q7
MIM[>^,-<ATV)A<W/A.6&-U&-TGF,%&?7G]:2VUC1]8TS1='T?39)-6M[9HXP
M8&B.EMY)4LY(&TYPN.^: .O@\7>';K5CI4&M64E]N*>2LP)+#JH]2.X'-,N_
M&?AJQO/L=UKEC#<>;Y1C>8 J_'!].HZUYP;NROOAOHGA+3[.>/Q);R6B?9?L
M[*]K-'(IDE8XPHX<[L\[O>K=[I^[P1\4&^R$S3W]SM/E_,X$,97'J <X]\T
M>AZ=XGT/5]0GL-/U6TN;N $R112AF !P3[@'C(IEKXM\/7VJG2[76;*:^!*^
M2DH))'4#U([@=*Y+Q!IEPVO>&;?2XO)E_L74((G1=HC8QQ! 3VP>E<II""ZT
M?PSH3ZQJ#7MI<6Q.E0Z2B2VDD9!9G<@848.6S\P/?- 'J?C'Q1;>$/#<^K7"
MH^QE2.-GV>8S'&,X/;)^@-.O?&7AO3H+:>[UJSBCN8_-A)D&73^\ .=OOTK.
M^)T4DWPZU=8HWD8+&^U%+'"R*Q.!Z $US6H^)4G\7W4UMJ$.CVTUE UO>KIK
M3SZBIW':F>!M/&W:3DT >A1:YI4\EDD.H6TC7Z-):;9 ?/51DE/[V!SQ4]GJ
M%GJ'GFSN8YQ!*T,IC;(21>JGW'<5XWI]I=:E\,?#?AVS@GA\0R7L\MO<.AC;
M3PEQ(6E? ^7Y3MV]]V!7HGP^E@7PE;Z>EBUA<:>3:W5LV25F7[S9/W@Q.X-W
MW4 =31110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 445Q^L7_B"Y\=Q:!I5];V5J=-^URSO;^:X;S-H"@D#GCKZ&@#L**\\L?&.
MKO=Z7I]T;<W2:[-I-[)'&0LRI"TBNH).TD;,C)YS2^)_&.K:2_C$6GDM_9-M
M92VJNG5I68-N]>@^E 'H5%<!>7/C*RUC0M$.LV$MQJ1NI)[H6.T0HBQD!%W?
M,068 D\Y&1QS6N/&.NZ<][X?D:TN=:34K:PMKPQ%8V2="ZR.@/50KY (!('K
M0!Z117!7.M^)_#^J7&D3R0:W<W&F3WFGND'DNTT6,Q,H)!!W*01@]1[U3\-^
M-KB:[F-YKUK>"&RDN+JPGL7L[N!T .$0_?7[P/I@<F@#TFBO(].^(NK30Z9J
MK7JW7VR6+SM)BTF=?)BD(&4F(PS*""2>#@XQQ5R\\9ZQ:^);NUO=6L]'DCOO
M)M;+4+%T@NH-P <7/(W,N2,=#QB@#U"BBN0US4->F\<66@:3>6]G;S:?)=3S
MR0>:Z;9%4;1D#)W <\=: .OKD;OP#;WIN;:76M6_LFZF,TVF>8AB<EMQ7<5W
MA"?X0V/PK+;Q=JT.@:G#>:AI5G?Z;J8L)[^X4K&T957$B1Y^:0JP&S/7/;BJ
M%EXOU^Z/B+3]-U"/5+BST]+^RN9-.>W,AW,&C*-C<#LP&'&3WQ0!ZB    ,
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
M6>>",+C9 S$Q ^IV;23[UY_HFJ:WH.FZRL-Y;W5[J'BB33K<RV^U(Y6;YI6
M;)&T$A?8<\T >NTA8 @$@$G R>M<CI^I:UI7C"WT#6;V#48KZTDN+:ZCM_)=
M&C*AT902",."#QW'-4O%4%_)\3?!IM[]88BMW\A@W]$4MSD?>4@>V,\T =O!
M<P72,]O/',JNT;&-PP# X*G'<'@BI:\<L+[Q)HGA/Q-K]A?V:6>GZO?2BRDM
MMYN%$[%]S[LKW P.W.<\;.L^.+J3Q5J.E6VJKI,&G)$-_P#9<MXT\CH'YVC"
MJ 5'J23S0!Z54$U[:VT\$$]S#%-.2L,;R!6D(Y(4'K^%9?A'6KCQ#X6LM3N[
M4VMS*K++$590&5BI(#<@'&1GL17EGCC6].U3Q1KEPVHI!?>'X8X])4JS;KI7
M$TAX&.=J1_G0![=44=S!---%%/&\D)"RHK@F,D9 8=N"#S7%S^++S7Y/#=IX
M=N8;4ZQ:R7LEU+%YIAB0+E57(!8LX'/3!XKFAJNO>&H/'=[YMI/JT>IV,8D\
MLK'('6% 2N3C*MSSP<XH ]>J*2Y@BGB@DGC2:;/E1LX#/@9.T=3@=<5P8N?&
M8\7OX:.NV!\RP%^+T:?AHL.4,:IOP03@Y)R ".>M0Z)XGOM7O?!;WT%F]S<O
MJ$,\HA&0T.4W1D\INV\@>N* /1ZBBN8)WE2&>.1X6V2JC@E&P#AL=#@@X/K7
ME]EXI\7?\(AIGBZZO[!K:6ZBAET]+3&Z-YQ%N\S=D-SGICMS5N^\1ZO9)XED
MTRSB4P:W';S7%M9>;)% 849IF1<&1AD#Z8["@#TEF"J68@*!DDG@4M>/>(=;
MO->^%OB4P^(]/U&*W:/;-#;F.8H2,I+$<;#GH1U Z"NGNKWQ5-XVA\.6>K6<
M,<.F17MQ=/9;FD;S70J%W *" .YQCWH [JDW#=MR-V,XSSBO)O$GCW5-)35;
MV'7].DGL9V"Z5:V+W"&-6QB68?<<CD] #Q5B\U2]\/\ CGQGKLETLUM9:1;3
M_9?)P7'[[8F[/&&SDXYS[4 >I45PC:IXH\/SZ'=:S?V5];:I=1VD]O#:^4;9
MY =I1MQW*&X.[DCFI_ ^H^(]>$VK:C?VHT\3W-M%:16V&.R5E#E]W7Y2,8[
MT =1?:MINF/ E_J%K:-</LA6>94,C>BY/)Y' JY7FWB"*XC^+=I>S7<36MIH
ML]V(6M0Y5$DCWJ"3PQZANW2C_A(_%-CX6L/&=[>64EA<F"6;3$ML&*"9E"[9
M=V2X#J3D8//2@#TFBN+\/:CXCUOQ/J[R7]K#I&F:C+9BV6VS), BD$ON^7!9
M>QSS[5VE !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 5PFLZ'JU_\4(;W3[VZTY(]&,8NT@$D;,9O]6P88/'.,@\ UW=8^K>
M*=$T.Y2VU'4(X+AT\Q(=K,[KDC*JH)/0]/2@#'D\ 0#1[:WMM4NX=1M[\ZD-
M1*J\CW# AF92-I!#$;>. /2H9/ATES:ZZM]K5W=7.M1VZW$[1HNTQ,2-J@
M8(&/;N<FMZ3Q5H46B1:RVJ6_]GS$+%.&R'8G&U0.2V0> ,\'TJ*V\9^'KRRE
MO(=4A,$4R02E@RF-W("AE(!7)(QD4 8WB_1M2U3QKX5FT^XNK3[,EX6O(8@Z
MQ$JFT.",$-@C!Z]N14Y\ 6LVFW<=WJ-W-JES=QWK:F JRI-& (RB@;0J@8"X
M/!/K6_?ZWINER&.]O(X7%O)<E6SD11@%W..PR*R5^(7A)I)4&NVNZ-=YY.&&
M0/D./G.2!A<G- $,7@DW%Q=WFM:S>7][/9M91S(JV_V>)CEO+"=&) )8YZ#M
MQ1:>"Y7U2SOM<UJ;5VL89(;9)((XP!(NURY49<E>.PY/%:</BS09]"DUM-4M
M_P"S8F*23L=H1@<;2#R&R1QC/(IMIXOT"]TZ]OX-2B-O8KNNBP96A&,Y92 P
M&/;F@#)L? MS9)96/_"2ZB^BV,BO!9!55L*<I&TH&YD'IW  )--U+P'-J<=]
M82^(;TZ+?3&:>Q>-'/+!F1)"-RJ2.G;L16M8>,_#NIZ@]C9:M!-<JC/L7/SJ
MO4J<88#_ &<U!X.\7VOB^QN[B *C6]U)"4&3\JNRHV2!]X+G';.* +]I;ZC'
MXBU&:6=FTQX85MH6VX1QNWD8YP1LZ]\_CS>O:)JNH?$O3KNPN[K3TATF9?MD
M<(DCWF6/]VX88.1DXR#\H/:MW5O&'A_0[S[)J6J0P3[0[)@L44]&; .T>YP*
MPO$GC:2V\4:'H6D7UA&]^K2R7$\+S+L^78$"$ E]W7.!B@">3X>P'3+>.+5+
MI=3AU$ZF=0=$=I+@@J2R8V[=IP ,8 &*FM?#[>'M5O\ Q1>ZE?ZI=268AFC2
MW!)56+#RXT&>Y^7DG)-=#J>J6.C6+WNHW4=M;(0#)(<#). !ZDGL*S;3QEX>
MOK*^NX-3B,-@N^ZWJR-"N,Y96 8# /..U &-\-/#O]BZ5?WKVLUJ^I7DDT5O
M.,206X8^5&1VP"3CMNQ6UX@\.MK5UI=Y!J$MC>:;.TT,J1JX(92C*5;C!!/T
MI+'QGX=U._>QLM5@FN41I-BY^=5ZE#C#X_V<U;_M_2CI-OJHOHC8W)00S Y$
MA<A5 [Y)(&* .=N/A^SPWVFVVO7MKH=]*\EQI\<:'[YS(J2$;D5B3D>YQC-=
M6]C VFMIX39;F$PA5XVIC;@?A6-XYUV\\-^$;O5-/2![J-X4C6X4E/GE5#D
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
M7$KR[1N0S.6( ]LTE[X1N/[7N-3T77+C2KB[B2.["PI*DNP;5?##Y7 XR.,
M<<51UWQ]%H%GJ=Y)-97,<-W;6]O#$)%=!*J$^;D$9 9G&.P ZTK_ !$TVR\3
M7]EJ-Y;P6$=G;7-K($<R2^9O+' R< *IZ#&>: .HTC3$T?2+?3XI[B<0IM\Z
MYD,DCGJ68GJ22?Z56\-:!#X;T9=/BF>X8R2333R !Y9'8LS''?)_05C:SX[L
M=+U7PZPO+,Z/JD5Q(UT26SL5"FS!YR6QC!)[5L6WBK0KS1)M9AU2W.GP$K-.
MS;1&PZA@<%3R.#SR/6@#"A^'<5C%"=,U:YL[FTNY[BQE6-6$$<QR\)4\,F>?
M4''-*OP]C?3M6MKK6+NYFU2[@NY[B1%#!XBA     .P#'85I?\)CI=_HFJWF
MCWD5S<6-L\S1.K*5(4E2RG#;3CKW]:BA\;:5::#HUYK5[!:W6H6<=QY2*S=4
M#,0HR0H)ZG@>M &E_8<7_"6?V_YS^=]A^Q>5@;=N_?N^N>*RM,\#VNF3Z-*E
MY,YTN6[E0,H^<W!)8'Z;N*M>#?$$GB;0I-1D\@C[7<0QM!G:R)*RJW4YR #F
MGZEXT\.:1?M8W^K00W"!3(IR1%GIO(&$S_M$4 4E\#VJ^"+7PQ]LF\BWECE$
MVT;B4F$H&.G48I;CP6'?49K35KRSNKO4%U!)H<?NW6-4VE3PZ$+R#Z^PJ_JO
MB[0-$G6#4-3AAF:-95CP69D)(!4*"2/E;IZ5H:=J5EJ^GPW^GW,=S:3+NCEC
M.58=/Y\4 <O)\/XKW3]=CU/5;BZOM9BCBGNEB2/8L>=@5 ,<$D\Y)K5T[PX]
MIKJZS=ZC)>7IT]+&1VC5 X5V??A> ?FQ@<<4W4_&WAO1[V2SO]5AAGBQYJ[6
M819Z;R 0G_ B*GU;Q3HFAB ZAJ,41N%+1*H+LZCJP5021[]* .9G^&C3:#>^
M'U\17L6B7#R2+;1PQAT+L7P9,990QSC@]B<5K7G@J&^UJ[O9KV4VU_8"QO[/
MRUV3JH<*P;[RD;ST/I5Z[\6Z!9:;::A-JEO]EO/^/9XR7,W?Y N2WO@<42>+
MO#\6BQ:PVJV_V"9_+CE#9WOG&T*.2W!^7&>#0!EV?@F<7>FMJNOWFIVNEN)+
M.WEB1,. 55I&49<J#QTYYYK9\/:'%X>TK[!#,\J>?--N< ',DC.1QZ%L5';^
M*]"NM*;4X=3A:S258'DY&R1F"A6!&5.6 P1W%7+G5K"TO/LEQ=)'/Y#W.P]?
M*0@,WT&1^= %6X\/V]UXECUJ61F9;&2Q,! VLCNK$G_OG'XU@P_#TK;6FE7&
MO7MQH%I*DD.G/&@X1MR(\F-S(I P/89)Q6K8^./#.IZC#866L6\US.,Q*N<2
M<9(5L8) Z@'(J+PGXQM/%<NK);[5-C>/ H&[YXQC#G('4YX[8H T-%T.+19=
M4>.9Y#J%\]ZX8 ;&957:/;Y1^=:M8NL>+-"T"X2WU/48H)W3S!'AG8)_>(4$
MA?<\5S_C#QTNF2Z'::1?V"RZJ^Y;N>-YHDAV,P8!"-V2 !SWH [JBJ5_J=IH
MVFM>ZI=100Q@"25N%W'C '7D]!R:H6_C'P_=:;=ZA%J<7V:S(%RS!E:'/3<I
M 89[9'- &Y15:;4+2WO[:QEG5+JZ#M#$>KA "V/ID?G67;>-/#EYJHTRWU:W
MDNV=HU49VNXZJK8VLP] <T ;M%</X>^).D7UK''J^H6=MJ+W<UOY2!@J[9G1
M Q.0K$*#@D9SQ7<4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !7
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
M]T;>4/+(J$!CA< ''.WCI6E?ZFGB/QB]YIEK>R62>';V$7$EK)&KR,T9V+N
M)./;^1QZ?4%K>6U]$TMI<13QJ[1EHG# ,IPPR.X(((H \[.G31^!_AM%'9R+
M);WFGO*@C.8_W+;RP[<DYSZUL>!I?(U/Q3ITT4\5R-8GN@)(656B?;M96(VG
M.#T-=G10!P"ZC!X5\>>)+O6+>Z$.IK;R6=S%:R3*ZI'L:+Y <,&!.#UW5D:!
MI&H62^ EN+&:W"ZE?W!@*'_1HI(YF16Q]WAE&.Q.*]6HH Y;Q_;V\_AQ#<P:
MB\<5U#+YVG<S6I5LB8#!W!>I !XSQ7!W:ZUK?ACQ?:6YDUN V4)@U)M-^RSS
MNK$F+&!YNU1D$#JV.]>RT4 >:7^JKXL\:Z#)HT-\(8K*^1KJ6UDB2.22-0JY
M8#D8YQ[4>&M5LX?#GAKPU)X>N;C5K)X(I[6:U9%M73[UP9"NW Y8$'+;ACK7
M=SZYI5MJ\&DS:C;)J-PI:*U:0>8XYY"]<<'\C6A0!Y))I=P/@=K5NMC*+J6\
MN9/*$1WL?M9(;&,G@ @^@%>MT44 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
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
MKDR""XB,3F-RK $=01T-8-KX+(U""]U37+_5)K6"2"U-PL2>2) %9OD4;F(
M&3GZ4 <9X8N_$6@^#/!.H-J\4UC>26EDVG_95"K%)\JL'^]O'!/.#SQ5KQ3X
MMU2RFUV2T\2!;C3][06&GZ8UU& B;L7$NSY&)SG# */6NP'@ZR'AW1-%^T7'
MD:1-;S0OE=SF$@J&XQ@XYQBL^X^'L4T>K6<>N:E;Z5JDLL]S91>6 7D^_ARA
M<*3SC/MTXH Y'Q)>-J#>*KUU"M<>"H92HZ L9CC]:]!U/_DGEY_V"G_]%&J<
MO@*PGMKN![NZ/VK1X]'=LKD1INPXX^]\Q]O:M^XTV*XT272V=Q%);&W+#&X*
M5VY^N* //-&N_$7AKPYX/OKK58KNQO#9V4MB+95$*RJ%1D<?,2IVYSD'G&*S
MV\?:[?VM]J]A<WX>*>5;/2XM#EFAG2-RH5YPA^9MIY5@%)P>AKL=-\ Q6+Z7
M'<ZUJ-_8:45>RL[@Q[(W485B54,VWG:">*;-X C;[7:VNNZG9Z1>3--<:? 4
M"%F.7"N5WHK'D@'N<8S0!T-S=WC^'IKRPM2UZ;5I8+>;Y<R;,JC>G. :X?PA
MXHO[O7;6RU'7G-U+ [7.F:EIWV25' !S"0H#*.<Y+''.:[^[L(+S3)M/E5A;
MS1&%@C%2%(QP1R#CO7-VG@91>6<VJZWJ&JQV"/':17(C41AT*$L44%VVDC)/
M?/7F@#CI/'&K6[V%[%XA&HM+J$4%S;6FEL;%4>4(0EP4&2 >#N.2.E1WLVI:
M/'\2=0%\EQY5W"!#-;1LA8I#@D$<X4[<>V>M=2OPVC.E6>E3>(=5ETZPEBDL
M[?$2B(QL&7<0@+XQCD_K@BWJ7@&UU*XUUFU.]BMM:6/[3;)LVB1-@#J2N0<(
M!C..3[8 .?\ $_BC7-+\0:E'=:K+HEI$4_LZ633?.L[@;03YLH!*G=D8&W
M/-/E@O)?BQ<WRZFCQCP\DZHL*.A0R/\ (&(SMW#=GJ<XZ5T&J>"FO[G43;Z_
MJ5E9ZF/]-M(O+9'RH4E2ZDIE1@X-7H?"EA;:G]M@:6/&F)I:1 C:L2L2".^>
M<=>U 'GUKXWU&>T\-Z9'<SZ>)=%BO[FXT_2FNG+,=JHL:HRHORL22/0#%:-I
MXO\ $6HVNF:.I>SU*]U.:S74;BP:'?;QQF7SEAD PQ&%P>,@UOKX"@M+?23I
M6JWNGWVFV8L8[N,1NTL(Q\LBLI5N1D<#!I[>!+0Z1#;#4M0^WPW9OH]3,BF<
M3G(+<C;@@E=F-N.,4 9OA.UU&T^)/B>'4KY;V465B4N!$(V=,S8W*.,YR.,#
M@<4S7+/4[WXM6<>F:B-/;^PY/-G$*R.%\]>%#<9SCD@\9K?T#PJNB:MJ&JRZ
MI>:A?:A'$D\EQL _=[MNU54!1AL8'IZY);K/A/\ M/7X-<M=7O=.U""V-LCV
MX1E*%MQW*ZD-_P#6![4 <U#XNURSBBDOYXI8M+UPZ5J<J1!1-$ZJ(YO]@AI(
M\@<=:Z;PYJUYK6J:[<%U_LRWN_L=FH498QC$KY[@N2H_W*QM>T*'1/ .H:+9
MZ=J.L7.JF57=0&>2XD!_>R-P% ('.,# XKIO#6C+X?\ #=AI2OO:WB"R2?\
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
M,OE2']YN "Y VA=N23G&<#(/%5/ MK=>'C?>%KFUE,5DYFL[[RCMN878GYF
MP95.0W<\'O53Q';71^("[(+H1:AH,^GPW44+.D<S2 C>R@[..<GTH VK7QWX
M:O=1BLK?4PTDTABBD,,@BE<=524KL8\= 33_ !OK=SX<\':CJUIY7GVRH5\T
M97EU!SR.Q-<,\EQJG@/1?!UOHFHV^L6[V<4WF6CI%:^2Z%Y?-(V$$(<;22=U
M==\2K6XOOA[JUM:6DEW.Z)M@C4LTG[Q21@>U &AI/B_0]<O6L["]+W C\U4D
MA>(R)G&]-ZC>ONN14-KXY\.7NHQV-OJ0>660Q1.89!%*XZJDI78QX/ 8US.I
MM/XT\1:2=*L;^R73[6[%Q<7=J]N(WEA,:Q#<!N(8ACMR!M'/2N:TO29YM$T/
MP_<MXN>^MIK=9K V\<5M;&)@?,$WD8* KD8<LW ZF@#U;Q+J+:5X>N[Y+NWM
M&B"D3W$;2(F6 Y5>3UQQZU5U+QOX>TB_EL[V_9)8-OGLL$CQP;N1YCJI5,@@
M_,1UJK\2;2XOOA]JUM:6\MQ.ZQ[(HD+,W[Q3P!R>*Y#Q1'/9:UKTNFKK^GZE
M<$-';P61O;+4SY8 )7850G&ULLN ,T =WJWC/0=%NC;7MZXE6,3.(;>2;RT.
M<,Y12$'!Y;'2K\&MZ;<W\-E!=I+<3VOVR)4R0\.0-X;IC)'?O7G.N1W%OJ[W
MDJZ[HFJS6$ :;2[0WMK>.%.8VB", 5)*C)&0>M6+2[U/1=?\/ZYKVDW,8FT$
MV<ZZ?:/,()_,1PI2,$J"!],\4 =I/XLT.VT^YOYM01;>WN6LY&V-GSE.#&JX
MRS9[*#GM267BS0[^PO+V&_5(;(9NOM"-"T QGYU<!EXZ9'/:O+VTC6)].MM7
MDL]8LHK?Q+>7DT5M"#=1Q2A@LBHRL&VY&< \$XZ5/>:!=:[8>(KW35U_4':"
MU19=51(/M@BF$K1I'Y2-P 1N;J6Q0!UT/CZTU3QCHFE:3.)+>[BN)+@36TD4
M@"JIC90X4[3EN<$''M5[Q=XPA\+7&BQ21L_]H7@@<B*1]D>UBS#:#DY  '7D
MGG!K%_M,>(OB+X:O++2-3CM[2WNUGN;JQD@",ZKB,[@.>#[>A/-:'Q \Z$>'
M+]+2ZN8;'6(Y[@6L+2NL?E2KNVJ"2,L.GK0!H:GXX\.Z/?2V=[J!2:$*T^R"
M218 >AD95*IG_:(K;DNX([)KPONMUC,N^,%\KC.0%R3QZ9S7GEI?-X8?Q3I^
MH:-J5W/J%]/=VAM[)YDNTE4;4W*"%(QM(8C 'I76>#-,NM%\%:-IM\<W5M:1
MQRC.=K <C/?'3\* .1MOBDMSI'AO59?*M;>^OI;>]#PR?(%21E"$@;B2J#@'
M))'7BNQT[Q;H>J6%Y>VU^JP66?M1G1H6@P,_.K@%>.>17GGARSO)-/\  UC+
MI=]'+I.JW"W8FM758_W<Q5LD8*Y9<,.,D59\5^'=5U:X\?0V5I/FY@TUX2%V
MBX\HLSJC$8)P,=^2 : .XT?Q?H>NW9M;"\9KCR_-6.:"2%G3^\@=1N7IR,CF
MH_%GB&?0[2SAT^V2YU34;E;6SAD8JF\@DLY'.U5!)Q].]<EHEN-5\9:-=I<^
M++[[ DTCRZI;I;16Q9-NPCR4+L<]%.!@'-=!XWTW4)7T76]+MC=W6C7GGFU5
M@&FB9"D@7/&[#9&?2@")_P#A.=(EMKJ>YT[6K9YD2YM;:S:"2)6(!>-B[!MN
M<D$#(!YK5NO&.@V>NIHDU]C4F=(Q;I#(Y!?&W)"D '(Y/'/6N \670\6*?\
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
M,CB&0Q1R'HC2A=BMST+"N#\.VU]I%E\-Y[S3-05;2&[M;D+;.S0/)M5=X R
M2#R>._2LM-&N[+P]J7AO4)?%DMY+<3H+"RMH_L]VLDC,'68PL%!# DLV00?0
M"@#V36;N2PT/4+R':9;>VDE3<,C*J2,_E7(:!)XYUG1M,U5M=T2..\MXK@PC
M37)4.H;;GS>O.,XKI-7M9!X-O[2-9)91I\D2C[[NWED#H.2?IS7-^"OA_P"'
M;+P_H%_+H$,.K16D$LDCH5D2;8"20>C9S0!M:IXY\.Z/>3VM[?.);< W!BMI
M95@R,CS&12J<<_,1Q2W/B2TL]7G:?5+4:=#I?V]T6-V<)N/[W<,@I@8P.<\U
MP>N2ZO=R^*K"7^V;2:669+/3M+TP".\0Q@++).8R#NZ-\RXQBH;O2=3ET:X"
MZ;>%F\!I:A?(?)FYS'C'W_\ 9ZT >GZ)XCTKQ%'/+I5T;B.%]COY3JI/^R6
M##W&17+:1XTU&X^*.K>'+V.!=.0M'92(I#F1(XW96.>?ED)'3[IKL=)B\C1K
M&'9Y?EV\:[,8VX4#&*\VU#2=2@OO$VMVVGW4EUI^N6^H6B)$=US&((TE5/[V
M4+CCN* -P>,K^;XLQ^'((X/[)6WD624J2YG14=@#G& LD?;KFM6W\?>&KJ_@
MLX=1+/<2^3#*;>40ROTVI*5V,>.S<UR-AHVK6>L>&+Y]/DEO9;+4KN\#(=BW
M$WEN(W;H.?D&>R^U8+C5M2TKP\'_ +?FN[?4;.6[TZ/2?LUI8JLJE@ (P6"]
M!AFXY.!0!Z/J'CO18I=0TZSOA+JUM%-^Y$,C!7C0L0QQ@=#U(S@XJQH/BBVO
M]/T**[G3^UM2T^.\,$2,< H"S'&=JY. 6(].36'H^FW4.C>/0UG,DMWJ-X\(
M,9!F4PH%*_W@3D#%8O@K0]4\*"QMY(KV>#7M,B62ZDA+2V%RD0 C<@96/'"Y
M^Z5QWH [:'QSX<GU-;"/4@TKS&!)/)D$+R]-BR[=A;/& V<U#X?\80Z[XFU[
M2%C9#ILRHC&*0;QM4L22  =S8 [@9&1S7FNG:+<GPOIWA>\?Q<U_%+%%+IT<
M$<=M&4D!\T3F KL&-P.XL>G6N_\ #9EM/'WBVVGM+J/[7/#=03&!O*D00QH<
M/C;G<",9SP: +ZZW>6_Q DT*\$7V.ZL1=6$@4ABR-ME0G/)^9&'L347_  DS
M_P#"6ZO;R2V\&B:/9HUY<2<$3OEL;LXPL8!/NPIGCFSN%M-.UVPMY;B^T:[6
MX6*%2TDL3?),B@=248G'JHK$6PUC3?A3J-XFF+=:[J3-?W-K+!YN'E<$KY9^
M\4CP O<H!0!U&E>,M"UK4!86=W)]J:,RI'/;2PF1!U9/,4;ASVS5+P?XL76=
M"T9]1EB35-1BFE2*-& 98WVL1UQ@%>I[URFFK>WWQ$\-7RW7B'5+6*.Z6:\O
M[#[-%$S1C"JOEH1G:<DY&<#.:K:##>>';/P-J=_IFH"VM;:^M[H16DDDD#2.
MI0LB@M@[3SCN/6@#TF?Q/HMM:ZC<SW\<<.G3>1=.P(\N3"D+TY)#+C&<YQ1H
MWB72=?>:/3[EFF@P989H7AD0'H2C@-@]CC%>77NEZQJNFZKJ4>G:M:)'XIBU
M'RD@"W+VX@1=\:."&8$AMN#RI&,BNE\)6BW?C2;5HI_$=['%8&V^VZK$MNC;
MG#>6L?E(S8VYW=!G'>@#;USQA#HOB[0M#>-C_:/F%Y!%(VP ?+C:".6Z^@&3
M@'-9.@?$O2I[5DUJ^C@O!?3VI*02>4F)F2,.X!5"0%^\1G.>]6_%9EM?&OA'
M4OLEU-:PR7,,SV\#2^69$54+!02!D=>@KFY]'O\ _A2WB&R73KG[;-=W;K (
M6\Q\W)*D+C)RN"#Z8H [C5O&>@Z)>/:7MY)Y\:"25(+:6<Q*>C/Y:ML''?%4
M-1\=V-IXB\.:?;L+BVUB-Y1<1QNXV;?D*E00<D\^@&3C.:Y[6;K5#XJURVF;
M6+"-A&+.+2--5CJ \L<O<&-@"#E>2NT#KWJGH=O>Z3I_PUN+O3;\)9PW%M<J
MMJ[- [H%7>H&5&0>2,4 >M4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !117!^*/%&I>'-8UB$S;XI])%QI:%%^6Y5_+* X^;+20GG/>@#O*
M*\OL?&NLFSTZ&XG$E]IEO?W&M!(U'F?9MT:KT^7>Y#<8X%2MJ7B72/#>D>++
MO73>+=R6QN].-O&L(CG95Q$0-X9=XY+'..: /2ZKI?VLE_-8).C74*+))$#\
MRJV=I(]#M/Y5Q!\2:K_PA'CC4?M7^E:9=7\=I)Y:_NUC7*#&,''OG/>L:_\
M$%WHFJ^)]:A"27JZ'II0N/E\QWD4$@=@6R?I0!ZA-?VMO>6UI-.B7%T6$$;'
MF3:,MCZ#FK%>;W&E:MIOQ$\&G4-=EU2-S=Y\^".-DD\@YV[ /E/H<D8Z\UO>
M.;O6[/3[)](2]\@W&+Z33X4FN8XMIYC1P03NV@\$@=!0!U5(S!5+,0% R2>U
M>;6_BN7_ (0^_EC\6(98KY+<7-Y8,EU K;?W;0A!OE^]MPN#Z<&LY-:U6\N/
M$&A'5=8DLWT*2\BGU*P2"=&#;6"C8N4(..5R.U 'J']J6'GV< NX3)>HTEL%
M<'SE4 DKCJ,$'\:MUYAH%WJFG6GP_L(+O[5]KTB>7;/'&.5@B,:;@H(4$XXY
M(ZDTSPWX@UA]9TZRUK7-4LM2NE=+BQU+3DCB>38?^/:55VG!Z;F;([9H ] L
MO$&DZCJEWIEG?PSWEIQ<11G)C.<$$],Y[5I5X[H%QJWAGPU=:TFKSW%E;^(I
MUU"&6&+!@,[QR295 =V65SSCY>,"N^T#5+S6/$6O3";_ (E-G,MC;1A1\TJ#
M,SYQD_,P7KCY#0!NRWEM TBRW$2-'$9G4L,J@ZL1UQ[TZUNH+VTANK:59;>9
M%DCD4Y#J1D$>Q!KS?6;.Y_X69X@F_M*?RAX:#F#9'M*EIE"9VYP""V<YR<9Q
MQ570)M>T#PWX$OFUQ[FUU!K2RDL&MXQ$D4D1VE6 W[EP,DL<\\#I0!ZO17CQ
M\8^)-4MM1U?3Y=;$\5Q,EC86VD>;:2+&Y4+))L+%FVG)##:3[5Z+K<^JW'@J
M[NM+WV>J&S,T"N@9DD"[@A##'7Y3QWH W*KR7]I#?PV,EPBW4Z/)%$3\SJN-
MQ'TW#\Z\Y3XAW$_BW3;M9TC\,R6<:7&5!VW$D+W"_-C(PB*,9ZM2V.K:]J$O
MAN&]OF@FU;2KZ[=E@CWQ9,;1 94XVJX'OCG- 'H/]K:>9K.(7D#/>;OLP5P?
M-VC+;<=<#FI+Z_M=,M&N[V=(+=2JM(YP 68*/S) _&O&-!L-1DTCX80VVKRQ
M33I<LD[0QL;>/[/RJ#&#P#@MGKSG&*T/%%[JY\(>,M#O-0-_+IE]8+;7<\2J
M[+))"X#A  <$XR ,T >OT5YW>ZQK7@[79([[5Y=8M9-'N[\I-!'&4D@VG"E%
M'RD-C!SC'6HWO_$NB:+HGB6\UYKY;V>V6\L#;QK"J3LJ_NBH#@J6'5CG'- '
MH%I?VM]Y_P!EG2;R)F@EV'.R1>JGW&14%SK>F6;WBW%[#$UE")[D,V/*C.<,
MWH/E/Y5YM8:GJ$-Y>Z-IEU]CN-6\5WD+7>P.8HTC$C;0V1N.W R".>E1:@=5
M\/:EX^GDU,WMU;Z%;RV]S-#'OP#-@.H78Q!S_" 1CB@#UQ'61%=""K#(([BE
MKSZ&;Q#X@\6:MIEOX@ETVSLK*SE3R+:)G,DBN>K*?E^7)'TP1SFEI/B;7?%%
MIX5TY=0_L^YO[.>ZO;R")"[")Q'MC# J"Q.3P<8XH ].HKD/!U[K#ZUXETS5
MM2%__9UU%%!+Y2QG8T2OR% &[YN??I@<5G>)=8NSXEN=/M]?U& PPQF.ST73
MOM,JNV3NF9HV50>,+E<CF@#T"BO+-,\2>(_$D'@F&/5?L#:M9W<E]+%;HS$Q
M% &4,"%8\^H^8\<#%6?5_%MOX4\1:PWB1VD\/7TMM%']DB NTC93F;Y>I#;?
MDVXQGDT >NT5Q!N-:\3>*M;L+/6YM(M-)\F)!;PQN\TKQB0LYD5OE 8# QGG
MFJ/ASQ?JVK:MX8@N98U^T0ZC'>I$@V2RV\B('7/('WC@'O[4 >BTC,J(7=@J
MJ,DDX %>9:IXG\0!=6ALM02*9/$]MIMN[PJPCBD6+((QSRY/K[TFLOK=G)XF
M\.76OW%[ ^@/?Q7$L$2RQL&963Y5"E6 [C(SP>] 'ID4L<\22Q.LD;J&1T.0
MP/((/<5%?7]KIEE+>7LZ06T0R\KG"J,XY_.LCP/!+;^!]$2:ZDN6-E$P>15!
M * A?E & .!WXYS7G'B*;7O$GPIU3Q+)K;QV]R7*Z9Y$?DK LVT#=C?O^7.=
MV,\8Q0![-17,:3JU[<^+?%=C-/NMK#[-]F3:!LWP[FYQDY//.:XF'QMK=_I/
MA.S:ZU!)]0TUKZ^N].L5GG8 A0JH%*J"6Y;:<<#O0!Z[17*>!]4U>_AU&WU6
M&^*VLX6UN[RS-M)<1%0<LF -RG*D@ ' .*ZN@".>>*UMY;B>18X8D+R.QP%4
M#))/IBJ]OJVGW>DC5;>[BEL#&91<(V4V#.3GVP:Y#XI:I'#H=GHC&<G6+E;>
M86\3RR"V4[IB%0$GY1MX'\58&A:Q:)8>./#MLEQ%:+;3ZAIZ7%M) WE2H?,5
M4< [5DSVQ\U 'J5O?V=TL!@N8I//A$\05QEX^/F ZD?,.?<58KR/P]%<0>*_
M#]]_:-PL,/@^*=H$2,AD7RP4R5S@GYLYSGOCBH=-\8>*+O3+#7H3KEW<W,D<
MCZ:FCG[&86895) F[(4Y#EB"1TP: /8J*\XBO_$E[>>+M0&O/#9:-<7$-O:)
M;1D/B!7&YB,X!8$?0YSGB*QU+Q+8VO@W6KW7GO%UN:""ZLFMHTB02PLX*%5W
M @J.I(.>@Z4 >F5!+>VL'G>;<1*8(_.E!891.?F([#@\^QKR7Q)XPU6RL]8U
M6P\0W]U/8SOL@LM,#V"(K8V23-'RV.I#\'H*TY4O;;Q]XSU"/4YOW6BPS+"T
M<90Y6;:#\N<*1D<\Y.<B@#TFVN(;RUAN;>198)D$D;J<AE(R"/J*EKSK3/%U
MWI T^YUNZ#Z;>^'8[^(^6J;)HHPTRC:!]Y65@/8XK-G\3^)%;0='OKK48;JZ
MT]]2OIM-L%GG4,^$A5=A"A=V"Q4G@>M 'I]W?VMCY'VJ=(?/F6"+><;Y&Z*/
M<X-6*\FGU35]0L]%BU>&\S;>*;6.WNKNT-L]S$58AF3 &X$E3@ '&:T;KQ5K
M-II^M:&;H-XA354L;&8QKS'.=\4A4#!VIYF>/^69S0!Z112("J*I8L0,%CU/
MO7'ZK=ZKJWCC_A';'5)=+M;:P6\GG@C1I96=V15&]6 4;"2<9.0* .QIDLL<
M$+S2N$CC4L['H .2:\NG\2^)I8K71HM5CBU"/Q$=(FOUMT/FP^0T@?81@. 1
MTXROH2*[VX2[TSPG<B6]>\NK>TD)N98U!=@I()4#;^E &E:W4%[:0W=M*LMO
M.BR12*<AU(R"/8@U+7F.DZEXAU_4-!TV+7'T^WG\,VVH7#V]M$7:5C@[=RE5
M!SZ8XX KJ/ NJ7^J:!-_:<ZW%W:7MQ9O.$">;Y4C*&*C@$@#I0!TU4M7TFSU
MS2Y]-U"(RVTX =0Q4\$$$$<@@@$$=Q7G?BCQ%J*7NNFQ\1:B)K -Y%KI6F">
M&(J@;_2)'C(R3G(## QWJ]I^LZWXOU2SL[?57TB*/1K74+A[:&-GEEF!(4>8
MK (NT]LG/6@#;T#P]HGVF?4H+ZZU><+)9-/>7)G,:AL/&,\#D<\9..36=#X>
M\)Z)<&2?5;IK?0BDRVEU>L\-CN!$;!3[9VYSCM7,^&[W6(K+3O#MOJ"VMYJ6
MMZG]JOXHE)58I&9_+5L@%B1C.<#/6F7\VK>'/^%CW#:E]KO+>VL&ANI8(]Q7
M#@;UQL)'(Z8/7% 'K%SJ5E9Q74EQ=0QI:1>=<%G'[I,$[F'8?*?R-6(Y$FB2
M2-@R.H96'0@]#7E.H_VAIGB'XEZG!JDQ>VTN*5(GAB9"3%*4R"O(7''KDYS6
MU:WNM>)]>N=,MM9ETJVTVQM9)'MH8FDGFF0MD[U8! !T &23S0!IO\/=%DF<
M-)?_ &&2<W+Z=]J;[*TA;>24]-WS;<XSVKJZ\MM_$WB75[G0=(34X[2ZDU"_
MT^^NH;=&\W[.#AT5@0I./H"3P<8KIO"%]J?]K^(=$U*_;4#I=S$L-U)&J2,D
MD2OA@H )!)&0!F@#K*I_VKIYFLXA>0,]YN^S!7!\W:,MMQUP.:=J<4D^EW44
M5P]O(\3!94"ED..H# C\Q7C>@V&HR:3\,(+;5Y8IIXKEDG:&-FMX_LXRJ#&#
MP#@L#UYSC% 'MU%>5ZAXNU[P[9Z_I37LFH7EKJ=I96EX]LK2!;A%;)C0 .RY
M;  &3BM;POK&M_\ "4)82G7+[2Y[=W:YU33/LS03*1@!E15*L">,9!'7F@#M
M[R]M=.M)+N]N8K:VB&Z269PJJ/<G@5F:-XO\/>(+A[?2M7M;J=%W&)'^;;Z@
M'DCW'%8/C.-+WQOX*TZ\4/ITMQ<S21N,H\T<68@?7!+$#U%;^L6.AOJ6CWVI
MM%%>6]SLL96D\MC(RD; 01NR,_+T.* -FBO+EUCQ->^"+SQU!KAA$0FN8=+^
MSQF#R8F8;')7>6(4_,&&">E33:GXBUW5O$QL=>ETRSTZSM[FVCCMXG8O)!OP
MQ93\N1TZ\]1B@#TNBO--+UGQ$C^#-7O-9-Q#X@*I<6(MT6*(/ TJE"!OR-HS
MECG)Z5634_%3>#=8\5GQ"V_3KB[:&R^SQ>3)##*X*R';NW$*0"",<=3DD ]4
MHKS;6_$-W=ZO<PVFOZG 8[>*2&RT?31<O&S)NS<,T;*,Y&%W+QSWJ"R\1^(O
M$<?@>*#5!IYUC3KB>^EA@1F)01X*;@0IR3ZCYCQP, 'J%%>8'Q'X@TO2-5GG
MU)KQ?#VMI%=2M @>XLBJ%MP P&429RN/N5U>AZK=ZSXIUQXYP=(L3'9PHJC$
MDX&^5]V,\;D7KC@T =)17#ZE+KNJ_$*ZT*RUR73+"+2XKHF""-Y/,:21>"ZG
M@A1GZ#&.:Y_2]>\4/X>\,>);O7/--_J,-E/8I;1K"T;2&(MG&X/D;LYQVQB@
M#UBBO)/$_BK5+:/7[[3_ !%J$MQISRF*WT_3!)9Q*@^Y-*T?+<'=AQCL.*W[
MCQC<Z%J^H2ZM*&T^?1UU.Q3:!M9!B6('&6)+1D9R?F- '>57O;^UTZ 3WDZ0
M1%UC#N<#<S!5'U)('XUG:)+J5IX2M;C6Y#/J*VWG71"!?GQN*@  <?=_"O-M
M6&OZOX!TCQ'>ZXTD=_>V-Q+IX@C$,2/<1E%0@;]PRN26.>>* /8J*\HO?%6N
M:GJVO&RN];M5TZ[DM+.&PTG[3#(\8&6E<H2<L?NJ5P,>M:MIJ^O^*]9MM,^U
M7'A\PZ3#>WB10H9C-(6&S]XK!578>V3F@#NI;^U@OK>REG1+FY#M#$3\SA<;
ML?3(_.B[O[6P6)KN=(1-*D$9<XW2,<*H]R:X6_UO6M!U'0(]3NK:]D2SU*6Z
M>WB4"?R54H>1E&QU"\9SVQ6-J4&OW>A^#];U#7FNEOM6T^XFLS!&L46]U91$
M0-WRY ^8MGKQ0!ZW17D=QXN\0:G/K=W87&MPR6=W-;V-I9Z1Y]M)Y1*_O7V$
MDL0<[67:#7J.EW4U]I-G=W%L]M// DDD#C#1,R@E3GN"<?A0!;HHHH ****
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
M$O3:/]F:;=MV"3&/O KGIGO1J7CS1M,N;R)X[^X2Q.+R>ULY)8K8X!(=E&.
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
M+S=7-Y-%'.D=I;/-F)R0),J"-N1R>V1ZTSQQXGF\+:/;W<%M)/)->0086%I
M%:10WW>^"<>IP.>E $ECX+TG3GT9[7ST.DM,\69-QD>4$.TA(RQ.2<Y'/Y5'
MJOA9WM?$$VDWMS:ZEJ_E$S+-L\IT544J0,@8'(YSR,C-/O\ QKIMC<_9A;:E
M=7*PI/-#:V4DKP(PROF #Y2<'@\\=*GM_%^BW4FDK%=$IJT32V4I0A)=HR5R
M>C8YP<'@^E &V5#(5;D$8-<OH_@/3]%.D^5?:A.NDO*UFMQ(C"-9$V%.%!*@
M=.^3U-;.C:U9:]8?;M/=Y+4R,B2E"HDVG!9<]5R#@]ZSKOQGI5GXB&A%;R;4
M,Q[H[>U>01J_1V(&%7.,D],T )?>"M)U%M9:Y^T,=5DAEE*R;3$\2A4:,@94
MC:#GGGVXIVD^%(M.U4ZI=:IJ.J7PA,$4MZZ'RHR02%5%49.!DD$G'6JZ^/\
M0GNQ&'N_LS3_ &9;_P"RO]E,N=NT2XV_>XSTSQFJUIXO6RN_$\FL7&+6PU&.
MUMECB+.V^*,A%51EV+,<=30!NZ_X?L?$>GK:7PE7RY%FAFA<I+#(O1T8="*R
M]/\ !-O;:O;ZIJ&K:IK%U:@BU-_*A6 D8+*J*HW8XR<FH;CQ]8_V9K$D%I?Q
MZAI]H;DV=U9R)(RG(5@N.5R.2.F#G%)8>.[,^&]%O;V&\-_J,"LEG!:.996"
M@NRIC.P9SN/&".>: $F^'6G3">U&HZG'I%Q,9IM*CF46[L6W,/N[PI.25# <
M]*V(_#=E%>ZQ=(TP?5HXXYUR-JA$*#:,<<'OFJX\:Z'_ &!)K#7,BV\4WV=X
MVA<3+-D#RC'C=OR1\N.^>G-9FC>+Y-:^($^EPK<P6D.EB>2VNK8PRI*9<9.X
M9P5QTXH UH_">GQV7A^U$EQY>A%#:DL,MMB,8W\<_*QZ8YKD_#OP]>XTJ[AU
MF\U2&VN=1N9Y],$R^3.IF9D)X+ %=N0& /<=:ZO5=8&G^(K6 WDFTV5Q<&QB
MM3(TVPI\P8<@C.-H'S;O:L7P]\0[:\\%:;K.JPSQ7=ZWE);0VLA:>3KB).2R
MX_BZ<'F@#0N?!%M-JM_>6^JZG91ZCM-[:VTB+',0H7.2I925 !VLM2Z5X+TW
M2&T0V\MTW]CV\UO;>8ZG*2%<[L 9(VC'3\:!XYT-=$OM5FFFMX;!UCO(IX&C
ME@9B -R$9 .X'/3%5!\1M$:X:U%OJOVPH)(;4Z=*);A#GYXUVY*\')XQWH D
MU?3(=%TG79;32[W5Y-9E9IK2,H<LT8C[E<)A1DY)&:M^"O#_ /PB_A#3M)=M
M\\4>ZX?.=\K'<YSW^8G\,5"?'>B-I5A?V[75U]O9TMK>WMG>9V3(<;,9&W!S
MG&*U-%URQU^Q:[L7D*I(T,J2QM&\4B_>1E8 @B@ CT6VC\1SZX&E^U36J6K*
M2-FQ&9@0,9SECWK-A\%Z9!H&EZ,LMS]FTVZCNX6+KO+I(9 &.,$9/H.*Q8_'
MZ:?XH\36&I+>3PZ?/$8Q:63R^1"849F<J.FXMUYX/I7467B+3-0U)+"UN/,F
MDLTOHR =LD+' 93T//\ ,>M &#<?#>PN+74;#^UM6CTJ_DDEET^*9%C#N<L0
M=F_&3G;NQGJ".*J>(_#K:]K?AO1O[,NC9:3,ES-J,I4(\:H1Y0P<L68)N& ,
M+78:5JUIK5K)=6+M) DTD&\J0&9&*MCU&01GVK$N?B#H-K=3QN]V;:WF\BXO
MDM7:VADS@JT@&!@D GH.Y% '4D C!&0:XMOAKIK10V@U35ETRWN%N;;3UF3R
M875PX ^7<5SQM)(&>,<$7]2\<Z1INI7.G&._NKRV19)H;.T>8HC#(8[1C&*D
MN?&FBP:?IUY%-->#4EWV4-I TLLR@9)" 9  ZDXQWH K:AX%M;N]O[BUU;5=
M-CU$YO8+*5%CG.-I;YE)5B  2I!.*EN_!5C)+9SZ;>WND7-I:BS2:R=<M .B
M,'5@0#R#C()/-:FBZY8Z_9O<V+N1'(8I8Y8S')%(.J.K %2,CKZU0U;QCI>D
MZ@]@T=[=W448EGCLK5YS AZ,^T<9P<#K[4 ,L_!&D6,FEO$)V_L]+A5$CA_.
M,^/,:3(RQ)&>W4UGQ_#?3XVT^,ZMJ[V.FW,=S963SJ8H&1MR@?+N91T 8G /
M&*N7_C_0+&#3I5GGN_[2A::S2SMWF:=5V[MJJ,Y&[./8^E;5[JUEIVCR:K>S
M?9[.*+S9'D4@JN.XZY]NN>* .?O? -G=3WY@U75;&TU%S)>V5K,JQ3,1ACRI
M9=W?:1FNIMX(K6VBMX$"0Q($1!T50, ?E6%I?C'3=3U5-,\C4+.[EB::&.]M
M'A\Y%QN*%ASC(R.O/2NAH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "O/?&.C:E?:[KDUK9RRQS>%+BTC91PTS.2$'N:]"HH XF^TF]>3P'Y=I(
M183@W.!_J1]F=>?3D@5>\;V%WJ%IHRVD#S-#K5E/($&=L:2@LQ]@.:ZBB@#R
M^?3;Q8/%^F7?AF]U"*XU==00QOY8DA(B&Z)P?]:I0L%XZ=:U?!$>LQ:U>J9-
M;DT$6Z>2=<4?:!/N.0I^\4"X^]WZ=Z[NJDFIV<6JPZ6\P%[/$\T<6T_,BD!C
MG&."P_.@#B_&NGB7Q%;7;Z9KB%;7RXM5T*4^>K;B3$\8X*=""01G/2J%A!XG
MTVY\.>)-:T^ZU":&TN;.ZB@C1IXE>16BD**<%MJ ,%Z9[UZ)?:E::;]F^UR^
M7]IG6WB^4G=(V<#@<=#R>*M4 >57>BZQJUY?:X-*N;=+_7-,DBMI0!*L,#*&
ME=0?ESR<=<*,U2G\/W^ER^(;&>P\3W<E[>W%Q:C3KK;:W"3'(#G.$(R5;=V&
M1FO8J@FO+:WN+>WFGC2:Y8I#&S -(0I8@#O@ G\* *-E97&F>$[>QM(4%S;6
M*PPQ/(74.J852Q R,@#/&:\K.FZ]J-IX>>>S\3W&H6NHVD]^MUMBM8 LBE_+
MC7 <#M@'"C.17K]CJ5IJ0N#:2^8+>=[>7Y2-LB\,.1SCU'%6J //HM%U!?"'
MQ!MC92"?4+J_>V3;S,'A55(]<D8IEA%J/A77DU.;1[^^MK[2+2W/V2,226\T
M(;*,N00#OZ],CG%>B44 <I\.[.^LO"SIJ-B]C<R7UU,;=L'8'F=@,C@C!'-<
M3X@L?$6J6?B>QNK3Q#+?3/<1V5M9%8;)H2"$9G&-YQRP8DD\8KUJ\O+?3[*>
M\NY5AMH(VDED;HJ@9)/X57T?6;+7M/2_T]Y7MW)"M)"\1/OAP#CWQ0!PEA+J
M7A_Q2NH3>']2N;270K.W,EK"'>.5#(2A7(/?GT.,]:SV\.7=OH]A/JFB:F))
M[^\O3+I%P1=:89GW*BA?O CAL9 (Z&O2#K^E!+&07T3QW\QM[5X\NLL@#$@$
M9'\#<].*TJ /*[>P\4"STC6;VUO]132=7EEAM[A46\DM'B,8=E& 9%+$XX)'
MO1X@TW5O%'_"4:O;:/>6T4F@G3;6&XCV37,A<N3LSD 9 &>N37JE9VMZ]IOA
MZQ6\U.X,,+R+$FV-I&=ST554$D\'@#M0!R$3ZEX;\9:G>'0]0OX=2L;18&M$
M5@LD0=61R2-GW@<GCWK(T32M8T;3OA]/<Z1=R-I[7<5Y% @9X3*"%8C/W?4^
ME>IV\Z7-M%/%N\N5 Z[E*G!&1D'D'V/-4+WQ!I>GW%U;W5V(Y;2S-].NQCL@
M!(+\#G[IX'/'2@#RK_A&K_3M,U70KG3O$][<3W%QY*6EWLLKF.5V(+MT3AL,
M",\'KFO2==T*74? 5]H-LXCFFT]K6,LY(#;-HR>I'J:VX)X[FWBGA;=%*@=&
MQC((R#4E 'FTUUJNMWOA"W'AG4;0Z=?))>RSQJ$AVPNF$(/SJ2?O#C@>M4)=
M!N8],?[?H6IRH-?O[A;G3IC'=VJN[%)(P,%E8'!'H1P:]8JK8:E::G%+)9R^
M:D4SP.=I&'1MK#D=B.O2@#S---\43Z/;7L\.HW\&E:Y'>V<%ZJ+>36RQE6W
M8!8%V*YP3M^E7O%$FK^+-!U2.U\.W$%MNLUB-S%LN)V6X5G^3.0BJ._4YKTB
MB@#S[QKHMX?&&F:\D>KRV*6<EG-_9$I6>(EU96P.64X(('H#6-+H-^OAB\U"
MVT;5C(^MVEZ8;J?SKNXBA=,N5/W6PIPN<X KUJL^\UK3["XE@N+C;+%:O>2*
M$9MD2]6.!QWP.IP<9P: //-5T+6+_5=<U>UTR=@NI:9J4%M* C7"Q1+O09.
MPYX/<8JWJ\.I>+=8.H6VC7]E;6&DWL(-Y$(Y+B69% 14SG VYSTR1BNYMM9L
M+NZAMH9]TTULMW$I1EWQ$XW#(YZC(ZC(SC(J_0!P,^C:@?#'P^MDLY/-L+NR
M>Z0#F%5@=6)],$@5K?$2PN]2\#:A;6-L]S<[H9%ACQN<),CD#/?"FNHK.?7M
M+BDOTEO8XC8-&MR9,J(RX!09/!SN'3/)QUH Y"UO;W0_%.L:S)H&K7-GK<-M
M-#]G@#2PO''L,4B9RIZ$'IR>:VO >DWND>%TBU"(074]Q/=/;JP80^;(SA,C
MC@,,X[YK;AU.SN-3NM-BF#7=JD;S1[3\BOG:<XP<[6Z>E$^IV=MJ5IITTP6[
MO%D:"/:3O"8+<XP,;AU]: /+O[/UFRU(C0=-U[2M3;4-TEJ)!-I4B&7+R9;A
M04R<+A@3C%+KUGXAU$^)K.ZM?$,ES-),FGV]@5ALWA*X1GD&"Q_O!CD] *];
MJ&ZNH;*SGN[A]D$$;22/@G:JC)/'L* .!T>SU'3?$WAJYFTN\:"3P['I\CI'
MD6\P9&(DYRHP",^M85GH%S9^&?"Z:CHNN07%M8/$;_1Y2MU;N7SY;H.J$<Y.
M1D=!UKUNUNH;VS@N[9_,@GC62-\$;E89!Y]C6?#XETB=X5BO QGNY+*/$;<S
M1[MZ].,;6YZ<=: .,L]/\2W=MX/EU:&XFFM=7EE=Y442I;^7*L;2A?E#8*YQ
MW/KFH-2T>Y?XG_V%$H.CZE+#KETH/W6ARK*1Z.X@/X-7J%9>G>'M-TO4;[4+
M6%Q=WS;IY9)6D)Y)"C<3M4$GY1@<T ,\4Z(OB3PMJ6C-)Y?VR!HU?&=K?PG\
M#BN*U"^GU72;;3/$W@36KW4K8  6;#[/*^,;Q*KKA3U^;IGI7IE9.F^)-*U?
M4KVPL+AYI[)BDY$+A%8'!4.1M)!Z@$XH XKPYX8UC2KOP''?6Y9]/MK\74BO
MYBPM(5**6[G&1^!JOK=OKU[JGB"UN[?Q QD<KIL&F%8;66,Q@!I)1@[MV=VY
MN@X!KU.B@#SGP9HVHV>M>')[JQFA2V\+)9RLZXV3"2/*'WPI/X50N-(U:STU
MKH:5=SFV\8R:B884!D>W+-\ZC(S]X&O5:* /(9]$OM+U+Q$L]EXHG_M&[DO+
M0:7<%891(H^23GY&!&TEN, 5)<^%;S1=6T>]:UUM;!-%BT]TT:Y+RVTB,6VM
MC!=#NQD#JHXYKUJB@#E? 6F2:=H]Y)+8WEFUY>R7/EWMSYTS A5#N?X6(4$K
MDX]:XVTT_6;'4[9-"TW7M)O3?@W5DT@FTORC)F1U9N@*Y(VX.3C%>N44 <SX
M[TJ]U3P]'_9\(N+FSO+>]6V+!?/$4@<ID\9(!QGOBL>?[?XJ\6:7J,.CW]A9
MZ7:W6^2^B$3RR2H%$:KDD@8))Z<#%=]10!Y+86VLZGX#\.^$'\.ZA97D#VAN
M;F9 L,,<3JY</GEB%QM'.2<XQ5M-!U47<+&PFVCQI)?$[>D!B<"3_=R17I]5
M+?4[.[U"]L8)@]S9%!<1[2-A==R\XP<CGB@#R+6;F_T'X4^(?#S:/<7:I]KV
M:C&\;6[QO*S;V;=D.-Q&W&=P'UK<U%-;;Q'>17<'B#[#]G@&GQZ/MB28[/G$
MLHPRL&R.6  KIY? 7AR:^DNI+*4B2?[1);_:91;O+G.\P[MA.>>G6NEH \FT
M#2M7T73?A]-<Z1>N=.-W!>1Q)O>$R956(SRO?/I4EIHNL:3?66NMI5S<1V.M
MZG)+;1*#*89V(65%)^;&!P.<,<5Z+K.MZ?X?T\WVIW'DVX=8P0C.S,QP%55!
M))/8"IDU&T;2QJ32^59F'SS).#'M3&<L&P5XZYQB@#S#Q!H^K^)8/$^KPZ/=
MV\=W!96EK;3(%FG$<^]Y&3/RC#8&>< ]*['4["ZE^(WA^_C@=K6"RO(Y90/E
M1F,6T'Z[3^5;4>L6$NI1:>ERK74MM]K2, _-%D+NSC'4CWYJ]0!S'B^PN[Z]
M\,/;0/*MMK,<\Q4?<012 L?;)'YUSD)U7P[I_B/0SX>O[^>^O+J>SGMT5H9E
MG)(\QR1L*DX.[L.,UZ510!P7A#PW?Z'XGA6YB+Q6WARSL?M('RM(C/N4'\C^
M5:?Q"L[N\\+J;*TENY;>]M;DPP@%W2.9&;:#U. >*ZJJFH:G9Z5%#+>S"))I
MX[>,E2=TCL%5>!W) H \_P!3DUJ]\2WSW5IXDCL9H8'TZ#2PL(DRF7$\@^9'
M#$CE@ .E94/A36-;^'/ASP5<6$MDP5YKV]E3/V78[;0A[NQ(_P" D^M>P44
M<7INC:AKOANPM;^?5/#UWIVZVDCTR18HY=N%#+E3E" "O3&2*ET31KJT\:^(
MYI5G,$UE900W<O+2E%D#'/<\@GW-=?63#XDTJX\03:%#</)J$"AI42%RL>0"
M SXV@X(.,YH \GL?"E]#X:M_"UYI?B:XO$=8'1;TQZ>R!\^:'Y 7'S;<;L\8
MK>U.Q\164OB.>PM+M8[K78)9);:)7G^RB%%=X0V06##'0GKBO4*J/J=G'JT.
MEO,!>S0M/'%M/**0&.<8X+#\Z /,K'0]3N?$>M7$-EK;6MWX>EM(+C5I=TDD
MI;I@G]V.> 0.A.*KC2=2?_A&-8FT[Q#!!:Z3_9=U#8GR[F&1=A#[0<O&Q4CC
MT!KV"B@#RB/PYJ*Z4NLVND:EYL&NQ:D;6]NA)=744:&,L0>%?#9"D_P#O6_H
MTM]JWQ)GUAM%OK&P&D"VCENXQ&TCB7<1MSD=>,^]=Q10!RVI:?=S?$?1KZ.!
MVM8M.NXI)0/E5F:+:#]=I_*O/[30-7_X1WPA-/IFMP-H'GVE[#:,([C#J,2Q
M8/SJ",'')!/'%>TT4 >17?AR\OO"_BF:TTG6/,OFM(X3J5P9+BY6.0$DH?N
M9;&3DCL*[673[IOBE:ZB+=S:)HTL!FQ\HD,T9"Y]< G\*VM7U>PT+3)=1U*X
M$%K%C<Y4MR2    2220, 5)::A;7NG1W\3LMLZ>8&FC:(A?4JP!7\0* /+_[
M!N8=#LQJ&AZJWEZKJ$HNM,F9+NT#RL4=%7EE8'GKVX/;L? BZVNDW8UA[QX_
MM3?86OU5;DP8&#*%XSG=UYQC-%K\1?"MY>0VT.J?-._EPRO!(D4K'H%D90C$
M]L'FNB2\MI+R:S2>-KF%5>6(-ED5L[21VSM./I0!P<-[J?A[Q3XME;PUJ5[%
M?W$4EG+;1JRS$0(I5B3\HR/O'C[WI6+K&BZOX+\#^%KVQV2:YIT1TYD5N'^T
M#:%![[9?+(]E->NUEWGA[3=0UFSU6Z@>6ZL_]1NE;8AY^;9G:6&3@D9&: 'Z
M!I$.@>'[#28#E+2!8MW]X@<L?<G)_&O.TM]9TWP'J?@@>'KZYOIOM5O;W2(I
MMI4F=R)6DS\N _(/.1Q7I5CJ=GJ3W:VDPE:TG:VG 4C9( "5Y'/##IQS5N@#
MC?"FBW>E>*]>>>)S"]II\,5PPXE,<;*V/H<?G7$V'A;5M-T[PGJ%W::TL=MI
MTUE=1:9(4N8&:7>K;0<LIQ@@<]#7M%% '(> ],>SCU6]DL=0M3>W(=3J-SYL
M\JJ@4.X_@)QC&2< 9JFLM]X5\7>(;J31=0U"UU5X;BWFL8A(0RQ",QN,C;RH
M()XP>M=W10!YGX5\+ZKI.K^$WO;/;]GM-1>XV$,EN\TJ2+'GU )''H:Z[QH=
M7'A&_P#["B\W4=J^6H16.-PW%0W!8+N(![@5J3ZE:6VHVEA++MNKL.T";2=X
M0 MSC QD=:M4 >6Z5IM_-\0?#^I1VWB2:R@BN4FNM8?D.R# $?&P?+R=H!)
MYQ7J5%5+W4[/3I+1+N81->3BW@!4G?(06"\#CA3UXXH MT444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %<7JCWVN>/GT!=4O-.L;33DNW^QL$DFD>1
ME&6()"J$Z#J3S7:5B:SX7L=:O(+YY;NTOH4,275E.T,GEDY*$CJN><'H>F*
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
M;78/,F*N%,4VP1.,=?G3:01T*MGJ* ,?5;J9=.^'VLF0M>O>6T$CGJZ3PE9
M?J=K?516WXQOKO2$TC5()WCM8-1BCO4'W6AE/EDG_=9T;\*2Y\/R7&N>'[98
MBFCZ+'YZ%F!,DP4QQKCK\JEF)/<KUYQMZMI=KK6DW6F7R%[6ZC,<B@X.#Z'L
M?>@#RB/QGKLL>N0"\;SM::-M .!F))+A[?(^BA)/^!4_QM)>7VG^,[&;4;O[
M/I]_I:P*K@8#>3N!XYY;=]0*]!7P9HBW6A7 M3YFAQ&*Q^8X12H7G^]P!U[\
MTM_X/TC4H]92YBE(U<Q-=%92IW1A0A4C[I&U3]10!R5MH%QJ'Q(\0VB:[J=I
M%!I]BKR6\BK+,V)0K,Y4],,<#&2>>E9%G-J?BJZ^'DMSJD]O=RV^I+<75N%6
M1PA1>,@A2VT9('<XQ7INE^'[/2;R>\A>XEN9X(8)99Y2[.L08*23U/S')[U7
MT_PCI.F/I36T<H.EK.MMND)P)B"^?7D?A0!P\FN:WIMIJ>A1:M/)*OB"WTNW
MU"X"O+#%,B.2>,,PRP!([BI_$)OO#EU=Z,=6O=2L-3T2^EVWKAY()(D'S!@
M=K!\8/<<5V-SX0T:\AU6*XMVD35)EGN,R$'S%555E(Y4C8I!'<5!:^"-*M_M
MCS2WU]<7=LUG)<WERTLBPMU12?NCOQU/7- '+:&U]KUWI6AKJM[IUC8^'[.Y
M(LV5))I) 0"6(/RJ$Z=R>:H>%[O4-,CT2S%^TAG\4:A!=2* !< "8DD#@990
M>*[J[\%:7<K8&*2]LY[&V%I%<6=RT4IA 'R,P^\. >>AY&*+#P1HFF0V$-K#
M*D=A=R7D ,K-MD<,&R3R1ACUH X".\U]/AY_PF+>)-0:\@O65+;*>0T0NS$4
M9=N6R,\YR.,=*Z1%U/Q-XA\2%=>O=,CTF=;:TAMBH4-Y2N9) 0=X);H>,#\:
MZ#_A$=)_X1=O#OER_P!G-(9"OF'=DR^:>?\ >KEO$^@:A<^(=1N(O#=S>)=1
M)&D]AJGV5)P%QLND+KN .<%0?E./:@#?\!WEWK/P[TB[O;J22ZN;0&2<'YB3
MGGZUYWID.I:;X8MH]-UR_@DU#Q7)922,RL43S9@Q4%<;CU).>0.*]2\):+)X
M=\(Z5H\LBR2VELD4CKT+ <X]LYJ-/".DQVUO L<OEV^HMJ<8\P\3EF8GZ9<\
M4 <W;66H:CXJO/#3>(M6BLM'LX9/-251<74DK2'<[[>0H4#  ]\UD+K>OZA'
MHVDG69HIU\076E7%["BA[B*.-SNQ@J&P!SCAAFN[UCPI8:QJ$>H&:]L[](O)
M^TV-PT+M'G.QB.HSR,].V*+;PAHUG#I4-M;-&FES-/;@2$GS&5E9F)Y8G>V2
M>YH X5[;6_\ BL[0>*]7$6@J);)@Z>86: 2XD;;EU!X XX)SGC'H&F7\][X.
ML]1D8"XGT])V*C&&:,,<?B:4^'=/+ZR^Q\ZPH6[^<_,!'Y?'I\HJPFGQV>AK
MIMHI\N&V\B)6.3@+M )_*@#S2QN]<TWP)X=\73>(KZ]O+A[07-M(5,,T<SJA
M0*!PP# [LYR#GKBGOJFM6FF^,?%+ZS>RG1[V\@L[#*^1M &TN,9;!;/48"_6
MMGP;\/+73-"T+^U/MC75C&DOV*2[:2WAN .75,E<Y)(Z@$Y&*ZFU\/Z;:VFI
M6JP>9!J4\L]U'*=P=I!AQ]".U ')7,>J^%+OPY>'Q#?:G_:-]%97D-T4:.3S
M%8[XP%&S:1G XQ4&@_VOKOARV\72^*9[">:X,GD2E/L<<0E*^4R$#)*C&[.=
MQZUT>F^!M)TR^M;H2W]T;($6<5W=O+';9&/D4GKC@$Y(%,/@#1#>&7_3!:M<
M?:FT\7+?93+NW;O+SC[WS8Z9YQ0!Q-QKFOZS>>(;FW_X21)+&]GM+$:<L'V6
M/RN 9 [ N2>6SV/%3W/B/7=;UZ*PN+;7;=+?2[:YG@T0Q!_/E!)W.[#Y5VX
M&<G.>U=AJ/@/1]1O+R<RW]LE\<WMO:W;Q17)Q@EU!ZD<$C&1UJ;4/!NEWT]M
M<0M=:=<VT MHYM/G,#>2.D9QP5'8$<=L4 <=9ZOXDU5_#WA_4;J\TZ2ZGO1/
M=+Y:7$T,&W8/ERJ,V\;L?W3C&:K1VFO:;?>.;;2=1FO-0%S8!)9)(TG>(H,H
MK$;?,V9 )'/!ZUW#^!M#.CV>FPQ3VRV<IFM[B"=EGCD.=S^9G)+9.<YSGFH8
MOA]H,=EJ%LZ7<QOY(YIYI;EVE,L?W9 ^<A@><C^7% &?X'U0RZOJ&G2WVMK,
ML*3#3M;@ GB&2"ZRCAT)P.^".O.*FU:2^UOQ]_PCR:I=Z=8VVFK>R&S8)+.[
MR,@&X@D*H4].I(S6SH_A>RT:]FOEGO+R^FC$37-[.99!&"2$!/ 7))P!R>M&
ML^%[#6KNWO9);NUOH%:..[LYS%($/)0D=5R <'/- 'F>K-?ZM!9:=?:O>22:
M5XLAT]+J-E1I48*ZLV!CS%W8R /IS7>_$&U+_#+Q!#]HG4QZ;,WF*PW/MC)P
M3CD'&#[$U:@\&Z-;Z=9V44$@BM;U;]6,K,\DX).]V/+$D\YK7O[&WU/3KFPN
MX_,MKF)H94R1N1@01D>QH \QMM$GN?&N@6,>LZC B^&V>6>-U\Z13,AV[MO
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
M"I4J >,$'GC)P,GBFIX T1+Q95^V?95N/M2Z?]I;[*LN[=N$><?>^;'3/.*
M..O;O7-2\">(O%T/B&]LKRW>[%M;1E1##'$[($*D<L0I.[.<D8Z8KK/#VIWM
MUXVUNSGN'>W@L+&2*,]%9Q)N(^N!^59_C+X>6VIZ%KO]E_;%NKZ-Y/L4=VT=
MO-<$<.R9"YR 3T!(R<UKW?@K3]2N8+Z:6^M;S[,EM<&SNWA$\8_@?:>0"3R.
M>>M '(^'O$>KW<'@QIM0ED^VVVIO<$D?O3&?D)^G:J4&J^(-,^&6EZ\VMZE?
M:GK;6EMC$;+;B1L;HD( W[>/F."QS7H-EX,T;3X]+CMH9$33(YX[5?,.%6;[
MX/K[>E3'PII#>%8O#<EN9-,BB6)$9SN4+@J0PY!! ((YXH X/^W_ !!X<;4K
MB*UUZ73XM*N+G&MF)G2>,94J48DJ><CM@8ZT[4-(O[6?P-?W7B"]U!KC587G
MCN"A0R-#(=T8 &T#YA@<8(]*[/3O!NEV%W-=S27FHW,L!MC-J%PT["$]4&>
M#WXY[U5M/AYHMI=V$XEU&4:=()+**:\=X[; (VHI/3!QSGH!0!U=%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !6?_ &Q:_P#"0_V)E_MGV7[7]WY?
M+W[.OKGM6A7%ZTFI:3\0(->@T>[U*SETPV3K9E"\<@EW@D,R_*1D9SQCF@"W
M=>/]%M+6.=UNW$NH2Z;&D4!=WGCW J /4J0#[CI4L/CC1S8:G=7GVC3FTP*;
MN"\B*21AON' SN#=!M)R>.M>?M#K.AP^'9[S1W:^D\47EU]B21"S)(DS?*Q(
M!."2,D9('2M/6/#NM^*Y]:UR+39+*0Q6<=C9W;JKW'D3&9BX!(7<3M&3[G%
M'7:=XSL+Z_%C/9ZCIUT\+3PQ7]OY1F1?O%.2"1D9'!&>E4M/^)&C:BVG/%;:
MG'9ZC(L-M>RVA6!Y6Z)N]<Y'3&1UJE<)JOBKQ-H]Z=#O-,M=*CN))&O2@>66
M2(QB- K'(&22QP.!56+P[JJ_#?P;IILG%Y8WNGR7,61F-8Y%+D\XX&>E ';Z
MSK-IH.GB^OMXMA+'$[HN=F]@H8^@R1DU#?>(]-T[4S874QCD2SDOI7(^2*%"
M 68]N3QZX/I5C6M*@US1+W2KH9@NX7A?V##&1[CK^%>>6'A#Q!KG@SQ)_;JK
M;Z[J5JEC$6?< D*84Y'0.Y=C[,* .LTSQOIVI7UI:M::C9_;039RWEL8TN<#
M=\A]<<X;!(J.S\>Z7?7=LD=KJ*VEW.;>VOWMB+>9\D !LYY(."0 ?6N7TC0K
MB\UC1?-\/Z_"]E*)[F75-6DE@@=5('E+YK>823@' &"<]<56L-%UNSU:R&CZ
M/J^BW@O@U]&EVKZ6\._,C*K,3\R] JJ03VQ0!J0>.;J]L/$+W)O-+6QU>.UA
MN%LU;"%XE"$,2"Q+'/H&!'2MF_\ B'I5C<ZE ++5+DZ8Y6]>VM"ZP#:&W,<]
M,'MD\'BN9U#1-:>Q\5:4FD7+-=:[!J-O."GERQ>; 2 =V=P$;$@CM6[9:+J$
M=IX[5[5@VHW,KVHR/WJFW1 1_P "!'- &KJ'C+3;.2RAMX;S4KB\@^U10V$/
MF/Y/'[PY( 7D 9/)Z9K.OO&D&J>";_4= DE6Y:?^SK8S1%&6Y=EC7Y6]&<'!
M'8YK$TJVU/PSJ^D72Z;)J,S^';6SNK*WFB%Q;-'G#;7904)9E)!X*U6\&6^H
M:S=1-<67DV\?B'4+^YV,&19$^1$W#[WS.3D?\\Z .KN?'>F:?/<0O;ZG<6]C
M*+>[OXK8M#%)QD,1SQD9P"!FK6J>,++3=3ETZ*SU'4;J"-9;A+"W,OD*WW2Y
MR.3@D 9) Z5Q/B#1M775]6GT?1M9L-;FF+6E[IEVHM+D8&UYT=L C^(;<G'&
M:DU'P[?Z?XMU?4;O3]>OXM26&6.31;]H LJQA&1U$B<94$-SP<4 ;E]X\!\2
M>&+;2X)KS3-6AEF:>& MN  VX)(Q@DE@1D<>]8\'CS5]2T2.Z2*:RE'B2*P)
M>W"JT#7!0ISGYMHPW<$\5+9Z#J6A3>!YX]$E\JR%W'=V]M<><;9I]I!+.P+
M'.2,^V>*K1Z)K1TZ32VTBY5[?Q6FH"8E/+E@:Y,F]2&S\J]00#SWH ZJ^\>Z
M58W5Y']FU&XM[!]E[>6UL7@MF R0S=3M!!.T''>GZCXYTRPU-M.BM=0U"[%L
MEV([&W\W=$Q(#@YQCY?7N,9KA9O"M_ILFO6,FC:_J$E[>3SVCV6J/#:2K*2V
M)0)%V8R0WRG('>NN\.Z!=:3XPFE-J([)-$L[.)U?<NZ,R;E!/S' *\GK0!)8
M_$;1-0FT[[/%J!L]0D6&WOFM66!Y2.(]QYW9!'3&01GBI;[Q[I5C=7D?V;4;
MBWL'\N]O+>V+P6S 9(9NIV@@G:#COBN<T_PWJ\/P]\&:<]BZW=CJEM/<Q9&8
MT61BQ/.. 1TK+F\*W^FOKMA)HVOZA)>WD\]H]EJCPVDJRDMB4"1=F,D-\IR!
MWH [K4/'&FV6J-ID-KJ&H7@MTNA%8V_F[HF) 8'(&/E[GN,9S65??$%'O?"C
MZ1;7-U8:O-*)&2W);"H_R $C#!UY'HIJSX=T"ZTGQA/*UJ([)-%L[.)U?<NZ
M,R;E!/S' *\GK7/6&B:UI&E>$KEM(N;A]-U6^EN+>$H9%CF:<*P!8 CYU/7H
M: /1=7U>RT+2Y]2U";RK:$#<P4L22<  #DDD@ #N:QK?QQ9SR3VSZ;JMK?1V
MYN8[.YMMDD\8X)C&2&P2,C.1GI3O'&D7NK:#%_9T:S7=G>6][' [!1,8I Q3
M)X&0#UXSBLL1ZGXG\8:5JC:->:99:5;W )O=@DFEE4+M559OE !))ZG&* )/
MACJ>IZYX5CU?5;R]GGN\/MG@2*-.,_NMH!*<@9))XK!OOB'J;>%/$^H+%/8R
M:9JL=O%*]L,+#YL2E2#G+X9L\?Q#%=AX!T^[TGP%HEA?0M#=6]JJ2QL02K#M
MQ7'W^AZU+HWBW1UTBY9[K6XK^WF!3RYHC-"2 =V<@(Q((% '8Z9XST_4=2ET
M^6VO]/N$MS=*M_;F$20@@%U)/09&0<$9Z5!8>/M*O[FS06VHP6M\_EV=[<6Q
M2"X8\J%8\C< <;@,]JI>*_#M]KGB>$0H4M9=$OK)[C/$;R^6%SW[$_A7,:3X
M9O)%T+3;GP_KHN+*:%KJ6\U>1K*+RL'?$!(=QR!M7:,9YQB@#L_B-JU]H?@6
M_P!0TVZ^RW4<D"I/L5M@>>-&.&!'W6/45R^NZWJGART@OK+QY%K=Q]IBC73)
M(+8FZ#.%*KY2A@<$G/M74?$?2KO6_ U[I]E;&YGEEMR(ACYE6>-FZ\?=!/X5
MF>(_!ZZ3=67B3PAI-K%JEBX$MI;Q)$MY QPZ=@& Y5O;% &WJGC*QTW4IM/C
ML]1U"YMHUDN5L;8R_9U;D;SD<D D*,G':FW'C?2U6P^P17FJR7UN;J&*PAWM
MY((!<Y("C) Y.<\8KD-0T"[LO%>M:E+I?B*\M]4,5Q;G2M0: HXC"F.51(N#
ME1AN1@X[4VX\+/8Z5H,%SX9O@MM:R 3Z)?L;JSE=]Y3<SJ70Y/.3@CIB@#;U
M3Q_MN/"\FEVEW<6FJW,D<N+8[P%1\I@D8<,O(] :FO\ Q]I\\.MVMD-4B?3X
M[E)]0CLO,BM9(E8G)/REN,@=^,XS6*+#Q3!IGA74-1L[W4;C3M3FEDBWQM<K
M;LDB1[SD*S@,N[!J]'H&IKX&\=6/V-A=:C=:C):QY&91("$(Y[^] &Q<>,[*
MQ-M9I!J.JWIM$N94LK7>R1L.'<9 7.#A0<\<"J$/CQ=0\9Z-8:=!/<:5J&GR
M7(G2 \MO0 Y)X5<L&XR"152P@U;PGKMW?G1+S4K?4K&T3_0RA>":%"A1@S#Y
M3G(8< YS4BVWB >*O#FK:EI.6ET^>SNQ8,I2T>22-E)W-D@*I!(SR#CM0!IC
MXA:.TP80W_\ 9QG^S#5/LQ^R^9NVXW]<;OEW8VY[TSQ!XZL]-_M2UMH+^XFL
M82;BYMK8R16KE-R[S],$@ X'6N"LO!=];>'X?#%UH6N7=TCB%I3JTB:<\6_/
MF8$G V\[ N<UT[P:UX>D\4:?;Z#=:FFKW$EU9W$+IY>Z2-5*2[F!7:5ZX.0>
M.>* .L\)7USJ?@W1+^\D\RZN;"":9]H&YVC!)P.!R3TK@;+7M4UVZU!7\;QZ
M+K<-S-%#HLD$*J@5B$#;QODW  [E/\7%=YX0L[C3_!6AV5W&8KFWT^"*6,XR
MCK&H(_ BN-O3J=U82:5XK\!R>(+Y"Z0WL"0>3.N3M;<S PG&,\<8R* -:;Q9
MJ]EXI\+Z+?::ZRW]K))>_9X_,19!L'RMG[JEB6] 5JR?B)HHD,GDW_\ 9HG^
MSG5/LQ^RA]VW[_7&[C=C;GO6%9:#KNB7'@1KJVGU%K&UN+.]E@=6,)E\O:3N
M()50I!(R<+TJB-*\0)\.F^'XT"X-UL-F-1W1_93$7_UQ.[=G;SMVYS0!V>J^
M.-.TN_N[06FHWKV2![U[.V,BVRD9&\Y'..<#)QVK,3QM;VWB/6I[O45;0X-.
ML[FUVH"6:4R?=P-S%L+@<^U06ZZSX1U3Q!%;Z#=ZM'J5P+JSG@:/;O,2(8Y=
MS J 4!SR,'UXK*U+P/K6M>)KS6IE2VU>UT^RDL)XG(M_M:%RZ[2>5Y"Y/0.:
M /3[6<W-K%.898?,4-Y<HPZY[$=C[5SOP^U:^USP39:AJ,WG74DDZO)L5<A9
MG5>  .B@5MZ3=W%]I-K<WEE)97,D8,MM(03&W<9'!Y[^E<)H-UKW@K2I?#Y\
M*ZAJ7D7$S65S:21>5,CR,Z[RS H1NP>#T[T 3^'?'P@\':->:Z]S=7^HW-U!
M$+>WW-(T<L@50J@<[5 Z?7N:O7WC6SN_#&KW4-Q?Z1<Z=)''<K-: SP%F7;^
M[8E2&!X.>ASVK*T;PCJFD1^ K>:)97TZXNY[YXR"L32QRG\1N?;Q47B;PYJ]
M[_PG7V:Q>3^T#I_V7!'[WR]N_'/;'>@#4A\>B#Q+XIMM4MY[?3='2)EG,!P!
MM);)R22Q(V@#D5MZ1XJMM6U%].:PU&PO!#YZQ7MOY9DCS@LI!(X)&1G//2N9
MU+3-4'B#QC$/#_\ :5MJUK T'FNJP2^6FUHV.=RL>QQCW%)X/T_5;3Q*ALK?
M7K+0!;.)[76;A90LN5V"'YF8 #=DDXZ4 =;KGB.ST$VL<T=Q<75VY2VM+6+S
M)92!EL#T Y)) %9%]XPL[OP[<7EM>7>FS6U[!;7"26H,T+M(@V,C<88,!N&>
M&R#Q5'QUX?NKSQ#HNMQ6VHW=M:1S07,.G71@N%#[2'0AEW %<%<]".N*Q7\+
M7]QX<U>6TT6^MYKW4;%XTO;UI[F6*&5"7D+.P7 W8 .<#Z4 3:WX_P!6CT_Q
MP+>&>SDT=XUM9VMQM48CW;MV06.\D<?=P:ZW3/&FGZEJR:<UKJ%E--"T]NU[
M;&);B-<;F0GTR#@X.#TKC_$>AZU<+X]TZ#2+F8:J8+BTG4IY<FU(D9/O9#95
MCR,8'7IGI/%.AWFK^*M">&-A:QVE_#/.,?NC+&BK^H/Y4 26OQ TB[GMML&H
M)8W4P@MM1DMBMM,Y. %;K@G@$@ ]C5FR\9V&H^(9M%M+349IK>9X+B=;8^1"
MZC.&?H,]OP]17GNF>$[T:9I.@W>@:Y)=6TD,=Q+/J\GV )&P/F(!)S]T%4VC
M!],5WW@_3+O3IO$;7<!B^U:S-<0DD?/&40!N/H?RH A\0>*;K2?&GA[1HK.>
M6WO_ #C,\<.[[J_* <\8)RWH,5B:/\2$MK75'UJ+49XK/5;FWEO8K/,-M&)2
MJ!V&.BXR0">1FMKQ1;7Z^+O"VK6NGSWEO:27$=P("NZ,2H%5L,1D CG%8DOA
MW56^&'BW3%LG^VWMW?R6\61F17E8H1SCD8ZT =+<>--/@\2G0([74+J]4Q>9
M]FMBZ1+)T=VZ*OJ?\#55?B)HK2+((;\::\_V==4-L?LI?=M^_P!<;N-V-N>]
M&BZ/>1>+_$UU<0-%;WMK910RY'S%$</CZ$BN5;2_$$OPZC^'YT"X2Z"+9MJ&
MZ/[*(@X_? [MQ.T9V[<YH ]"A\0V,YU@(9/^)2Y2YRO<1B3Y?7Y6%9\_CC38
M[?3'MK:_OI]2MA=P6MI!OE\D@'>PR H^8#D]>!FN=NH-<TG4O%]G;:#=WPUI
MA+9W,3QB($P+&1(68%<%<]#D=*@TFTU/PSJ6@78TV2_G'ARWL;NPMYHA<6[1
MG(<*[ %"S,I(/! H MZS\1;>33M(U/29;I+4ZZNGW<9M297Q&Y:,(06SNVC@
M Y&*ZC0O%%GKUS>6B6UY9WMGL,UM>0^7(JOG:PY((.#R#VKSS0;+4]9BBNOL
M&R2'QM+=7,:.K"%!&RDYZ'#$ D=Z[BRTV\B^)&KZD\#"SFTZVACER,,ZO*6'
MKP&'YT 6M8\46FD7\6GK:7U_?RQ&86UE#YCK&#C>V2 !GCD\]JM:%KEGXATQ
M;^Q\T1[WB>.9"CQNI*LK*>A!&*Y7Q7#K4OBJ(/#KDVA&S C31IUB<W&X[A(V
MY6 V[<8..M6_AMI-_HWA^]MM1LI+25M2N)EB>;S3L=MR_/DEN#C).3B@#6'B
MK2_[.UF^DDDCBT>22.[#KAE**&.!W!!!'KFJ=WXXL+>X6V@L-4OKH6Z7,T%I
M:^8]NCC*^9R ">?E!)XZ5A>)_"NIWWC*..SA#:)K)@;5VW ;#;G<..O[P;4.
M.R\U<(U3PQXPUZ_31+S5+/5_)FB>R*%HY$C$91PS+@':"&Y')H EE\7+=>(_
M#<NFWHDT:_L+VYD"H/G\OR]O4;@1N88XYZ]*UQXKTPZ-I&JYF^S:M+!%;?)\
MVZ7[FX=O>N,T7P?K%G=>'1=0*K+:ZHUV48,EO)<.KJGOCD<<<&JUK9^(I_#O
MA#P^_AN\@DT:_LVO+F22/RBD38+1D,2V1ST&!GO0!U-[\1M(LIM13['JEPFF
MRM'?36]H7CM\#)9CGICGC)P,XIH\9.WQ#715MY6TPZ8+L7(B^4DMG>6S]S;Q
MG'4FJD&AZDGAKQ];-:,)M2N[R2T3(S*KP*JD<]R".:JQ:=KVF:]IES:Z9*[O
MX:73UE!4I;W*G</,!.=N<#(S0!M6GQ!TN[N+ ?8M4AM-0E$-G?36I6"9F^Z
M<Y&['&0,U'/\2-(AFU)%LM5GBTQI4O+B&T+10M'G<"V<9P,_3'J*XL:'KVH#
MPY-/IGB.;4+/4;6XU&;4+U?)3:PW^5$K[2,\@A>%'7/%=UX4T6:WM/$=OJ5K
MMBOM7NY0CX(EB? !X[$4 ;$VNV,.H:79!VDFU(.UOY8R"JKN+$]EP1SZD5#K
M?B.UT.2T@D@NKJ[O&86]K:1;Y)-HRQY(  !&22.HKC?AIIEZ=2OY]0<2IHBM
MH5C)G.^.-R6?ZD>4I]XS6SX[TS[>=,>30[K4;>%W+3:?.8KNU8@;6CPRY!Y#
M#/IP: +I\;Z2-%74BEX"UU]B6T-NWV@W&?\ 5[/[W&?3'.:R]8\<";PKXF>P
MBO=-UC2[%KCR;VW"NF58HX!RK#*GUZ<UB"T\:Q>&HD=M:>S.JDLGFQ'4EL=G
M +9QNW\G!W;3UJDWAC6)E\8M;Z1JB1:CH8M[0ZA>>?--(#)PQ+MM)W#"YQCT
M.10!W,_C*ULGM[+[)J&I:A]E2XGBL+?S#$K#AFY &2#@=3C@5MZ5JEGK6F6^
MHV$PFM9UW1N 1[$$'D$$$$'H17FU[X:O-.\3WNI7&G:]>6NH6MML.CW[0M%+
M''L*2*)$R#@$-SC)KM?!6E2:-X5M;2:R%E,6>62W^T-/Y;.Y8@NQ)8\Y/;.<
M4 4[GXAZ-;37#&#4'L+:8P7&I1VQ:VB<'!!?K@'@D @>M69O&FGQ^)3H,-KJ
M%U>JT7FFVMR\<2R#*N[= O/7Z^AKD%L/$&G>!]2\#Q>'[FYN)_M-O;WX>,6S
M13.Y\QV+;E*ASE=I)(XSFNC\*Z%=Z1XIUZ2:-OLTEM80P3G'[WRHF5O?@D?G
M0!)XV\477AK^Q!:V<UQ]MU&."7RH=Y"8)*CD?.>WT-9,7CZ33_$?BBUOK74K
MV"PGB9%M+/?]FA,",2Y&/XBQZD\'L*UO'EI?3V>C75A8S7S:?JL%W+! 5WM&
MH8';N(!/S#C-0:7I5^E]XUGDM'C7494>VW$9D'V9%]?[P(H LW_C[2+*>Q@A
MAO\ 4)KZU6\MH[&V,K21$_>QV'?G^?%-O/B#I-G/=C[-J,]I8R&*\OH+4O!;
MN/O!F')V]]H..]9'@[P_JFG:SX=GN[-XDM?"\=E,Q(.R8.A*<'K@'VXJK';:
M]HGA[7/"\/AZZOI;N:Z-G>1O'Y#I.S,&E)8%2N\@C!SCC.: .ZM-<L;[5[G3
M+=V>>W@BN'8#Y"DF[:0>_P!TUEMXZTG^R+#4(8[RY.H2R16EK!#NFE9"P?"Y
MX VDDD@ 5S^GZ?JW@OQ &CT>\U>WFT>SLDEM&3Y98 ZD/O884[@=U9FCZ3K'
MAZS\'WL]@)M1LQ?Q3Z9'/&)G263<7BW, VW"DC(X:@#6\0_$2$^%]4O-*>[L
MKO3+NTBNUN;;#Q"25 R[2#D[2W0=\CL:Z/1_%UEJ^K/I?V/4+&\$/VA(KZW,
M1EBSM+KUX!(!!P1GI7GLMOJOB6X\;!-*>&Z?4M*/V4NC,JH8V.X@[=P09(!.
M.G-=Y=:;=R?$K3=36!C9Q:7<0O+D85VDB*CUY"G\J +^M^([30GM898;JYN[
MMF6WM;2+S))-HRQ X  &,DD#D4:#XBL_$,-RUM%<P36LQ@N+>ZB\N2)\ X(]
MP0002#FL/QM'K4FIZ5]F357T;$OVQ=(D5+CS./+R20=GWL[2.<9J#X>:/?Z5
M?>(Y+S3[JSBN[N.:W%U<^?(R>4J_,^YB6R.1DXS@<4 =U1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
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
M;6ER829&:4;\KSQMZ#@Y&<XK+T+Q!JUUJ'A&WN;^64?VCJ5E-+G NUA60([
M<$_*#]1F@#T;3=,LM'L(K'3[:.VM8AA(XQ@#)R?J2>2>]6J\J\4:WJ\;>-X[
M+5)X'MK[2XK9E;/D>9Y6_ ]#N.1WS5K7])U?2;RPL[2]U_6--CAEEN(;;5 E
M]O++MDR2I= ,@*".30!Z717FND:]-<W_ ()AM]6O[F*2YOK>[^UQ^5*S1Q.0
MDJC@LI 'N1FC5=>N(-0\:P2ZS=VD<5U8V]J;>/SI%:2-<QQ)G =R2,]B<]J
M/2J*\ELM2U33O$U]9)_;UI:3:%<W2Q:O>+/()$90LB8=BGWCP2/IQ4EB-4TW
M2? VO-K^J75UJMQ:PWD4\^Z%TEB)($?0$8&".?7.: /3K2_M;XW M9TF^SS&
M"78<[)!@E3[C(H%_:G46T\3H;Q8A.T(/S!"2H8^Q((_ UQ?PTTY;-_$[BZNY
M?^)W<18FF+CY2/FP?XCGD]\"LO7?,T?XC>)-<MYKI[BR\,B\CA,S&-F#3 *5
M[K\N<>I)ZT >H57OK^UTRT:ZO9T@@4JI=S@98A0/J20/QKSJ:/4/#VD^&]?B
M\0:E?75]=VD-W%<3[X;E9R VR/HA&[*[<<#G-:WQ8M1=>!I,S3Q[+RU/[J0K
MG,Z+SCKUR/< ]J .JBU6SGU>YTJ.4F\MHHYI8]I^57+!3GH<[6_*H]3FL)GB
MT:]$C?VC'(BHJN RJOS99?N\'CD'TKAD\/'4?B;K%H=7U2V@M])LE)MKDQRR
MG,H5FD'S'&#WY)YS570?$&L747@GS]3<R3IJ<<\DAPLIARJ-(!P<;0?SH ])
MTO2[+1=.AT_3K=+>UA!"1KGC)R3D\DDDDD\FK=>3^&[[4M,UG15U^YU^VN[I
M_*>XDN5N]/U!V0D!"IQ%DC<N .!CFNQ\<WXLM%MXQJ%[:275W' BV$7F7$^<
MDQQY(VD@'YNP!H Z>BO((]5U?39O%]BCZU:0Q>'GOK:+4[M9YXI!YB[U968J
M#@<%LY&>*Z74-3O / *)>S*;^=5N-KD&5?LSL<^OS8/UQ0!TLOB32(8HI3>*
MT<MZ-/5HP6'GEMNS@>H()Z"M6O#8M)9/"L$4&HWJ23>-/)$KR^88MMQ(N]0V
M1NYR3W.,UN:[JFI^![SQ);6&IWMY%'HD=]!]OF,Y@F,K1E@6YVXPV#QQ0!ZM
M574M1MM)L)+V[9U@C*ABB,YY8*.%!/4BN)N[6\\(ZOX:EM]=U+4!J-ZME=PW
MEP95E#1LWF*#]P@J#\N!@US<$FKQ?"R[\52>(=6EU"5_)1&N3Y42"\"#:O\
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
M %AG8*6P/FW#@'&5 ..,UA1>-KR*X\+PV4>HZC;:A?7D4\LD,0D<1F4!!\P
MVE0<]U7UXH ZNX\':'=6%S9RVC&*XO&OV9975TN"<^8C Y0_0BI]%\-:;H,E
MS-:+/)<W)4SW-S.\TLFWA07<DX'8=*YK0O'SM8^([_7+2ZM;;3M1>"(F)<D?
M*JQ *Q+29/T^88/IL6/C*TN+R2TU"POM'N$MVNE34$11)$OWF5D9A\N1D$Y&
M>E %_7?#FE^(X(8]2MV=H'\R":.1HY86]4=2&7\#4&C>$='T.>XN+:&::[N5
MV375Y.\\KI_=+.2=OL.*Y74O'L]]<^&AI]CJMC;:AJD*I<W$"K'=0$-D#DE<
M_*1N"DCD=ZV_B'K5SH'A==0MII(F2]M5D:--S&-IE#@#!SE21QS0!+8^ O#^
MGWEO<0V]PR6LAEM;:6ZD>"W?^]'&S%5/)Q@<=L5=D\+:1+IFJZ<]LQM=5E>:
M[3S&_>,X 8YSD<*.F*S1X\M$6_2\TG5;*ZM+1K[[+/$GF30K]YH]KE21QD$@
MC(XK3?Q+8++HL<1DG;6,FU\H _($WESD\*!C\6% "ZIH5K?,MV(<WUO:36]L
MQ<@*)  1CH<[5Y/I7/\ A#X>Z?HVD:(U]#,]_8P1MY+W<DD$4^W#ND9;8&SG
MD#N2*M>-O$M_X>N?#\=E8W%R+[45AF\E$8E-C-L&YAAB0,=L*W(XK'MO'=SI
MVL^*XKO3]5U*#3[W.ZTA0K;0>2C<DLN>=YP,G]* -NX^'7AR[^V1S0736MX[
MR368O)1;EV^\_EAMH.>>G!Y'-;-IH=A8ZB;^")A<M:QVA<NQS$A)48)_VCSU
MK,O/&EE#+90:?9WNK7-Y;"\C@LD4L(#TD8NRJH/09.3Z5IZ)K=IK^FB]L_,"
M[VBDCE39)%(IPR.O9@10!S?B;PQ,_A)O"N@Z9$UG?O()YYKCBUWR;VD .2YR
MS$ ="!VKKK*TAT^QM[*V0)!;QK%&H_A51@#\A7G8GOM7\9^)[:X\9WFD6]A<
M0QV\$30*NUH48GYT)/)/>JNE^+-:GBTV%M4%Y&GBC^S1?QQJHO+<1.W.!M^]
MP2N =OUH [6+1I[/QG>ZA#&LEAJMLJW:DCY)H^%;!ZAD.T_[B^M0V/@+P_I]
MY;W$,%PRVKF2UMI;J22"W?\ O1QLQ53R<8'';%5M0^(5EIXO+@Z1JTVFV4QA
MN=1BA3R8V4X8X+!V /4JI'!J?4/'%M::S=:3:Z3JNI7MK%'-(EG"K (X)!RS
M =NG4]@>< &B?#.DG2M3TS[.WV34Y)I+I/,;YVE^^<YR,^W2M2*)((4BC&$1
M0JC/0#@54T75[37M&M=5L'9K6ZC#QEEP1[$=B#D?A5Z@#E+OX=>';J[GN$BO
M+0W+%[B*RO98(YB>I9$8#)[\<UI0>$]#M;?3+>VT^."'39C/:I$2H1RK*6./
MO$ACUSUK9HH P-0\&Z/J6J3:C*MW%/<(L=S]FNY85N%7A1(J, V 2.>W'2GV
M'A'1-,73%L[0Q+I;3-9J)&(B\W._OR#N/!Z=JW** ,6]\)Z-J$>KI<VI==6,
M9O/WC#>44*A&#\I 4=,=*JW?@?1[MK>1FOXKF& 6WVF"^ECFDB'\+NK N/\
M>R:Z2B@#!N/!FA3Z/9:6MD8+>Q.ZT:WE:*2!N?F5U(8$Y.3GG/.:M:)X>T[P
M_%.EC')YEQ)YD\\TK2RS-C&6=B2>/RK4HH YF]\!:!?WES<30W02[D\VZMH[
MN5(+A^/F>,,%8G SQSCG-;M_86VI:9<Z==1[K6YA:&5 2N488(R.G![59HH
MYW2_!&AZ1?P7=M#<,]LI2U2>ZDE2V!&"(U9B$R...W'2H9?A]X=FNWF:VN/)
MDG^T268NI!;/+G.\P[MA.>>F,]JZBB@"C;Z396NI7^H0Q%;F_P#+^T/N)W;%
MVKQT&!Z5CGP%H(@T^.WCN[1K"$V\$MK>2Q2"(G)0LK LN>>:Z:B@#G;7P/X?
MLK;[/;V31P_;H]1V^<Y_TA,8?DYS\HSZGKFM6PTJSTR6]EM(BCWMP;F<EB=T
MA55SSTX4<#TJ[10!Q-YX(75O'FHZO>FXBMY+&""":TO'@DR&D,BDH0=I!7KZ
M>U:]WX,T.ZT>QTL6C6]O8,'M#:RO%) V",JZD-DY.>><\UOT4 <W#X#\/06=
MW:I:2&.\EBFN"]Q(S2R1L&5BQ;).0">>>]6]9\+Z;KEU!=W'VF&\@5DCN;2Y
M>"4(>J[D()4X'!K9HH YV;P/H,ND6NF+:RPQ6DIG@EAN'2:.0YW.) =Q8Y.2
M3SGFHE^'_AQ;"\LQ9RE+R2.6:1KF0R-(GW9-Y;<'!YW9S73T4 <Y;^!M#M[Q
MKTQW4]X]O);27-Q=RRR/$^,J2S'C@8].<=35X^'-+;3]*L3;G[/I3Q26B^8W
M[MHUVH<YR< ]\UJT4 9>G>'M/TK4[^_LTECEOW\RX3SG,;/W8(3M!/<@<TVZ
M\-Z9>:]#K4T4GVZ* V^Y96"R1'/R.@.UQ\S'D'DUK44 <UI_@/0--O;:Y@@N
M6%HQ:T@FNY)(;8GO'&S%5//&!QVQ6OK&CV6O:5/IFHQ&6UF WJ'*G((8$$$$
M$$ \>E7J* ,S3M L-+O'N[=93<R6\5L\LLS2,Z1YVY+$Y/S'GJ<\U6M?".BV
M8T\0VF!8>?\ 9PTC,%\XDR9!/.<GKTK<HH YK3O >A:9>6UQ!'=,MHQ:TMYK
MR62&W)!&8XV8JO!(''&>,5IZWH-AX@M([>_CD(BE6>&2*5HY(I%SAE92"#R?
MSK2HH Y^Q\%Z'87=S=I;RS7-U;FVN9;FXDF:>,GD.7)SZ>PXZ57T_P"'_A_3
M;NRN88;J26Q?=:&>\EE%N-I7:@9B N#T]AZ"NHHH YZ/P3H45S-.EO,/-ODU
M$QFXD*+<*Q8.JYPN2Q) X/?I5^XT#3+O49[^XM5EGN+/[%+O)*O#N+;2O3JQ
M_.M*B@#G=*\$Z)I%]!>01W4LMLA2U^U7<LZVRD8(C#L0O'''..*L?\(IH_\
MPC7_  C_ -F;^S-V[RO,;.?,\S[V<_>YZUM44 <K)\/-!>_O+U&U.">\F,\Y
MM]3N(@[GOA7 ]O85+/X%T2>Z^T'[<DCPQP3^5?S)]I1!M42X;YR!QD\GOFNE
MHH YQO N@?V38:9';2PVVGSM/:>3<2(T+,6)VL#G!W,,9Q@XJ:?P=H=SI]Q9
M26C>5/>-?EEE=72X8[C(C Y4Y/8BMVB@#G(_ VA)IFHV,D$]PNI*%O)KBYDD
MFF Z R,=V!V .!6M<:3976I6.HS1%KFQ$@MWW$;=ZA6XZ'('>KM% '&)X1N=
M1T'7UOG^S:CKEQYLC(YS;HNU8E!4C)5%!ZX+$]178R1I-$\4J*\;J596&0P/
M4$4ZB@#F].\":#IE[;7,$-R_V0DVD,]W++%;$C'[M&8JO'H..V*U],TFST>W
MDM[&(QQR323L"Q;+NQ9CSZDFKM% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 5R%XAL?BQIM[+_ *G4-+EL8V["5'$H7\5+G_@)KKZKW=E;7RQ"
MYA63R95FCSU1U.0P/8_XD=Z //[+PMK,6I6$KV>$B\47NH.?,7B"190C]>^Y
M>.O/2MG1D-[\2O$>I)_Q[VUM;:<&'1I%W2O^7F*/SKKZKV=E;6$)AM85B1G:
M1@.[,Q9F)[DDDT <5XJ\.ZKJ6L^)+BTM?,BO/##6$#;U&^<O*=G)XX9>3QSU
MJ]?:)J$USX):.WRNFS;KKYU_=C[.Z>O/S$#C-=?10!RWCFVUJZTVR72!=O$M
MVK7T5C.L-Q)!@Y$;DC!SM/4$@=:XB7P=K,P\5O9Z%=6L.I:)]FM4N[\3S/*&
M;B1F=L$[O[Q&!U!XKV"B@#E=2T>^G\1>#KJ*#=!ISS&Z;<!Y8:W9!QGGYB!Q
MFN<T+1)O^%HZA8[E;1](F?4H$!^Y<72CY2.@V_OF'_705Z;6?H^A:7H%J]KI
M-C#:0NYD98QC<QZDGN>!^5 &7XVT>]U?1K=M-2.2]L+V"^AAD;:LQB<-L)[9
M&<'UQ62UEK/BCQ19ZG=:1-I%IIUG<Q1K=2QM)-+,%4\1LP"*%ZDY)/2NZHH
M\U\,Z%KL;^!OMVDR6G]B6]S:W)>:-AS$BJZ[6.0Q!]QCFHO$/@K5M5N/$4\=
MKOW:O9ZA:Q?:/*^U)%"B.H=3E"?F )QR!]:]/HH \MB\*W-Y_:\]KX8O-/SI
M%Q:P-J.I///)+(N-JCS714X&2>2<=*]!T"UEL?#FEVDZ;)H+2*.1,@[65 ".
M..HK1HH XEM U(R>/V%M_P A5 +/YU_>_P"BB/UX^8$<XIO]@:J#X#*6X#:5
M$RW9+KB)C:F,=_F^8@<9KN** /%KKPMXFU/0X(KW1=6NM=BNHIKJ\N]54V[!
M90Q\B,2;>0. 47 SSGKW%EH>HPGQOOM\?VG<,]I\Z_O ;=$'?CY@1SBNQHH
MX/PQX=U33];\.7%U:^7%9^&5L)VWJ=DX:(E.#S]UN1QQUK$U#P1JL\,MXUA)
M<-;^([J_6TCN_)>XMY5VY216&UN<@$CH0>M>KT4 >2WG@Z^U#0/$S6'ANXL9
MKNR2UM$OM0:>YFP^YMQ:5T1?09SU/>O60, "EHH \DTR?7;S0?%VA:?H+W O
MM5U"WAO?/C6&,.[*QD!.[Y<D_*ISP.*L7O@F;2/$+W9TG4M:LI[&VMP;#4#;
M2Q20H4^9?,0,K#!SDD'/'->E6=A::>LJVD"0K-*\\@08W2,<LQ]R:LT >=:+
MX3U"PU'PE<?V7#:):R7TUY%%<M*(6F7Y<L[%G8]R.,Y[5K0Z)J"^(/&ET;?$
M.I6\"6K;U_>%864CKQ@D#G%=?10!P5OX<U5-#^'MLUKB727A-ZN]?W06V=#W
MY^8@<9K-L?#NO:38>%;D:2]S-INJWTUQ;1S1AQ',9@K E@IX=21G->GT4 >6
M:CX1UO4-,\2Z7_9S MK0U>SE-R$CNEW(?*RIWHV%(S@8..:=!X-;6KFZ0>';
MW2(6TVXM1<ZEJ3W,HDE381&HE=0H&22>3Q@5ZC10!YL]OXHU*#PKIL_AM[8:
M3?6\MY=-<Q&-EC4KNB ;<0<YY (Z8-=#X^T[4M3\.1Q:1:I<WD5]:W"1.X12
M(YE<Y)[8'_ZZZBB@#C+.SU3Q!XSM=9U#1Y=,LM/LYK=(KF2-Y)Y)2F[A&8;
M$[G)STK'^'.CW$6O:DUQ();/03)I&FL#GY#(9&)]PIB3_@!KT:YMH;RUFM;B
M,203(T<B'HRD8(_(U#IFEV.C:?%8:;:QVMK%G9%&, 9.3^)/.: .?\<V.I7,
M6AWFF6#WTFG:K'=R6Z2(C.@CD4[2Q SEQWJO8Z'J,4'C<26VUM3N))+0%U_>
M*;=$'?CY@1SBNSHH \D_X0N^L)]%U"\T6_U&,:';6%S;V&H&":WFB'7B1%=3
MDC[QP1D=:[;P/H\NC:%*DVG1Z?+<W4EPUNMR\[+NP!O=F;<^ ,X.,]*Z6B@#
MAM/\$65WXO\ %&HZ[H-A=QW5S"UG+<PQRDH(55L9R1\P/!Q6AXCT&69_#$6E
M6426VGZM'<21Q!8UBB$<@) X[L.!ZUU-% 'C6O>%_$VM:+KEE>Z3JE_K$SS?
M9[E]4"6(CW$ILB$@YVX&&3KR2*[OP_I-_:>,=<U&YMC%;W=I8QQ,64Y:-9-X
MP#Q@L/KVKJJ* ./\%VFK^'_"V@Z3<Z4S/F9;MQ.F+8;G921GYLY XZ9KL***
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH *XSQQXEDTB]TK2XM4ATH7OFRSWTB
M*YABC"\(K9!=F=0,@]^#79UQWBW2KH>)O#WB:UTY]1_LLSQS6T17S=DJ@;TW
M$ E2O3/()Q0!:\%:C<ZE87<DFMVNM6B3[;:\C4)*5P,K,@4!7!ST R,' KIZ
MX;18]5L;KQ/XG_L*Y1M1E@-MIF]!,XC787;G:K-DG&>BCO7<T %<)XXU^YT_
M7]*TV76_^$?TJZBD>34_*5MTH*A8@S@JF02V2.<8%=W7*^)+C7+'5HIHM(.M
MZ#+;F*YLH5C\V.3=D2 .0'4C@KGC&: (]#U&^TNTU.[UC7;75-!@C6>VU4%
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
MN,'/!(H ZS3/&%CJ%^+&>TO]-NFA:>*/4(/*\V-<;F4Y(XR,@X(STJM9^/\
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
M-8U+47FL1>W6C7LK'$<N)&6&<@< YC"D_P"W3['5M7GC\+ZK->W2)KFNR3+
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
M2D%8#L5^JKDCIC &!0![#17D%YKVMZ5H&H:3;7M_=R+XF728;CS$-RL#HLF
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
M2L[B4S!MWF&3.XOD YSFN>OO']^^K^'H[/0-7AM;Z\DCD$\$:M/&(692@+Y
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
MWDUQ<R233*OW09&;=@=@"*I^"/$%UK]_XE>?[0D5MJ"PPP7$81X (D+(0/\
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
MTK:HHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
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
MT$,:D\'CE2.?2JM]8:G#\28-4@T][BPN-*-E),DB#R'$A<%E)!((XXS7744
M><P>%]83X8>%]'-IB_L;JRDN(O,7Y%CE5G.<X. ">#63<^#+S3[S7H3X:OM6
M:_O)KJTN8-6>"#$IW%9D$JD;23DJIW#WKURB@#-T_28K;PU;:/)%&L,=HMLT
M<18H%";2%+$G'IDDUR&C3^+?">B1>'QX9DU8V2>19WL%W$D4L8X3S Q#(0,
MX!Z<5Z#10!P$FC^)].N?#FO7(&N:C90W$%_#"4C9EE*MF+=M4["H7D@D>]4+
MWPMKVMMK.OM8I9W\UW8W%EI\TRDLMJQ8"1E)4%]S="0.,FO3J* /.;W2]=\7
M>(GENM%FTG3WT2\T_P R>:)Y!)+L&=J,?EX..>QSCC.7I'@^[!T2PN/"=S'/
M930M=7MSJ\DEKB/!WQ()LEB0" 5 7O7K5% %.RN;NXENUN;!K5(IBD+F57\]
M, [P!]WDD8//%7*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
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
M:"_EB$\6E"R0VXR,B)G/SYZ L".>U;5WXM@TN.PM[^SNFU>Y@$S:=91&XDC
MQN)V\;03C<>O:L*V\4>)++08]+?PCJ<FO0PB!70(;21P,"3S=W"'K@C(Z8H$
M.M^'?%4&MZC97&KBZTF*SNIM/B#-%.C,QPF0=C;SR.A'/6@#9E\?>'XM)L]2
M-S,T%W<&UB5+=VD\X!B8RF-P;Y2,8SG'K2P>.]$ET_4KN9KJT.FE!=075LZ3
M1E_N?)C)W=!C.:Y.R\/:P]]IFISZ;)#]J\3RZG);D@M;0FW9%+X) 8D G!."
MU7=<T2\N-9\8S/H3:G:7=G8HD!E\KS]C2%PC=G4$$=.<<B@#H(/'&DR0ZB\\
M5]92Z?:F\G@N[5HI/) /SJ#]X?*1QWK1EU^PA;2E=W!U5]EK\A^8["_/I\JF
MO/;/2-?O[37],L6UTZ-=:/-!&FO%?,6Z8$*J,?GV8)SN)'3!JU!+J^L:CX*C
M_P"$=U*TBTJ;-[+=(JJC?9W3Y<$EAG^+IR/7@ ;:_$'4K>'1EN8)KIK[6;RT
ME>&U9R(HWE"A=O&[Y5]> 3[UTFH?$#1=.FO%>/4)K>RD,=W=V]F\D%NPZAG
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
MQ(&4,>3C*\_2I_']K>7&CZ?/96<UXUEJEK=R0P &1HTD!;:"1DX[4 9B^/\
M[#XL\16-]#?W$%H+>2"&UL6D:&-H0SL^T<<GOSUQTK>N_&>CVUIIT\+SWK:E
M'YMI#9P-+)*F 2P4#@ $9)QUQUJCH-C=CQ5XMU"6SEAAOQ:- 9%P7Q  1]0>
M#[UPUCX6U73+7PMJ-Y9ZV(H=&^P746E2E+BWD#[P2H(+*>00.A H ]7T;6['
M7K$W=C([(LC12)(A1XI%^\CJ>58>AKG+O4M;\0>+=1T/1=032[32DB^UW8@6
M:6261=P1 WR@!<$D@G) J;P%I<EA8ZC<R6%]9M>WC3!;^Y\Z>10JJ'?^ZQ ^
M[DX %4[A-1\)^--6U:+2;S4]*UA87D^Q*'EMYHUV<H2"590#D=".E &CIUYK
M.@QZJ?%-Y;SZ99H)H=5VK$73!W*\:]&4@<@8.1QFI]*\9Z7JNHQ6 BOK2YGC
M,MNE[:/#]H0=2A8<X!!QUQSBN:UJV\4^-/#^NK_9YL+-T@_LZQN]JS3/'()&
M:3!.P-M"@$^YQ5J674/%GB?P].FAZAIUOI<TEU<S7R+&=QB9!&F"=V2V21Q@
M=: +$7Q2\-2PVUSNOULKD[(KQK*3R6DP3Y8;'+\$8&>>.O%7$\?:)_9VJ7EQ
M]LLQI>PW<-U;-'+&K_<;:>H///L:YBP\/:I%\._!-@^GRK<V6J6LUS$1S$JR
M,68_3.:K?$&QO+>'QUJ#VI-M/IU@D+M]V1DE?<OX;AGZT =SI?C'2]5U%+!$
MO+:>6(S6XN[9X1<1C&60L.0,CCK@YQ5.'XAZ'//;!%OQ9W4XMX+]K-Q;22$[
M0!)C')X!Z'UK.F;5?$WBK1;V'1+S3DTA+B61[]50/*\9C6-<$[ADDEAQP.:Y
M"?3/$6IZ/I@NK'Q+<:M!?6TU[',RQ6D(652WEQH0KCTP#@<\$4 =_??$30["
MXOX634)CITA2]>WLI)$MP #N=@, 8/Z'TK9LM?TZ_P!4ETZWF+7$=O%=?=(5
MXI,[74]QP:Y>TT>_32O'\;6D@DU"[N'M@1S,K6Z*I'U8$5@^)K#5M'\.^$[[
M34\K5Y+%-"EC8X8>=$ I^J2*&_[ZH ]+TC5[37--34+%F>VD9U1V4KNVL5)&
M>V0<'O7/+\2O#[E77[?]E\_[-)>?8Y/(BDW;-KOC YQ[<C.*Z/2M-M]'TBST
MVU7;!:0I#&/91C\^*\\;P_JO_"E;S2182_V@]U*XM\?,0;TN#_WS@_2@#KM5
M\9Z9I6HRV!BOKNY@C$MREE:/-]G0]"Y4<9 )QUQSBH;_ ,?Z#8QZ>RRW%X=1
M@:XM$LK=YFF0$9VA1G(W9QZ ^E9<<NH>%/%'B*9]#U#4;?5)H[JVFLD60[A&
MJ&-\D;<%<@GC!ZUG^$O"VJZ-K'A<WMKC[-IU]]H9"&2&269)!'GV!(X]#0!Z
M3&XDC5P& 8 @,,$?44ZBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH *PM2\':#J]\][?6'FW#@!G\Z1<X&!P& Z"MVN%\7W[/XDM],CU#6W*VI
MF;3]%B E)+8$DDI("KP0%R,G)YH T_\ A7GA;_H%_P#DQ+_\51_PKSPM_P!
MO_R8E_\ BJX>QUOQ!J.BZ#9'5KZUGD\17&FS3MY9G,*++\KD H7  &X9&0#S
M6A.?$%D_C#1]-UB^NIM,@M;^Q>Y</+D[V>(MCYE;R\8/3=0!U'_"O/"W_0+_
M /)B7_XJC_A7GA;_ *!?_DQ+_P#%54T+Q!)XJ\6"YT^X<:-::;$[(#Q)/. X
M!]=D8'XO4'CA]:75[#[,NJS:2L$C7,.C3(ET),KM<AL%DQN&%/7K0!I?\*\\
M+?\ 0+_\F)?_ (JJ>I^#_!.CV+7M_8^3;JZ(7\Z9OF=@JC 8GEF _&LK2?$-
MQ<WG@J&#6;J]BGNKV"[:>#R)7,<3D)*G9E( /J1GO69XVOKZ^M_&]@;TK';7
MVDI;;L%8"[1$G'U.: .MN/AEX0NE DTHY7[KK=3*R_0A\BEM_AEX0ME(BTD@
MMRS&YE+,?4DMD_C67=G5_#/B6TTVSUNYOEU33[ME_M)U<03Q*I63( PI+8(Z
M=,50\*:G?VGB'2[36KSQ#9WMS&Z2P:DJ3VMY($W9AE3Y4(P3CC(XQ0!O:;X-
M\%ZOI\5_8V!EMI02C^=,N<$@\%@>H-5&T'X?(+@FV_X][Q+"7$EP=L[;=J=?
M]M>>G/6L3PUJNK^*4\-Z1<ZQ>VR3:=<W]U<6[A)KAEG\M4WXX !R<=>*KV4V
MH:#8ZY'%J<TT_P#PF%M ]R<!Y(V^S@AL#&=IP>!GF@#N?^%>>%O^@7_Y,2__
M !5'_"O/"W_0+_\ )B7_ .*KB?$^LWSQ>)+_ $[5?$=U-I[3>3+81I#96IC7
M)1]Y_>D$'<><] !6O;/JOB7QO%;OK=]964>C6=\T-FRIOE9GSDD'Y2!R!UX]
M* -__A7GA;_H%_\ DQ+_ /%4?\*\\+?] O\ \F)?_BJY>'7M7:TB\(M?3'75
MUDV4ESG]X;1?W_G?C%A<^IKJ?'>JWND^'%;3YA!=75W;V:7!4,(/-D5"^#P<
M G&>^* &_P#"O/"O_0+_ /)B7_XJLK0] \ ^)(YY=*LI)X86VF4M<(C'D91F
M(#C@\KD4RYM;_0O%6E:*FO:I=66M6]RDGVB8-+ \:!A)&^WC.2".G(JS\)+7
M[-\--&?[1/+YT DVROD1]MJ\<#CI[T ,O/#G@"QM+NZN(8Q#9RK!<,MQ,_ER
M,5"J0K$Y^=?SK3_X5YX6_P"@7_Y,2_\ Q5>;ZMITD'ACXA/'?W3R?VY!$HF<
M,H.ZV(?&.3SCZ "NHO[O4O!?B,HNK7^J6\VC7EX\-ZZO^]@V$%< ;0=Q! XH
M Z#_ (5YX6_Z!?\ Y,2__%4R3X?^$HHVDDTX)&@+,S7,H"@=23NKBM'U;Q/Y
M&A:M&GB2>XNY8&O3>&W%E+%)C=Y:A\K@'*D#)QSG-=9\5BX^'.I;2PA+PK<%
M>HA,R"3\-N<^V: ,&!_A7<744$8.V:3RXIW^U+!(W0!93A#^?-=5_P *\\+?
M] O_ ,F)?_BJOZ[%H*^%;I-82W&AI!F56'[L1C!&,?08Q[8KFH1=^+/%6MV:
M:UJ&GZ?I:6\=M'8R"-G,D0D,CD@D]0 #QP<B@#6_X5YX6_Z!?_DQ+_\ %4?\
M*\\+?] O_P F)?\ XJN-T_6==\277A.PFUFXMA<#4H;V>S"H;G[/(B*XX(4G
M'4>K8QVJW,VO6W@_Q1JP\3ZHT_AZ^F@LE+)M=(RK#SOE_>$AL<]@/>@#O/\
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
M[^A^*=9GT7P7JFL6\:O/;6;S1J1D;@N1GVS0!N45YU<)JOA<^&]2_P"$AO\
M47U"^@L[R&Y96BE$P.6C4 ;-IY&.,#G-6OA]%J6I1W&N:CK=_<G[7=VT5HSJ
M(519F521C)88/.>F!VH [1KVV6^2Q,\8NGC:58=WS% 0"V/3+ 9]ZCTO5+/6
M=.AU#3YO.M9LF.0*5S@D'@@'J#7'7FGF7XV6$WVR[3&C2R>6D@"G$T8VXQ]T
MYR1Z@5R&A0ZGHGPOT?Q';:[?B6.\C06>Y?LYB>Z\LH4QSD,3NSG/2@#V&TU*
MTOKB[@MY=\EG+Y,XVD;'VAL<CGAAR,U:KS+4=1\1WA\2V^FW-Q(UMKD4/DPS
M)',;;R$9TA9^ V3G\\5L^ ]3%U-JED]]J[RV[1O]AUB#;<6RL#_'_P M%8@D
M'MCK0!T^K:M8Z'I<^I:E<"WLX #)(03C) ' !)Y('%3VEW!?V<%Y:RK+;SQK
M+%(O1E89!'X&N#\?:H)O$WA_0A8WE]!%+_:=]#9P^:^R,XB!']TR8/\ P"N?
MTKQ3>:#X"\0:3:Q7%E>:3=)%9"]BVO%:W$H$3LIZ[ S#T^44 >Q45Y]):ZCX
M=\<^'+&/Q%J5Y9WT=T9X+R17+.D>0P( .,GIT!QC%<[::KK^G?"RR\2MK>I7
MNJ:M]GM0K;&2#?(%W1H0!OV]V."QYH ]CHKRR+6]>\/75U/'::_+IR:9<W$B
M:Y)"S":)-ZE"C%B&Y!'09&*K:/JGB91H.I1IXDGFNYH?MQOC;BSDBDQN,:A\
MKC.5P,G&#G- 'KE4]4TNSUK39M/U"'SK68 21[BN[!!'((/4"O*=0O-?'A;Q
M+XDC\1W\=UIFL3PV< *^0(UN NUUQ\_!(Y/  Q[ZNJ:CJG@K7-15-5O=4B_X
M1^YU'R[UE8">)E *[0-JG<<J.* /3:*\GT?4/$D-UH%VB>))VNYXDU!M1:W%
MK)'(/F:-5?*$$@J%'(&#FH;N?79?"OBWQ&/$FI17.DZC>BS@C91"J12G"NNW
MYP1QR>!C'N >KK>VSWSV2SQFZCC$KPAOF5"2 2.P)!_(UF7NEZ&_B?3M1O=I
MU7:T=FLDS8X5BQ6/.W<%+9;&<'K7,Z-9M+\7]5O3>77.DVLIA\SY#N:4;<8Z
M#&1[DU)XMT\W7Q*\%N+R[AR;H;89 H^6/=Z=^A]10!WE%>6I/K.K>#-7\9#Q
M#?6EY;O=RVUI&RBWB2!W41NA'S9"<DG/S<8Q7HVDWK:CHUC?/'Y;7-O',4_N
MEE!Q^M %RBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
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
M(PGU"1)+@EB02J!!@=N%%5K_ ,.6.H:W9ZQ(UQ'>VJ-$KPS,@>-B"4<#AER
M<&LJ?Q?)X?TG1U\16,QUB^5D^S:='YV^51DA0#WZCT[GC-.N/'=G#(\4.D:S
M=S0P1SW45O:Y:U#KN"R L,-CG:,F@"\OA/24T#3]$$4GV*PDBD@7S#D-&P9,
MGOR!574O NCZG>W=TSWUM]M %Y%:7;Q1W.!CYU4X/'!(P2*;=>/='@CTAH$O
M+UM7@:>QCM("[2JNTD8XP<,#S@#!R1BLG6_B*$\-Q:CI-E>&<:I%87,$UO\
MO(&+J'5ESPQ5OEY(RPH [FVMH;.UBM;:)8H(4$<<:# 50,  >@%5=$T:S\/Z
M/;:5IZ,EK;@K&K,6(!)/4^Y-9%[XVLK2\>TBTW5;VYAA2:ZCM+;>;56&0).1
M\V.=HR?:GW7C;28K?3I+,7.IR:E&9K6"QBWR21C&7() 4#(!W$<G'6@"YJ/A
MG2M6O9KN^MS,\UB]A(I8A6A=@S# [Y YZUFV_@'2(;FPN99]2NI]/D$EH]U>
M/)Y.!C: 3C!!YXR<#GBM?1-=L]?LGN;/S4,4K0S0S(4DAD7JCJ>A&1^8-6KZ
M]MM-L+B^O)1%;6\;2RR'HJJ,D_E0!F-X3TI]!U'1C%)]BU"2:6X7S#DM*Q9\
M'MR:UI;:&>T>UFC62"2,QO&XR&4C!!]1BN=T_P ;V5]JEE82Z=JMB]^K-9R7
MEML2?:NX@$$D';DX8 U3C^)FBRQQW"V>J"P:X^S/?&U(@BDW[,,V?[V!D CD
M9.: +NF^!-'TV]M;E&OK@66?L<-U=O+':Y&/D5C@<< G) Z5L:3I%IHED;2R
M1EA,LDQ#,6.YW+M^K&L;6/&MCIM]>6,=KJ%W+9Q"2[DM+?S$M0PRI<YZXYP
M3CG%3^!M2N]8\#:+J-_+YUW<VB22R;0NYB.3@8 H M7WAVQO];L=8=KB*]LE
M9$>&9D#H2"4<#AER <'TJ >$=(7PS#X>$4G]GQ.LB)YAW9602#GK]X5DQ?$S
M198X[A;/5!8-/]F>^-J1!%)OV89L_P![ R 1R,G-:&I^,K+3M3GT^*QU+4;B
MU19+H6-OY@MU89&\Y')'.T9..U #[SP7HU\EZ)8IE>[NUOFECF9'CG50JNC
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
MPV<LC/?6)OX T9&80RKD^ARPXK1GU"*WU"TLG28R76_8RQDJ-HR=S=%]L]:
M/)[7P;JMAIOA.^N].U286>F/8WMKIMZ8+B$EPRL"KKO&1@KN]#SBK\'A6_>S
MMKF#1;JU>7Q%:7CQW=ZUQ<&"(@>9*S.P#8_A!. !7J=5;74;2]N;NWMIUDEL
MY!%.HS\CE0V#^# _C0!R/B#0-2U#Q/KD]O;Y@N_#+V,4A8 &8O(0O7T8<].:
MN:!K-U9Z=X8TJ\T>[M9[F%K>3S63,+0Q@Y(4G(;!P1[9QG%=96=K6J6&A:9/
MK&HG;#;)RZIN;YB!M4#G).T8]<4 9'C33;^Z71M2TZV-W-I6H+=M:A@K3)L9
M&"DD#< ^1DCI6/KL/B3Q9IEU)#HWV*&SN+6ZL;:\95GNI(I-[A]K%54@ +GG
M/)P*[;3;X:EI\5V+:YMA("?*NHC'(N"1\RGITJU0!Y_>V^K^*_$%A?G1+O3+
M73+2Z'^F-&))Y98]@10K-\HY)8D9.*:/#VJ#P)X&T_[&WVK3KO3Y+J/<N8EC
M'SD\X./:O0J* /)=0T/6X]5O)-$T;5=*UN6^,BW5G=K_ &=.A?/F2HSGDKG(
M"YS]:U;JWUW2M5\76MMH-U?+K3"6SN8I(Q$I,"QD2%F!7!7/ .1TKN]-U"+5
M+".\@29(Y,X6:,HPP2.5/(Z5:H \RT[PMK"I9QR69C(\&C36+.N%N./D//Z]
M*A\KQ*VC^&+:?3->MM-M;+[->VVG31QW!G1456+!\^60&QM8'IFO4Z* /(K#
MPGK<=I=QG2+F!9/$]E?QQSW0G?[.OE[F9RQ)8;3GD\],C%;WBWPIJ'B#Q#JJ
MP)Y=O=^''LDN&(VB8R[@I[XQ[=*[^B@#D])UCQ#?7FFVC^')=.AA0_VA-=LA
M4$+@+!L<[LMW(QM'J:YWP7HMQ%XYU"RD*MI?AIY8M.P<@-<XE(^J(=GT:O3)
M(TFB>.091U*L/4&J6CZ)IN@6 LM+M4MK?<7*J22S'J2222?<F@#%\9Z;?SRZ
M)JVG6IO)M)OOM#V@8*TL91D;:6(&X!LC)&<5RWB+1M<\6#Q#JL6C7-F'T-]-
ML[:Y9!-<.S[RQ 8A0, #)[DUZE10!%;(8[6%",%44$>G%>97MAX@TOPIXG\+
M6WAZYOY+][Q[2[CDC$3).6;YRS AUW$8QR0.>>/4J* /+O$?A?6KU-;%O8O(
M;CPM#8Q891NG5Y"4Z]<,.>G-:?C;PY=WMUX<U2"UO;J+3!+'<6UA=&WGV2(H
MW(P9<E2@^7(R":ZVZUNRLKFZANFDB6UM/MDTS1GRUCRP/S=,C:21UQ21:[83
MZM;Z;'(S7%Q9F]C^0X,6Y5SGURPXH \Z_P"$0U"\T[5-0L=&O+:Y%Y9W-M%J
M>H/-/=K;OOVR%G8(#E@HS]<5O:K/XA\5Z-KEC!H,NGVDVE3PQ_;B@FFN&4A5
M7:Y 0#.2>I(QP#7<UDW_ (ETK38-5EGN<_V5$LMXJ*6:-6!8?4D#.* ..L%U
MG3-8T_Q&WAW4)89M(33KFT0Q&XMY(G8AL%\,C9/0YZ9%06WAG6I;RPU2XT\P
MR77B?^U)K;S%8VT/V=HUW$'!;A2<9Y;VKTR-Q)&KK]U@"/I3J /.?%VCS3^)
M)[Q=!U<S-;HMIJ>A78BE)&<I,&=1@'&"01@U=\/Z1X@C\5:/J.MJ)9X_#[6U
MW<J5QYYE1MO'? /(&.*[FJMSJ$5K>V=HZ3&2[9EC*1EE4JI8[B.%X'&>IXH
M\^@\-:PMY;.UDP5/%\^H,=R\6[)( _7H21QUYZ5EZ9<ZQJ'A#Q/X=L= GG>_
MU'4;:&]#QB!5DE=6:0EMP*Y/ 4YP,>WK]8^@S:0)=4L=*C\LVEXXNEVD#SG
MD8\]<[P?QH KZ[X>DU+P%>>'H)\22V!M8Y7Z;MF 3[9'-<[.FN>)V\.Z?/X>
MNM,&G7L%Y>W$[QF,&('"Q;6);<>^!@=:[B34;2+4X=.>=1>3QO+'%SED4@,?
MP+#\ZM4 <UX.TV\TW^W_ +9 8OM.LW%Q#D@[XVV[6X]<&L/7]+U8^)?$WV?2
MY[BWU?0OLT%Q&R;$E19OE;+ C.]0#@CFNZO+N#3[&XO;J01V]O&TLKG^%5&2
M?R%5-"UJ'7],6_M[:\@A<_(+N Q,XP"& /\ "0>#0!S5YHFHR:;X$B2U8OIM
MW ]VH(_=*MNZ$GGG#$#CUKCH?!=_8Z+<>'9M!UN_N#-(D<RZQ)'I\T3N3N=1
M*-O!Y4(<D=\UZA_PE&D&'3YH[GS8M0NVLK=T4D-*N_(^G[M^>G%;% &9JNC0
MZMX:N]$E8I#<VK6Q8<E05VY&?3K7"W U.?0+3P_XF\ SZY/9A5AFMY8FMIF5
M=HD)9@4)'4$<9->FU3U35;'1--FU#4KE+>TA&7D?H.P&.I)/  Y- 'GWASP=
MJNB_\(1#-:1!=/N+^:Y$+ADMQ,KE%R<9QN"\#]*DUNQUZ\\2ZM'>V6N7EI($
M&F1Z??"VM=NP9\XJZMG?G.<\= >E=%8^.])O-1MK&:WU*PENSMM6O[*2!)SC
M.%9AC..QP:Z>@#S;PIX<U>QF\"M=V+Q#3=+NK>Z)93Y3L8PHX/.=IZ5%JOAW
M6?L'B26'3I)I'\16VHP0HZAIXH_(+%<D#/R-P2.E>G44 >4W>@WMMXEU?5)M
M&\174.K>5<VZZ9J36[1/Y:JT4RK*H!!'WAN&#UXJ)_!-YI4N@W[:3J#VT.G/
M:75GH^I2)-;NTOF@ARZF1<D@C=Z$9Q7K=% ' Z$)?"/AW4M6ET.[A:ZOD;[/
M-?&>X9&*1J\C.S#=C^$$\ #DUU/B9=6;PSJ2Z"5&JF!OLI;&-^..O&?3/&>M
M:;QI( '16 (8!AG!!R#^=.H \HLM"U.?Q9X8U*/2O$'E6<[F\N-7OQ(PW0NH
MV1ARH&3R0!U&,C.+A\-:O_PIF31!8M_:1N6<0;ES@WIDSG./N<]:]+HH X01
MZSX;U_Q%]FT*XU2'5YEN;6:!XPJ2>6L927<P*J"H.0#P3WXK:\":?=:3X$T2
MPOH3#=6]HD<L9()5@.1QQ70T4 >:'PUJ_P#PIF31!8M_:)N6<0;ESC[9YF<Y
MQ]WGK4&I^'+O3O%NNWLFEZ_J%OJ3I/;/I&IM;A7"!"DJB1,<J"&P>#[5ZE10
M!YQI/A+4+"_T-%T]+:"#0[NWE5)S(D,TLB,$W,2S?Q<^WTJ+PYI&LE? (NM(
MN+0Z(D]M=^<R'!^S[ XVL<JQX'?VKTRB@#R_Q+X.U?5;WQ1/!;.=^H6%[:HL
M_E&Y$,:AU5P<H>H!XP0/K26WAV>_N[VZM]!UJW$6EW$$4VL:D\TK2R+C9&AE
M<!>.6..<8]:]1HH R?"]I-I_A'1;*YC\J>WL8(I(^/E98U!''N*XW7-'UB2_
M\?6L&E7$T>M::OV.X1DV%U@,>PY8$,2>.,>]=U;:O:76L7VEQ,QNK)(GF4K@
M 2!BN#W^Z:O4 <?J6C7T]_X)>.W8II\K&Z(('E VSIZ_WB!Q7"6?@F^M?#Z>
M&+G0=:O+E9/),QUB1-.DBWY\PJ)<CY>=@3.:]AO-0BLI;2.5)F:ZF\E#'&6
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
MOF)W2-]YN3QG'0<5FW_@[0=3OKV]N[$O/>V_V:Y(FD42QXQAE5@"<<9QD>M
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
M[U)?>$-"O[.QM9+'RH[ ;;1K:5X'@&,$*R$$ @#(SS0!Q-EK4DEKX8@M+_6
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
M#A_+8CE=PZX/&>] $U%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !39(TFB>*1 \;J596&00>H-.HH BMK>&SM8K:VB2&"%!''
M&BX5% P !V %2T44 %4;W1M-U*ZL[J^L;>XGLW+VTDL88Q,<<KGH>!^0J]10
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 5!>65KJ%J]K
M>6\=Q;OC='*H93@@C(/N ?PJ>B@ HHHH HZGH^FZU#%#J=C;WD44@E1)XPZJ
MXS@X/?D_G5ZBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** *.E
M:/INAVAM-+L;>SMRQ<QP1A06/4G'>KU%% !1110 4444 %%%% !1110 4444
M %%%% $%M96MF9C;6\</GRF:7RU WN<98^I.!S[5/110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 51T[1M-TEKEM/L;>U:YE,TYBC"F
M1SU9L=35ZB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHKD?'6LWFE?V1%%J"Z58W=T8KS5&C5A;*$)4?,"J[F 7<PP* .NHKD_
M FLWNKVNIBXO5U*UM;PPV>IK&J"[C"@D_+\IVL67<HP<5UE !117,:CJU[!\
M1=#TJ.;;97-E=2S1;0=S(8]ISC(QN/0]Z .GHKC;+XF:+?K8SQVNJ+87LJP1
M7TEH5@\UCM"%L]=W&<8SQFHM-\> ZMXK75H9K/3]'E4+.\.%"[$)!.22S,V0
M .1CO0!V]%<[IGC&QU#4%L9[/4--N)(FFA34(/*\Y%QN*G)'&02#@@'I5!/B
M5HS&T<VFJ):7UPEM9WCVA$-P[L%&ULYQWR0,@$C- '8T5R\?CW29-5O;%8+\
MI8/*EY=_9C]GMS&I8[WZ#@''X>HHL/'>GWVH6-J^GZI9KJ&?L<]W;;(YR%+8
M!R2"5!(# 9H ZBBO.=/\<W6IV%]+=F\TOR->2RB<6:G<AE5!$02?F/1CVW9%
M;E_X^TJQNKV,6NI7-O8/LO;RVM3)#;L!E@S=3M!R=H..] '545S6H^-]-L=3
MBTZ&WOM0O)K1;R**Q@\W?"Q(# Y  X[D=1ZU5U/Q4FI^"4U#0IY([C4)TLK8
MO'MDBE>01ME3T*?,2#_=H Z^BO--2U^YN?&NIZ1?^,#X92U,8L8?*B4W2E 3
M(7E4AOF)7:N.E=#;^(+O0?#4$WB=TN+Y[@VT!L$WM>DD^640=&91DCH,'H*
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
M5G2-Q)&=Q5D8?Q*RD%3R>0:72-#TW0;9[?3+1;>.1S)(02S.Q_B9F)+'W)H
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
MQ((S'&S%5X) XXSQBE;P'X?;43=FVGVM<?:FM1<R?9C-G/F&'=LW9YZ=>>M
M'._VQ?CP)\0;LWTPGLKO4$MI3(=T(5,H%/;!Z50UE]<GO4N';6[W3AIUN5_L
M.^"3VLI4EGDBW R%N",Y& >*ZW4/A]X=U.[O9[FVN"M\=UU;I=RI#,^,;VC#
M!2V,<XZ@'KS4U]X(T6_N%N"MY;RB!;=WM+R6 RQ+T5]C#<!SUYH X[4K[4M7
M31;ZQNM5UG1VTQ7E72;M;2[,A./.:/*E@<8V@X!!XI8_%%RJ>$[BRU*]OHOL
MFI&<7">5)/)"@PLJ#^)2"/KSWKL+KP1H=RMGY4,]B]G!]F@DL+F2W=8O[A*$
M$KGG!SSS5FT\*Z+8MIAM;(1_V8LJVH#M\GF??)R?F)ZDG)SS0!P+OJ>E^!-(
M\:+X@U&ZU*<VDT\,D^ZWG$SH&B6+[JX#G!4 _+1<0ZGJ.E>.=7;Q#J\$NDWE
MT+&."Y*1Q^7$KC*_Q DXP<C'0#)KL;7P!X>L[V&XBMI_+MY?/M[5[J1K>&3.
M=R1%MBG))&!QVQ6DOAW3$L=5LUMSY&JO))>+YC?O&D4*YSGC( Z8H \_U>YU
MW4+JVOG&L7FGOIENYCT&]6*:UF92S.\6X&3/&.2/E/%=]X8U"+5?#&FWL-Z]
M\DL"G[2\?EM*0,$LO8Y!R/6J5YX'T2\EAE"WEM+';K:E[.\E@:2)?NHY1AN
M]^:V["PM=+L(+&Q@2"U@01Q1(.%4=J /'-*MKS1/A*OBJSUS4!=VDTDL5L)_
M]&*_:&4Q&/H=V3S][)X/&*U;Z_UK7O%?B&%;;Q$\&G3);6RZ3>PVZPGRU8NX
M:12[$MD9!7 ^M=9:_#KPU9RPM#:W ABE\];5KN5H#+G(D,9;:6SW(JSJW@O1
MM8OY;V=+J&XGC$5P]I=RP?:$'19 C#<,<<]N* .%L[:_UWQ5X+NM7N[F#49M
M)N_/-I=C;N1HQN4H2OS9R0#@\>E4SXNUQ8M!#7TH;0#C7OF.9A]I%M\WK\JR
M2<^F:],F\):--+I$BVK0-I'%E]GE:+RUXRI"D;E.U<@Y!Q2-X/T)CK9-@O\
MQ.U"W_SM^] 4KZ_+P3TQR<]: //+WQ!KE['IQMY=2EM_$&KW31I93)',+6%<
M(D;.P5-^S>2"#@G%-OM?\3^'-$\0QQ0ZC!"!:BR_M&[@N+FW:63RWY#ME<$%
M2YQG/.*]'NO">C7FA6FC26A%G9!/LHCD9'@*#"LC@A@P'?.:BM/!FAVMA?V;
M6C72:B +R2[F>>2< 8 9W)/ Z<\=J .5T)M=T[Q;IUN+77(=/NHIENEUG48)
MR65=RO&!(S YX( QA@<#%8FEOJ]OX#\+^*Y/$.K3ZA/=VL<R2W!,,D4DHC*&
M/I]T_>^]GG->BZ3X-T?1[X7T*W4]TL1ABEO+N2X,49ZJF]CM' Z5,GA71TT&
MST1;4C3[-XY((O,;Y6C8.ISG)P0#R: ,7XL0"?X8ZYF25/+@WCRW*YP1P<=1
M[5C/X=^V?% V']K:I#!#X?AW/#=,LTI\^3&Z3[V!ST//'I7H6IZ;::QIESIU
M_")K2YC,<L9)&Y3UY'(JEIGAO3=)NDNK9)FN5M5M/-FG>1C$K,P!+$YY8\]:
M /,SXBUZ70O#VCK/J5W)<ZG?6D\]K*D=U-%;L^U0[%0&( R<@X4XY-=9X)FU
MF+6M5T^]@U"+3TCBEMDU*\BGN(V.X,I*.S%3@$%O<5LS>#="GTG^S7M&$ N7
MO$*3.LD<S,6+HX.Y3ECT/?'2K&B^'--T#[0]DDS3W3!KBXN)GFEE(&!N=R20
M!T'04 :U%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
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
MLT*"!7,K*H/S!L?=7<%VYXS5Z-/$6N^-/#FJ77AZ73+/3TN5G,]S$[%Y(P.
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
MK4]*NKF-I;5;Z-%$ZKRP4JS88 Y*G!QVK-LOB;IE[!8WB:5J\>F7DRVZ:A+
M@B61FVA6^?=C=\NX KGO2"#6_$OBK0KZ\T.;2+323+-(;B>-WFE>,QA4\MF^
M4;B2QQGCBLZ'PMK*?"32-#-GC4;>YMI)8?-3Y52Y5V.[.#A03P: .[U?5K/0
MM)N=3U"7RK6W7<[ $GK@  =220 /4UAVOC:*:\6RN=#U>QO)H'GM(+F.,-=!
M!DJA#D;\?PL5-6?&VBW6O^%;FRL6C%V'BGA$APK/'(L@4^QVX_&LA8=;\2^*
M]"O[S0YM(M-(,LTAN)XW>:5XS&%3RV;Y1N)).,\<4 -^%^H:EK6@RZQJ<^I2
M37<K$+=>6(5 =P!"$Y Q@'=SE:Q-7\<ZTWA_QU*D%U9/I5PJ6MP4CQ&N(LJ<
M,26.YFZ8P1WXKL/ 6E7NB^"M/T_4(?)NH?,WQ[@V,R,PY!(Z$5RFM>'-?N;'
MQUI4&DO*NJSI=V=P)XPDGRPJ4(+ @C8QY&..O2@#J;#QG;WVK)ID^F:IITUQ
M \]J]Y"JBX1<;BN&)!&0=K '!Z5FZ5XW@&C:+#:6VKZY>W=C]K 6.)9C$#MW
MR9=4!)., FM'7-)OKSQGX=U"W@WVMG#>).^]1L,B($X)R<D'I^-<9%X2O[?P
MWX:M-5\+2WQLM/\ *:73KQ8;RUFSV?S%5D(]"<$4 >FZ1JD.LZ5!J%O'-'',
M"0D\91U()!#*>A!!%<1X[\0ZW;:QY&@2D+HUI_:NHQJH/G1[P!#[$HLIXYX%
M=+X,L]8L?#%O!KLTDMZ'<_O91+(D98E%=QPS!< GUKG=)\!OJD^K:QXA?4K3
M4-2NW+06NHO$%@7Y(D;RFVM\HSW^\: .CU+Q;86&GZ==0QW%^^I[?L-O:*&D
MGRN[(R0  O))( %99^).DPV.LW-Y8ZG:-HWD"]AFA4.AE;:N,,0WJ2#C!&,U
MR]EHFM>&KC0HO(BN9-&OKRWTVVDNXTDOK.101L)/WT '#8X4\U7N+36O%-WX
M^@&F+#>RMI:I:B=&*A&WD,^=N[;R0">H&30!V[>.HE@M5;0M974+MW6WTYH4
M6=U0 F3E]JI\PY9ASQBI!X[TH:-/?RQ7D,T%R+.2P>'_ $D3MC;&%!().000
M<$'.>M9/C;PS/?>)=,UR/3KG4[>"WDM;BUM;PVTP#,K*Z,'0-@@@J6'4>E85
MSX"O;W09+F'0OL<Z:M#?)8/J4K3W$4:%-KS&1@LA#-C:<#"@F@#M(/&UH4U)
M;[3M0TZ[T^T:]DM+E$\QX0#ET*L5;ICKP>N*ST^)E@\ED/[$UL+J,9?3G-LO
M^F$ ':@WY!P<Y;:, G.*QK;PK<W*:[<6GAFXTXRZ//96QO\ 4FGN)9''W1F5
MT1,A>ISGG@5MC0=2%[X"D^S?)I4;K>'>O[HFU,8[\_,<<9_*@"U%X^TPZ-=7
M\]K?6TUM=BQDL)(@;@W!QMC55)#%@P((.,=^#4D'C:T,>I+?:=J&G7>GVC7L
MEI<HGF/" <NA5BK=,=>#UQ7*:[X(U;46UFX%GYN-?AU*W@%UY1NHE@6-E#J<
MHW+8)QR/0TZW\*W-S'KUQ:>&;C3C+H\]E;&_U%I[B61Q]T9E=$3(7J<YYX%
M'1:?\0+*_O=.A.E:K;6^I@_8;NXA58ISM+X&&+ D D;@,XXH\!^)+_Q):ZK)
M?V5Q;M;ZA-#&9411L5V4)\K'YE PV>YX)J"[T'4I+#P-$EME]+NH9+L;U_=*
MMNZ$]>?F8#C-6?!5CJ6E/KEE?Z>\,3:G<75O<^8C).DLC,, '<"!C.0.M #M
M2\<6UAJ%_:PZ3JE^FG;?ML]I$C)!E0V""P9CM()V@\&LR[\7W=E\0[BQ@L]1
MU.V?28+F"TM(ERI,D@9R7*@<!1@GZ"L[Q9X>U&[UW4KJV\.7AU"5%%AJVD7X
MMFX7 %P&D&=K=]K97 K>T/1M8M?&3ZCJ6V7=HEK:R72LN)+A'<R87J!\P/0#
MF@"=?'6G3Z-INH65GJ%Y)J+O';V<,($VY,APP8A5VE2"2<?6LCQ!XUDN?!VK
MSZ?'>:7JFG7=M!/#<HHDB+RQ^A92&5C@@GK62OA[Q-8Z-I%J]GJ+V"7U_+?V
MFFWJ0SN))6:%@^]<K@DE0P/(STJNG@S7#HWBR"'16M1J-U8S6<#WJS,4C=-^
MYV8_, I)R<<X!- ';^&M2O+WQ%XJM[B=I(;._CBMU('[M3!&Q _$D_C63+XM
MOM/^(.NZ9]@U+5(8K6UEAMK.-#Y0(?S&)9E'/R\9)..!UK8\.:5>V'B#Q1=7
M,.R&^ODFMVW [T$,:DX!R.5(YQTK*F77]$\=:WJEKX>FU*POK:VCC:"XB1Q)
M&'ZAV'R_-R>W& >< &G)XZTHZ7I=Y917=_)JA86=I;1CSI"OW\AB NW&&)(
M-7]"\0VVNK=)'!<VEW:2"*YM+I LL+$9&<$@@@@@@D&O/)?A_J-I8^'KVYL9
M-2FM&NWOK*RO&MW'VA_,_=.&3.P\8)&X5U?@?0WTV75;U]%;2A>21B..:\>Y
MN&1%(!E8NZ@Y8X"G@=<T 02^,KNT\=:UI]S87?\ 9FGZ:EUO1(^"/,9FSNR0
M0H4#'4'.!S4T'Q$T^?25U(Z5J\<,\D<=BKVZA[YI 2HB7=SP"26P,<YQ5+7M
M'UE_%6NRVNF/<VFJZ%]C2=)D412J)B%8,0?FWJ 1QSS4&O>$;^^\(^%$6R:X
MNM&$+3V*71A:4"'RW59%8889R#N .,9YH WH/&^GFWU)M0M+W3;C381/<6MU
M&#)Y9SM9=A8."01P3R,'%,M?&R2ZE%I]UH.L6%S<PR36B7,<?^D!!EE7:YPV
M#T;%<LGAO6ELM=O] T2?1K^2S2VLWO-1:>ZD^?<XR9'2,8X7ODYR!3M*\-:A
M_P )QX?U>'0=3M;2U%PMW/JFIBXG8O&0#CS' 7(QP<G=T &: -+PW\0'E\$V
MVK:S97GVNXNWMH(8HD+73F1PJQ*&[*N"6Q]TG/<Z\7CG34M=3DU.WN]*FTV(
M3W-M>(N\1MG:R["P<$@@8)YXKB1X.UN;PII-G<Z-*\^A:G--Y"WHB^VPR-)D
MQNC HP#@C<5Z$=ZG?P-=:OI^N-::$^D236T4=HVHW\EQ/*R2B7#_ +QU2,LJ
MC YY)]J -C_A,+Z_\=>&M.&GZII4-RES)+#>Q(OGJ(P4(*LV"#U&01D9%=5K
MFNP:%! \EM=74]S*(8+:U0-)(Y!.!D@   DDD 8KF%'B'7/&GAW4+GPY+IME
MIZW N'GN8G;>\>T;0C'*Y'7J<]!BKWCFTUJZ32_[.2^FL$N"=1M]/N1!<21[
M3MV.67@-C(# D4 *GC_3H['5I[^RU"PGTKROM-I/&ID_>G$>W8Q5MQX&#UZX
MK1T;Q'_:M]-8SZ3J6FW<48E\N\C3#H21E61F4\CD9R/2N#L/">KP/XKDC\,1
M&UU*WM1;V6HWOGF8(S^8LC[V(<@Y!R5!*\\'&QX+T;5-.\132P66J:7H'V38
M+#4;U;@^?N!#1@.^Q0N0?FYR..* .FUOQ#'HT]I:I87M_>W>[R;:T12Q"@;F
M)9E50,CJ1UXS2^'O$5MXBMKEX;>YM9[2<VUS;72!9(I  <'!((PP(()!S6%X
MSLM9NM9TUH;?4[S1%BD%S:Z7>"VF:4D;"S%T)3&X8##DYI/AYH6H:$=>%[IW
MV&*[OQ<6T?VGSSY9C08+9)+ J<Y[]"1S0!VU%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
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
M Y)!P=S.$8 8W=P<56\96VIW7BD&&*[U73X;-=]AINK&TN+:0LW[XJ&7?D
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
MNAZ;IDFE0/(\^IVT$A5D&5:104^;^]]W/;/:@"S<?#_PQ=S7<D^FEUNW:2>
MW$ODN[=7\K=LW=]V,YYZU+?^"?#^IRVTMU8LTEM +9'2>1"8AT1BK#>OLV:Y
MB#Q7K5IXO\601:-?ZG':FUE\E9XU2V4VZLRJ6;!8G<<+U]>1GH7\8&YL=)N-
M%T>\U-M3M_M,2KMB2./ .9'8X4_,!CDGF@"67P/X=ETZSL!IWE063N]MY$TD
M3PER2VUU8, 23P#C\JE/@[P^=#_L8Z;&;'S?.VEVW^9G/F;\[M^?XLY]ZY36
M_'FI3:#:W.EZ9<P7D>NPZ;>V[R1;D;S$W1AB<$.& ##IGM7=W=^+#2)=0N()
ML0PF5X8E\R3@9*@#[Q[<4 5M&\.:5X?$YTZV9)+@AIII)7EDD(&!N=R6..PS
MQ46K^$]&UV[CN[ZVD^U)'Y0F@N)('*9SM+1LI*Y['BL^R\873ZWI^F:KX?N]
M,.I*YM)))HY Q1=Y5PIRAV\]ZS4^)>[3_P"UO^$>OQHT=R;:>],D>(V$GE[@
MF=S+G&2!Z]<4 =1:^'=(LI;"2UL8X6T^%X+782!&CXW #.#G:.3S4-WX2T.^
MM[R"XL R7ER+N8B1U8S  !U8'*L HY4BH1XNLHU\1&ZCDMSH1+7 <@[H_+WJ
MZ^Q&0/<&K\>J$^'5U::VDA_T7[2UNQ&]/EW;3VSVH SX/ WAVW:X=-/+2W-L
M]I<2R7$CR2Q/C<K.S$MT').1VQ6C;:)IUI?1WL%L$N([5;-'W,<0J<A<9QU[
M]:YS3OB!]LCTF\NM"O;+2]5=(K6\E=""[CY R Y4,> >_'3-$?Q!B>ZU9WTB
M[CTK299X;W46=!&CQ G 7.YL\=!_$!0!TMSH]A=WZWT]N'N5MWMA)N(Q&Y!9
M< XYVCWXJ+_A'M*_L[3M/^R#[+IKQ26D>]OW31\(<YR<>^:Q;3QK.U[80ZIX
M?O=,BU([+*:>2-@[[2P1PI)C8@' /ICK4D?CBSE\,6&L):3F2]NTLH[,D"03
MF0HR'L-I#$^RF@#>U+3+/5[3[+?PB:#S$EV%B/F1@RG@]B ?PI)=)L9M434I
M;=7NT@:V60D_ZMB"RXZ')4=NU<C#XRM].2ZC@AU"_O+C7+BQ@@N)T'[Q1N8*
MQP$C !P#D]N:GU'Q(\VCP2ZA8:OI,Z:O;6C1(ZJ79I%P0_*O$=P!QU&1P: -
M+3O WAS2K^*\L].V2P$F!7FD>. GKY:,Q5/^ @5MW=K!?6<]I<QB6WGC:*5&
MZ,K#!'Y&N4N_'CQOJ4]CH-]?Z9IDKQ7EY$\:X9/]9L1B&?;WQCD'&:?<>.?,
MU==,T71KG5IWL8K^-XI4CC,,A8 EG(P>!@=\^QH U5\)Z$D6D1KIT>S1SFP&
MYOW)QCCGG\<^O6H;[P7H&HZG-J%U8LUQ.%$X6>1$G"C \Q%8*^!Q\P/%6_#N
MNV_B30K;5;:*6*.;<#%* 'C96*LIQW#*17#:?XVU/2SXKGFTC4=3L=-U6X,U
MRLR 00J%.U S9;:,G X /O0!K^(_"#W^@V/A'3-.M8O#[2(;F22=B\,:2!RJ
M*0<EL$ YXS7:JJHH50 H& !T KF;SQ@3J*:?HFE7&KW7V9+N41R)$D4;YV99
MR/F;!POMSBJ5Q\1;8VFD/I^DWM[=:I)-!%:+M22.6+[Z/N.%P0<G..,\\4 =
MI17)2>,[R2[FM-/\-WM]<6<4;WZ)-$OV=W4-Y0);#N >@XZ<\T/X[MKM-,30
MK"XU6ZU&V-W'"C+%Y<(."TC,<+\QVXY.0: .MHKS+Q=XRO=0\'/_ &5:7]G>
M_P!I0Z??(LR1S6K&1 5#9Q\P8 ,O&&SQ7H&D6[6ND6D+BX#K$NX7,WG2*<9(
M9\G<1TSF@"[1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 5Q'BGPQJ
M6K:SJ]U:K&8[KPW/IL>Y\'SG8D ^WO7;U5^V_P#$V%A]EN<>1YWVC9^Y^]C9
MNS][OC'2@#G'\/W[:OX-N0L?EZ3#,EU\W(+0!!CUY%<KXETO5M&W7,4<#7%]
MXPM[JT1Y,*ZF-5 8@';DJ1T..M>KU@^*=9L-'M[!KS39=2GGNTCL[:&)'<S8
M9@R[B I 5CG(Q0!SMYH7BC7+O5M9VPZ+J#:4^G:?&MQYC*S-O:1G487D*!C)
M')K,T_P5J"^(O#NIQ>'+;3A87!:[EEOS<W$VZ)ER&.?E!.<$Y.>@Q7J$,AE@
MCD:-XV90Q1\;ER.AQD9%/H \]T#P?JVG7?A>2X2(+IUQJ4EQMDS@3NQCQZ\$
M9]*[#Q%I\NK^&-6TV!E6:[LYH$+] SH5&?;)K2HH XC1=$UHZUX;U'4+**U^
MP:7/9SQK.),.3&%(( R"$)]NE9.K> -0U"WU*5K>UN)!XA.J6]K-(0EQ%Y2Q
ME&8#Y2?FP><$"N\DUJVB\16^ALLOVJ>VDNE8 ; B,JD$YSG+CMZU/<7OV>^L
M[;[+<R_:69?-C3,<.U2V7.?E!Q@>Y% ')>$/#4FG:[=:FWAW3]%A-N((HHI?
M.G<[MS%G'RA>%PHSTSD=*@\8>#Y-1\5VNOIH]MK42V9LYK*:;RF7#EUD1CP3
MRP(.."*[ZB@#SFU\%ZA'I6F*FFZ=82)K\6HRVUJQVQ0J",%C]]\8R0 /3I6E
MK_AK4=1UWQ!=VZQF*^\.G3H=SX)FW2G!]!\Z\UVE9EUKEM::[9Z.\<S7-W!+
M/&44%=L>W<#SG/SC'% '+C0]<T/5=*UG3K*&_D32(M,O+0SB)@4.Y71B,'DL
M"#CM56'P=K4D]GJ=VMNM[/XB75;J&.3*P1+"T:H&(&Y@-N3@9)/I7>:?>?VA
MI\%V;:XMO.0/Y-RFR1,]F'8U7TC6K;6A?&V65?L=Y)9R>8 ,NF,D8)XYH P+
MS3]<T7Q?J&MZ1I\.IP:G;PQS0-<B%XI(MP5@2""I#\]P1WK"U7P5J]YJ>FZ[
MJVG6'B"\%D;6]M?,\@(?,+HT1(P=NXJ<XR,&O3:* /+W\&:U#X?MX[?3+.WB
M?4VNKW2-/NF@\V IM5&F_B8$*3T!QCMS73P%JPM_%RVND6.G1:OI26]K;PW&
M\K(-X_>-CECN!SR.V3BO6** .(33/$>N:OH/]LV%K96NCRFY>6*Y\PW4PC9%
MV# VK\Q8[N>@]ZI:!X.U;3AX0^T)$/[+2_%SMDS@S'*8]?>O1** /-]%\*Z]
MHB>!I!:07#Z7:36=\@N IC$AC^=3C#8V'CC-1Z'I*W/Q6U(VUS%/HVGR'442
M,[@EY<($89Z<*KM[>;7IE<WJ6H:3X(M+6"QT9FDO[HQPV>FP(K2R%2S-@E5Z
M*223VH D\8Z'<Z[H:PV,D27UM<PWEL9L[#)$X<*V.<'&/QK,AT[7M>\5:;J^
MK:=#I=OI<,XBA6Y$SS2RJ%))  "@ X[DGH*[&-S)$CE&0LH)1L97V..].H P
M/!&DW6@^"=(TJ^""ZM;=8Y C;AD>AK@]:\#:YJL7B"VN](MM1O;R6<V>IW=^
MQCAB;.Q5BP=K*.!@8SSFO6Z* .2\/:!J%AXFDU&Y1%A?1[2TX<$B2,N6'T^8
M<US&L:5<>&OA9%]IE@BUG3=0DU"Q7?GS)#<LRH.YW))MP/[U>J5AZO/H_P#P
MD.A6>H:?'<WT[RM8RO"K^0R(&8@GE3@#IZ4 /\*:,V@>%[#3I&WW$<>ZX?\
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
MM[I7C*\N[EXVTBT\TZ1$IR8S<,'FR.V"-H]B:[JHYYEM[>29P2L:ESCK@#-
M'D5M\-;JPT\Z)'X7T>[83%8]8N9R5\DOG+P\,7"G& <$\YKO='T2ZL/%?B._
M=4%K?+:K;[6Y_=QE6R.W)K6T;58-<T6RU6U61;>\A6>,2 !@K#(R 3SS5Z@#
MS?2/"NO:+;^!I%M(+B7289[:]C%P%VK+M^=3C#8V].]='XWTF_U;1+<:9%'-
M=6E_;7BPR2>6)!'(&*[L'!('6NEHH Y71M&U&'6O%&H74*1#5?L[PH) Q4K;
MJC GV8$9[]:Y9?!NNV^E^&+2[L!JEA8Z;]FN=.COS HN,C$A(P)!@$8/3.<5
MZG5+4-6L],DLH[J0J][<"V@ 4G=(06Q[<*3D^E 'F]IX'UVP\,7]O!I^GQW*
M^(8=7MK.WGVQ&-#$?+#%>#\A&2.>O>NZ\1VNKZKX.O;;3)A8:M/;8C;S/]4Y
M R-P_$;A]:VZ* /+],\&7T7BWP]J\'ARUTN&QDE^U,]\;FXEWQ,H.X_P@D=\
MG.<#'-YO"&K'X3W7AT)%_:$EQ)(J^9\N&NC*.?\ =->A44 >9^,M)&J_$/2;
M"SN8BFIP^7J]NIR3!!(LJL0.F22G/4/7=Z__ ,BYJG_7I+_Z :J>&Y]'UJS7
MQ+INGQP2ZBF7F:%5FD"G: Y&<XV^IJ[8ZE8ZW!=BW(FBAGDM)@Z<%T.UUP>H
MSD>AH \]T"P\1>)?"'A"PO+"UM=-MEL[R2\6YWF9(U5XU5,95B0N[)P,'&:V
M%\&75YX3\6:-=R) VK7]U/!(IW!5<@H3^(Y%=K!!%;01P01)%#$H2..-0JHH
M&  !P !VJ2@#AI-/\3^([[0XM8TVTT^VTN[2\GFCNO--Q(BD*(U &U23D[N>
MU)9^#;V#XB2Z@[QG08Y9-0MH0?F%Y*BQN2/0 .P]Y#7=53U74[31=*NM2OI#
M':VL9EE<*6(4=>!R: .%N/">JC3=1@ET?3=6MKG7+B]DL;E@#)"X^5D?HC@\
M\]LC(JM:>"=;32&MUB%K;'6;.\MM.DO&G^R0Q.I<;V[G!.T9 ]:]-1@Z*XZ,
M,BG4 >>C1_%.C6.MZ'I>GV=W:ZA<7$UK>R77EBW$Q)82)@EMI8XVYR,=*TO#
M7A2X\/\ B(2!EDL8=%M-/CDS\S/$7R2.W# UV%9T^M6UOX@LM&=93<W<$L\;
M #8%C*ALG.<_.,<>M &?X)T>[T+PTEC>A!.+FYE(1MPVO,[KS]&%94?AC4E\
M+^-; K'Y^KW-Y):C?P5EC"KD]N17;44 >77G@*X@U>/4I/#]GKJ3Z?;V\T$E
MSY3P2Q+MRI/!4CKWXK2T?P=J%A>^%9VM-/MA8RWDUW%9Y$<9E0A0N>6/0$\9
MZUWLCB.-G.<*"3BJ6AZO;Z_H=EJUHLBV]W$)8UE # 'U )Y_&@#@=7\#S1>*
M-8U%/#5CKL.I,LT;377DO;R! I5LCYD. <CD<C%6[/POK7AB\TG5-,L+"\EB
MTTV%Y96[_9T'[PRAXBV> S,"#C.<^U>A52T[5K/5&O!:2%_L=RUK,2I&)% )
M'/7&X<T <-+X/UJ\TJ^N;E+=-3U+6[74)8(Y<I!%$\8";B!N8(F2<<DUZ-11
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %>=>+)I1XRU.%=5.F
MH?"\I%TS$+ QF #\=,>HYKT6JDVEV%Q=O=36D,D[P&V=W0$M$3DH<]5)[4 >
M=^$HCH/B[3["^TB73;J]M95BELM1-S:7NP*S.RM\RL!T)_O$9-:/Q"T>QU+Q
M!X/-W"9-^IF%L2,N4\F5L<$=P.>M=+I'A/0-!N&N-+TJVM9F79YB+\P7KM!/
M0>PXK1N;&UO);:6X@262VD\V%F&3&^"NX>^"1^- 'ED>GV6L>%_%/B'5KVXC
MUBRNKQ4G%TZ-8^42(E0 @ 8"GI\V[G.:V?!NIW=WXNN9M2E*3S>'].N9(V.T
M*Q\PN0.W)YKI[WP?X<U'4_[1O-&LY[LE2TCQ@[R.A8=&([9S4FK>%M"UVYAN
M-4TJUNYH1M1Y4R0O7:?4>QXH \NT9?[=TCP!;3W=RUK>7VI><8YV4S(#,P4L
M#G!P!].*DU(R:"?$^AV%U<VFCKJNFQ.RSMFU@G"^<58G*@_7C<:]4@T+2K46
M8@L((Q9/(]L%3'E,^=Y7TSN.?K3I-'TV5KXRV,$GV]56[WH")@!M 8'K@<4
M</8Z'I>A?%^PM]++1J^BW#O;&9G5/WL0# ,3C=@Y]=M;/B261/'?@J-9&5)+
MB[#J#@-BV<C([\UJ:5X3T#0[@7&F:5;6TX5D\U%^;:<9&>N/E7CVK1GL;6YN
M[6ZF@1Y[4LT$C#F,LI5B/3()% 'C-AI<=K\+]$\4I<7AUI;VWQ=-<R$[&NA&
M4QG&S:<8QSUK9UR]O=(U#7O"%O/*MQKUS%)IDFXDQI/E;C![!-COQTW"O11H
M6E#2H]+%A!]@C962WV_(I5MX('LPS]:FFTRQN-0M=0FM8I+RU#B"9E!:,,,-
M@]LB@#S;6;*SU/Q%JMC;Z5/JB:5;PP2-?:H;6VLOW>X;-H+$E2"S$'IP:I>%
M+VYOY/ EU=3O-.V@W^Z5V)9L-$ 2>YP!S7H]_P"$O#^J:E_:%]I%K/=X :1T
MSO Z;AT;';.:GMM TFS^S?9M/@B^S1R1P;4QY:N<NH] 2!0!Y?X2@3Q)+X6T
MK6Y9IK%?#B7<4#3,HGG,FUF;!!8JH7&>F[-=3\+X8+;3->@MKA[B"/7+I4E>
M0NS %>K'EOKWKH+OPGH%]IUII]SI-K):V@Q;QE,>4,8PI'(X]*NZ;I.GZ-;-
M;:;9P6D#.7,<*!5W' S@?04 <):Z5I_BGQ!XMD\0SS>;IUV(+=/M+Q"T@$2L
MLB@$8+$L=WMZ"L#P_;R>-M2\+0^()[J>*3P_-/*JS/%]H*SHJ.VT@G((;ZXK
MTW5?"7A_7+M;K4](M;J=5V^9(F2R]=K?WA['(J^NFV27L=XEK$MQ%";>.15P
M5C)!V#T&5''M0!S7Q+E:U\ W<D4C1>7/:_.K8VK]HCSSZ8S5'Q->$?$&TMHK
M@@KH-](\:OTYCVL1^!P?K7;W=I;7]I+:7<$<]O,I22*10RN#V(-96G>#_#ND
MG-AH]I VQXRRI\Q5L;@3U(.T?E0!YSIVE0Z7X8^'^OV\]W_:MY=6,=S</<NQ
MECE3YD8$XVXP ,<8%4Y8M4UM?%6J7%E ]S9WUS#'J$NM26S:>L9PFV,(0H
M;K\V>>M>O_V-IOV.RL_L4/V>R9'MH]ORQ%.$*^F.U4=0\'>'-5U'^T+_ $:S
MN+H[=TCQ@[\=-PZ-CWS0!Q=AI2>*?&K1:]*]U&/#]E-)##<.L,DK-)EP%(SW
MQ]?I6)8Z;;ZS8> ?[2\ZZ<:I>V9DDF?<T4?V@("0>VU>>O%>QI86D=_)?);Q
MK=21K$\H'S,BDD+GT!)_.J\6A:5 MJL5A BVDKS0 +_JY'W;F'H3N;/U- 'F
M\>GV.M^'_%FOZQ>7$>K65Y>)'.+IT-@(B?*5 " O 5NGS;N<YI^@V)\6>,;:
MXUXW#O'H&G7AMUF>-!<,9"7*J1R.>#QR:[J^\'^'=3U+^T;W1K.>[)4M(\8.
M\CIN'1L=LYK32PM([^2_2WC6[EC6)Y0/F9%)*@GT!)_.@#S#0K'2K_PA'XLU
MS5+NTU@WK--?).^^&03E!"$Y&W&$V;>AK)EBU36T\5:I<64#7-I?7,,>HRZU
M);-IZQG";8PA"@ !NOS9YZUZFWA'P\VL_P!KMH]H;_?YOG>6,[_[^.F[_:ZT
MW4/!WAS5=1_M"^T:SN+H[=TCQ@[\=-PZ-CWS0!PMT6\2:I%;SZ<^NWUKI=L]
MXLFH_9;&!Y%+;TVC<S-@G=@X '2L714B\0Z=\.(=7O9)(Y)]2B+"Y;,JH65$
MW\$C"@>X&.]>KZEX4T#6+U+S4-)M;BX1/+WNG)7KM;^\/8Y%-G\(>';FSCM)
MM&LWMXF=XXC&-J,YRQ4=B3SQWH \UUU%T_2_&6BV4DC:397VE-;QM(7$$CSQ
MF2-223CA3CMNIUU#J/B#7?%L]UIT-TUA=M!#-+K,EH;&)8U*NB*A SDOOSS^
M%>G0>&=$MM(.DPZ9;)8%Q*T 3Y6<,&#'U.0#D\\"HM4\(>'M;O1>:EH]I<W
M4*9)$Y8#H&_O#V.: $\*7D]QX6TAM0O+>YOI;1'>6)\B;@9=>F0>#G'>N>^)
M.EV6HW7A(7<1<'6HX3\[+\K1N2.".I5??BNIDT.VDUZQU4!4DL[>2")50#AR
MO?T&WI[U+JVBZ;KUB;+5;*&\MMP?RY5R PZ$>AH \U_X1K3]7U'XA7EY]H:6
MWN?]'V7#H(6%M&=ZA2!NSCD^@JA'<ZMXFU7P_97=DFK0GPW;7HMKC46M5EE?
MAY3M5MY& ,'INSWKUN+2K"!;L16D2B\.;C"_ZT[0OS>OR@#\*I7WA30=2L;2
MSO-*MI8+-0ELI3!A4#&%(Y P ,#TH ROATUZ- N[>\N89A;7\T, BNC<^3&"
M,1M(0"Q4DKGT KGH-&TG6_$GCF35[R<FSN4\L?:G06B_9T/FJ 1M)(//^S]:
M]&L-/L]+L8K*PMHK:UB&$BB0*JCV KEH?A]I=SK^M:GK5A97WVV[2:#>F2B"
M-%*MGJ,IG'(H Y#0K23QGK?AQ/$4EU(K^&4NI8EG>(2R>: KMM().#GZD>E2
M)8V>J^#?$OB;5+VXBURTN+W;<"Z=&L6B9A%&@!P!@*<8^;=SG->J+I]FM^M\
MMM&+I8?LXE"_,(\YV_3/.*S;OP?X<O\ 5/[2N]&LYKPD,TKQ@[B.A8=&([$Y
MH X*\\1ZEX7+:E<!S<>(=&AEMX3T74554V =MWF(<?[!I;RQFT/4GT?^VI+/
M[/X0D5KZ21B$E\T RGOG))SU&:]-O-,L=1>V>\M8IVM9A/ 9%!,<@Z,/0\TD
MVEV%Q=O=36D,D[P&V9W0$M$3DH<]5)[4 >9:#&?#^NP65[I,NFW=[83K#-8Z
MD;FTO=BAB[*WS*P'(;_:(R:K^%($\2W'AK2=;FFFL4\-0W<-NTS*L\Q<J[M@
MC>54+P<XW9KT;2_"'A[19I)=.TBUMY)$,;.B<[#U4$]%]AQ2WGA/0+_3[2PN
MM)M9+:S&VV0ICR1C&%(Y QZ4 >92F:XL(M%CU"\;3;?QBEA;S+<-YGD&,EHA
M)G<0"S+G.1CKQ76>'+"#0?B/J^CZ=YL6G/IMO=BW:5G593)(I9=Q.,A1GUQ7
M4Q:#I,-E9V<6G6T=M92":VB2,!8G&<, ._)Y]ZLK8VJZ@]^L""[>)86FQ\Q0
M$D+GT!)/XT <'XUTVZU/Q;;BW@M=92&Q+/HLM\]LZY<_OT(^4GC;STQP>:PX
M(=/\47OP_@9]2:S":C%(EU<'SF,>U2CR(1N (QD'D 9[UZ7K'AK1=?:)M5TV
M"Z>'(C=U^90>H!'.#Z5-#HFEVQLC!86\7V%&2UV1A1"K !@N.F<"@#S"66WT
M>T\2>'Q)J;60URVM+&TM;G:[&6*-S")'.4C)W9Y& 3CK4%O'/I?B/Q'I8L(M
M*@D\,S7#V$-^URH<-M#MD *Q!(P,\5ZC>>'-&OX;R*[TVVF2]=9+@.F?,=0
MK'W  P?:H;/PEX?L-YM=(M8FDB>&1E3YG1\;E8]6S@=?04 <=X)_Y&S2?^Q.
ML?\ T-JM>*],L-8^*'ANSU%V\A]/O"(5E*"<AHCL.""1U;'^S7:6VD:?9SQS
MVUG%%+';K:HZK@K"IRJ#V&>E0:MX<T;761M4TZWNWC4HC2+ED!()VGJ.5'3T
MH \IU2^O].TO5-$TN>6724\2P6".]XT>V%XP\D/G<E%$F$SR0&Q72^$K._TC
MQS+8_9;/2[.73S+)ID6IO='>' 68!D&P$$J<=>/2NSC\/Z/%HAT9-,M1IA4J
M;7RAY9!.3D=SGG/KS3='\-Z-X?$O]E:=!:F;'F,B_,^.@)/) [#M0!S7B"VA
MUOXCZ;HFJM(=+_LV6ZBMQ*R+/.)%4YP1NVJ<@>^:X1GFT[1M0TO29Y)[.Z\8
MM9S,]ZT9>/R5/E&;!9064)NZGIWKV/5]!TK7H(X=5L8;I(VWQ^8O*'U4]1^%
M11^%]!ATF?2H](LUT^X;=+;"$>6YP!DKTSA5_(4 >9SRZYX6C\3C3[>UTQ8]
M$:Y33H-1:[:*4-@3*&0;!M+9'<J#4VD6%_I>K>&+NUMK/3Q=S*DUP=<DN6U*
M-D);*% &;HX;/&/0UZ1I/AS1M"BFCTS3K>V6?_6E%R9.PW$\G\:@TSP?X=T:
M_-[IVCVEM<X(62./!0'J%_N@^V* /*5TA&^'EMX@%Y?)J[:UY*72W4@:*-KT
MQ%%&< ;2>,=36EXD\[P5?^*H?#C3P)_PC\=V$\UY-DOG.C2C<3@A.2?;->GC
M0M*&G+IXL(/L:2^<L.WY0^_S-V/7?\WUJ9M.LGO9+U[6)KF2'[.\C+DM'DG8
M?;)/'O0!YEI&GW^C^(_#LUK:66FQW;,DI_MN2Z;48_+)SM9!N8'#;L^O8UAW
M^FV.H_"(^)K^ZG.NW%RAN)FN'R9/M(!A*9QM & N.-H/:O6=+\(>'M$O#>:;
MI%I;7!4J)(TY53U"_P!T>PQ4=QX)\,W5_+?3Z'927,S;Y':(?,W]['3=[]:
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
M)VDEF7/?%=]65H_AK1?#_FG2M-M[5I<>8\:_,P'0$GG ["M6@ HHHH ****
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
M;2&W9QNQ+#(\GSKC[I)4?3- &G8>+KLZQ::9K.BG39KZ-WM&6Z2=7*#<R-M
MVMMY[@X//%9>G?$BYO;#2-6F\-W%OHVI31VZ737*,Z.[;5)C SLW<9SGOBH]
M!\(7,&OVE\_A;PWHL=K&X=[)1++/(R[05;8OEJ,GU)SBI8?!NIQ_#GP]H):W
M^V:?<VDLQWG81%*';!QSP..* +?@_6=9U+Q+XIMM0M]MM:7PCA;SE;RQY<9"
M  #KDMGWQ5G6?%MQ9>(UT'3-+2^OA:BZ=9;M;<;"Q4!,@EVRIXP .,GFG:#I
M.J:5XK\0RRQ6[:;J,ZW<4RRGS%?RT0HR;<8^4G.?3BJ'C#P[>ZQJ2O)H.D:Y
MIYA")%=2>1-;R9.660*QVD8R!@@B@"EJ_B/5O^$N\*26&F7[/?6%VS:9++Y&
MUQY1S+G@;?FYP3SQUK6M/&EQ=Z-=3IH%X^J6M_\ V?+81.'VR\')D' CPP.\
MXQZ53T#PAJVEW_A>:]O([HZ98W5O<2&1F8M(R,@7/)50I7)YP!5'5O!>MSP:
MOY!@EBNM=74'LS<-$MU;B)4,3.!E3N7..1P,T .U_P 87\OA_P 6:7=6+Z3J
M]EI$EW&]O=B4%"& 974*58,O3 /0UH^'[VZF\>7MO+<S/ NB64HC:0E0[-+N
M;'3)P,GOBN>'P]U1F\0O;:7H^E0ZEHCV$%K:2$A)-Q(:1M@W$[N3CC '/6NN
MT?0+RP\6W6IS&(V\NEVMHH5B6WQERW&.GS#% #=;\6WFG^)8= TS0I=3O9+3
M[7\MPL2K&'VG);\/KG\:I77Q F1-1OK/0Y;O1M.E>*YO%N45SY?$C1QGEPN#
MSD9P<9K7_L:Z_P"%A#7,Q_9/[*-GC=\^_P W?TQTQ[UP\OPXNK1]2M+7PWX;
MU 7=S)-;:I?*#);K(Q8AT*'>5).,,,C&<4 =1>>-+IM<?2=#T1]4F%C%?++]
MI6&,QN6 Y(//RC QSGMBJ>G?$:2_AT;4/^$?N8-'U6=+6*[DG3>LK9 !C'.W
M<"N[/OC&*U=*\.W&G>,+K41Y LFTNVLHP@VD-&SD_*!@###&*QK+P9JEOX(\
M*Z.[6_VG2]1M[FX(<[2B2,QVG')P?:@"WK7CC4=(@U#4#X9N&TBPD9)KB:X6
M&1PI^9XXV'S+Z'(SCBH]0\6VNBZCXGU#R[RX&GZ?:W+1FX_=LK&3&Q"/E/')
M[\>E<UJOPZUK4K+7+2?2](O=0O))VAUJ\N6=U1B2BK&4.P@87@@#KST.QK'@
MG5]1M/$Z1FV5]4TJTM(0TAP)(]^[=QP/F&#0!MV'BZ]E\066EZIH,VG#48I)
M;*5KA)"^P LKJOW&P0<9(]ZT]8UU-&U#2()H&:#4;G[+YX; BD*DH".^XJ1]
M<>M5=4T6ZO/%GAS4XC']GTX7(F#-\Q\R,*N!CGD5/XLT5]?\-7=A ZQW9 EM
M93_RSF0AXV_!E&?;- %.?Q>PGUF*RTB[OVTV>&U7[/@^=,X!*^BA R[F)P,G
MTK'U/Q??R6/B+1[[36TO5(-%GOH'@NQ,"H4KD, I5@V.WOFF7/@S6/\ A +?
M38IH9=3DO1?ZG'YS1)>%G+RQ;P,@'( ..BBLZW\ ZDNHZK=6VCZ/I%O>Z%<:
M=':VDA8B5R"KR-L&[/(/H .M &A8>*;322UWJ4U\WV7PU:WL[-.7C<$L.$/_
M "T)'+9YR!VIEQXAUZY\:^$+>^TBYTF&YFN'*K=B195%NYV2!<88'!P<CT/%
M%S\/KW4HKRVN9XHHKCP];::)$)8I/$S-NQCE<E?KS5Q=-\7:MXE\.WVJVFF6
MEMI4DKS^1<M(T[-"R;E!0;1D]#D\^W(!TVN:I<:59QR6FF7.HW,TRPQPP\ $
MY^9V/"*,<L?;UKFY/B#)8VNO_P!J:,;:^T:U2[D@BNEE66-LXVN ,'*D$$>E
M7?'.AZCKEC81V2QW$,%V);JQEG:%;N/:1L+J#T)!P>#CFN2?X=ZL]OXG6VTW
M1],BU;2DM;>UM'.V)U9C\[;!N)W9+8]N<9(!U=AXQNY->T_3M3T&;3H]3CDD
MLIFN$D+;%W%9%'W#MYZGZUS'BCQOJFI^#WU#3-)N[72[B[@CMM3CN@KE?M"
ML4&"J, 0#DD[AD &NOU70;F_\1^&KY3']GT[[0+@%B"0\)0;>.>?I7*3>%/%
MJ>#X?!]O%IC6-K-%Y=^]PP>2!)5=5,>SA\  G)''OP >GT444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %&<=:*\O\ %T%[K'Q-
M@TF2QTZ_LX]+$]O9ZE=/#$\AD8.X"HP=@ HP>@.>] 'J%4-9U:VT/1+W5KO>
M;>TA::0(,L0HS@>]>2P64E[8>'=+O;V"XL_^$FG@1+*ZED6.$0R$P>8RJS '
M<OIMXS2>)=%T[3].^(VDVMJL>G6VGVUY;VP)V0S%9064=B=HZ4 >M:-J%SJ6
MF1W=WILVG2/R()I$=@.Q)0D<^F<UH5YC:Z#HM]XWDT+5;6$Z;9Z3!+IUA(<1
M$NS^=(%S@L#M&>V:P;2UBUR7P]I%Q/-<Z,OB'4+:U)F8^;:I"Y5=^<LN05Z\
M@8H ]LR*,XZUYC:^'] U'Q;XBTS6X(C9Z3;VT6GV\TI"6]L8LM(F3P=VX%^H
MVCFL9HV\1>*+*PMTM==TJ'189=/37+J2'S@68--M$9WOPH)(&!@CKF@#V>LO
MQ#KEOX<T&YU>YCDEAMPI98L;CE@O&2!WKRZVD\_0M%T*[6+7))]3NULK2'4'
M%HT40/[N65TW2"/=@  YP.N*RKH"U\*_$C3"+2SM;9[(_9M/G:6&W9B-^PD#
MG@9P!R* /=Y91%#)(>0BEB!["J.A:Q#K^@V.KVZ/'#>0K,B28W*",X..,UPE
MSINE:#XQT&+PWMC6_L[LWRPREQ-"L6Y)7Y.3OV@.>3N/)KE]/CO-3M? FCM:
M6%Y8-H/GQVFH7+PPSS@J#G:C;V53D*1W)[4 >Z49 KB?AQ'<VUIK%G)<63VU
MO?LD%O9W$DZ6GRJ6B#NJY )) &<;L=JYGQ+!9:YJ_BBX71[2]73P(;B]U>_,
M:6I6,-B"-4) YSG(RV>: /6G5'1E<!D888,,@CWI(XXX(DBB18XT4*J*,!0.
M@ ["O)/#Z0^)[WPE8>(V^UV3>&DN88;AR4N+C<%=F'\;*NWKG&XFIOL^A7FN
M>'?#\5[/>>&O/OU\JXD8QR7$97;#D@;T3<^T9(..IQ0!ZQ1UKR;4+?0H=3TO
MP[97TY\.R:U)%J$#2,((Y?(WI;JV!\A;!*9(SQ[5G>+88-%C\::1H+F#3$TF
MWGE@A<[+:Y,Q'RC^ L@!('H#0![5D8SFL%?$\<MYJ=K;:?=W$NG7<-K*L84Y
M\Q4;>.?NJ'R>_!KD=1\,:)8>*_#OAY[81Z'=+<W,D$DC%+N[41A?,)/S';N;
M!ZG)KGGM['3XO$UMI4I-I%XGTU$VR%@O,.Y <]%.5QV QVH ]MHZ5Y+)X<TS
M6C\0[W4(&N)[6[E%LS2-^X*VT;!D&?E;..1SP*=I,=EXEUS38?%C)<0KX<L[
MFSBNI,)([@^=+C."XPHSU /O0!ZQ5"PU>TU*[U"VMF<R6$XMY\K@!RBO@>O#
M"N6^%30-X5O/LMP]S;#5;P0S/(7+H)3M.X\G(QS7'7UO;Z/8?$.YTY19W(U2
M&&6> XDBMG$!E([@89SGMR: /:<YK-U403R65G=:4;^">;#%HE>. JI8.P;I
MR, CN17%G3-(\.>//"T/AE([<7ZSK>0V\A*S0+$661QDY(?;A^IW$9-:WB_G
MQ5X,0D[7U&8,,\$?9I>M '0Z5J]IK-O/-9LQC@N);9BRX^>-BK8]L@U?ZUXE
M9:)IY\(W5G8S:?97$OB:>(P71<0W@2679;R%>0N.1_NCK79?#UX;74-=T?\
MLC^RKJU>&6:U@NO/M1O4X,7 V9VDE2!V/>@#K!J]H=?;10SF\6U%VPV_*(RQ
M4<^N0>/:K^>:\PUZT@M/B=K6I6=K$=6C\-&YM6QEFG#2("!W. H^E<]HMA=0
M6/A36;8:%9W-U<V^=274YY;B^W_ZR-U\KYBPW9!.%(ZC% 'N%&:\9.AV+^#_
M (A:])&TFIQ76K10SM(Q,4>7^51G ')/3O5Z7PCH\/BGP=;+!)Y>I6=Q_:(,
MS_Z;LCC=?-Y^?YCGG^7% 'K&>,]J*\8_LU)='O=#M;NTAAMO%,L-GI]^TGV:
MX01!OLY*\@99F Z9 &#75> [VRT[^WM/FL%T5[">-[F 7@EM8S(@P8F.-H.,
ME3C!/O0!WM%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 5'/!#<PO#/$DL3C#)(H96'H0>M244 5K'3K'3(3#865O:1$Y*01+
M&N?7 %6:** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "L_5M"TG784AU;3;6]CC.Y!<1!]I]1GI6A10!
M2CT?3(8;2&+3[5(K-MULBPJ!"V",H,?*<$CCU-+/I.G7)NS/86TIO(Q%<[XE
M/G(,X5^/F R>#ZFKE% &;JOA[1M<BBBU72[.]2+_ %8GA5]GTR.*G32M/C%H
M$L;9199^RA8E'D9!4[./EX)''8U;HH R]5\-Z)KDL4NJZ397LD7^K:X@5RH]
M 2.GM2ZIX=T;6H(H=3TJSO(X?]4LT*L$_P!W(X_"M.B@#+N_#>B7VFPZ==:1
M92V4!!AMV@79'CIM&./PHB\-Z'#;2VT6CV$<$R(DD:VZ!75#E01CD DD>F:U
M** ,S3O#FB:1)</INDV5H]Q_KF@@5"X]#@=/:BZ\.:)?:9#IEUI-E-8P8$5N
M\"E(\=-HQQ^%:=% %:PT^STNSCL["UAM;:/[D4*!%7Z 52N?#&@WNJ+J=UHU
MA-?+C%Q);JS\=.2.W;TK6HH RKKPQH-[IL&FW6CV,ME;_P"I@>!2D?\ NC'R
M_A3[CP_HUWI*:5<:592:?'C9;- IC3'3"XP/PK2HH S1X>T8:/\ V.-*LO[-
MQC[)Y"^5US]W&.O--MO#>AVFER:9;Z18Q6$IS);K H1SZL,8/0=:U** *>IZ
M3IVLVAM-3L;>\MR0WESQAUR.AP>_O4$'AS1+:V-M!I%C% 720QI;J%+IC8V,
M=5VC![8%:=% %9=.LD6Z5;2!5NV+7 $8_?$@*2W][@ <]A7,>(O"MY?W%H+&
MWT*YTZW@$4>G:I9!XX&!X>,J,CC"[>F ,8KL** ,3PIX?_X1K0DL6G6>=I9+
MB>54V*TDCEVVKV&3@#T%7?[%TL:C<:A_9UK]LN8O)GG\E=\J<?*QQR.!P?05
M>HH R]*\-Z)H<DLFE:1963R\.UO J%AZ9 Z>U79K.VN9H)I[>*26W8O"[H"8
MV(()4]C@D<=C4]% &3)X8T&87PDT:P<7[!KL-;J?/89(+\<D$DY/K5C2]&TS
M1+8VVEV%M90EMQ2",("?4XZFKU% %.?2=.NM1MM1GL;:6]M@1!</&#)&#U"M
MU'4U4M?"V@6.J-J=KHMA!?,23<1VZJ^3U.0.I[^M:]% %3^RM/\ LES:?8;;
M[-=,[7$7E#;*7^^6'0D]\]:>;"S:>VG:UA,MJK+ Y0;H@0 0I[9  X]*L44
M9USH&CWEI<VMSI=G+;W,OG3QO"I623CYV&.6X'/7BF0^&M#MM)DTJ'2+%-/E
M.9+80+Y;G(.67&">!U]*U** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH ***R-=\1V/A];5;A+B>YNY#';
M6MK$9)9F R=JCL!R2< 4 :]%9FBZ[9Z[;S26HFCD@D,4]O/&8Y87P#M93TX(
M.>A!XK3H ***YW7?&-IH6K6^EMI^IWUY/ TZQV-OYI"*0I)Y'<C\Z .BHK"T
M+Q;IVOW5Q90I=VE_;J'EL[V!H950]&VGJON,UNT %%4['5+/4I;V.TE\QK*X
M-M/\I&V0*K$<]>'7I5R@ HK$\1^*+3PT+(7%K>W4M[,88(;.'S'9@I;ID=@:
MK:5XUT_4]6CTJ6SU/3;Z9&DAAU"U:$S*OWMAY!QW&<T =)156_OAI\,<C6]S
M/OF2+;;Q%V7<P&X@=%&<D]A5J@ HHHH **** "BN>U?QA8Z7J?\ 9D-I?ZEJ
M(C$KVNGP>8T2'HSDD*N>V3DU:T#Q'8>(H)WM!-%-;2>5<VUS&8YH'QG#*>G'
M(/0^M &O1110 4444 %%%4]0U2STM;=KR7RQ<W"6T7RD[I'.%'% %RBBB@ H
MK-T76[37K6:YLQ)Y<-S+;-YBX.^-BK?AD5I4 %%%% !116?HNLVNOZ8NH68D
M$#221CS%P<H[(W'U4T :%%%% !15/3=4L]7MGN;&7S85EDA+;2/G1BK#GT((
MJY0 4444 %%9\>LVLOB"XT51)]K@MDN7ROR['9E&#ZY0UH4 %%5;V^%B;8&W
MN9OM$ZP#R(B^S.?F?'W5&.3VR*M4 %%58KX2ZG<6(M[E3 B.9GB(B?=GA6Z$
MC;R.V1ZU+<W$5G:S7-PX2&%&DD<_PJ!DG\J ):*@LKR'4+"WO;9BT%Q$LL;$
M$95AD'!Z<&IZ "BBL.'Q;I-R-&:WEDFCU>62*TD5" Q168DYP0,(>U &Y111
M0 45B>(_$]IX9BLVN;:\N7O)_L\,5I%YCL^TMTR.RFJNE^-M/U'5XM*FLM3T
MV]G1G@BU"T:'S@O+;#R"0.2,YQ0!TM%9^AZS:^(-&MM5LA(+:X4LGF+AL D<
MCZBM"@ HHHH **** "BL_4=9M=+N]-MK@2>9J%Q]GAVKD;]C/SZ#"FI-2U2S
MTFW2>]E\J.2:.!3M)R[L%4<>I(H N45GVFLVMYK.HZ5$)/M.GK$TVY<+^\!*
MX/?A34TM\(M3M[$V]RQG1W$R1$Q)MQPS= 3NX'?!]* +5%%!.!D]* "BL/PS
MXLTOQ;:W-QI;R%+>;R7$B;3T#!@/[I!!![UN4 %%%% !1110 4444 %%%4[[
M5+/39+..ZEV/>3BW@&TG?(03CCIPI//I0!<HHHH ***JZE?PZ5I5YJ-QN\BT
M@>>38,G:JEC@>N!0!:HJ"TNX[RQ@O(LB*:)95W#!VD9&?SJ/2]3M-9TR#4;"
M7S;6X7?%)M(W#UP>: +=%%55O@VJR6'V>Y#)"LWGF(^4<DC:'Z%AC)'8$>M
M%JBBB@ HJAK>KVV@:+=ZM>"0VUI&9)/+7+8'H*O*P90PZ$9H 6BBB@ HHHH
M**IZGJEGH]G]KOI?*A\Q(@VTG+.P51@>I(%7* "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ KCO%MK=)XG\.ZII<EE)J=N+B*.PNIC%]JC=5+[&
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
M@ <8QGO7L>HZ78ZM#%%?6Z3I%*D\8;/R2*<JP(Z$&O.=4^'6HZS<7-O>:9H
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
M,H&&VGY@) <8[&H7TN'5?C$RV5W%-IT21:EJ$,;!@EW&'BB!(Z$@AL=<Q T
M=YK.L6V@Z'=:M?[E@M8C)($^8G_9'J2< ?6N?M_&6IIKVCZ5JWAJ:P;56D$$
MHNDE50D;.0^ ,-P..1SUXJ_X[L[2_P# ^KV]]=&TMS 7:X$9?RBI#!BHY(!
M)]LUQJZMK&M?$#P:EY)HSK ;F=UTRZ:XW#R&7S6RHV*2P '.2W7B@#<TGQ]?
MZMHT^L1>%;XZ>J$0-%*LDEQ*)-FQ4'(&<_,< !2:LVWC*\BUF72M8T7[#="R
MDO8?*NUG614(#*2 "K?,.Q'O6:/!^MQ?"J#P[!<0IJ$<FZ15F9$F3SB[1[P-
MRAE.,@=ZI:?X%OX?$2:E;Z)H^CVITZYM&M[64O(7?;AW?8-W3&.<>IS@ &II
MWQ"NKN/0[VY\.SVFE:Q)'#;W37*,PD<97=&.0I((#9]"0,UG:9XYU/3M.\4Z
MCK=DSQ6>KFUMP+A/E+>6BQ9P J@L"7/J:U/^$3U'_A$/!^E[H/M&D7-E+<G>
M=I$0PVTXY]NE0+X<\16T?B:TMX-*FM[^_-_ ;IBZ3*VP/#(A7Y00I&X9ZCB@
M#H="UK4-2GG@U#1GL6C19(Y8YQ/!,K9^[( .1CD$=QUK9E9UA=HTWN%)5,XW
M'L,]J\_\.^&]0\.7FL:S;Z99:-:M8E8]*ANWEA>9<MYK?* G9<*.F37<:5<7
M%YI%E<W<'V>YF@226'G]VY4$KSZ$D4 >41>*_$<WA7PWJ%S!<R7,GB1X D%P
M UTNZX'EG& %!55YXPH-=@GCY;*'6QK^ER:;<Z3#'<211S"<2QR$A-C #)+
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
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
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
M[L!1TXKTWP=_R,OC7_L*I_Z3Q4 =A1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
M%%% !1110 4444 %4KS2-.U"ZM;J\L;:>XM&WV\LL89HF]5)Y'0=/2KM<UJ_
MB2_A\0)H6BZ7'?WRVWVN<SW/D1Q1EBJ_,%8EF(; QVR30!L#1],73XM/&GVH
MLH65H[?RE\M"IW*0N,#!Y'O5;4?"V@:O>I>ZCHUA=W28"RS6ZNV!T&2.<5QW
MA/Q!K"^&KN>+2;F\O[C7+N(03S[5M1YC']Y)AMJKC' /. !5;Q!XZU>?PAXM
M@@M8+/5])A0O+:WWFQA) <.C[ =PVGY2!]: /2196JWIO1;Q"Z,0A,P0;]@)
M(7/7&23CWK/N/"WA^[U5=4N-%L);]2&%P]NI?(Z'..H['M69=:_X@MTM8(-!
MMFG-MYUQ/<7YCMHSG 02>62['&?NC'K5_P *>(D\4:!%J:V_V=C))%)%Y@D"
MNCE6PPX89'![B@"?5?#>AZY+%+JND65[)%PC7$"N5'IDCI[5;.GV9FM93:0>
M9:@K;MY8S$",$+_=R..*QO'=[#IW@O4KN>*:6*-4+)#.87.74<..1UK-O?&.
ML'6M<T[2/#L=Y_8_EF:6:]$(D#1B0!1L/S<D8/' YYQ0!TFNZ/;Z_H=YI5R6
M6*YC*;UZH>JL/<$ CW%1)HT-[;Z9-K=I97>I605UG\H-LE&,LA(RN2 ?R]*P
ME\<S:F-(@\/Z6+R\U&P&HE+FX\B.WA. "[!6))8X  /0]JIS:S?W_BGP6US9
M76F2O=7T5S:.Y*L4@;!!& ZY&0<4 =0GA?0(]7.K)HU@NHEBQN1;J)-QZG..
MOOUKF/$'@O5]7U&]<-H,\=R"L%Y>V :ZLD9<%8V& V.2I)!!/>KT?CH/X#L/
M$_\ 9Y NYH8OL_G?=WS"+.[;SC.>GM5#Q!XMU6ZT_P 2)HNC?:+'34FMKB[^
MU^7)YHCRWE)M.[9D9RRY((% '2/X4T2XT.PTB^TZWOK6QB2*$7,2N5"J%!&1
MP<#M5B7P]HT^D+I$NE63Z:F-MH8%\I<'(PN,#FN(T[Q$FFVVF7,L%Q<W5OX/
M_M!G:Z(60($)4K@C<3_'U]JU+#QMJ<M[HAU'0%L]/UH[;2<78DD5C&9%$B;1
MMR >A..] '51:7801W$<5E;HER<SJL8 E.T+\WK\H Y["JM_X9T/4[*WLK[2
M+*XMK90L$4D"E8@!@!1CY1@ <5R5]\1]2M_#]UXEM?#8N=!B=DBG^VA9I 'V
M>9Y>P@(6_P!K..<5U'C&22'P1K\L3LDB:;<,KJ<%2(VP0>QH NQZ1IL,=G'%
MI]JB61S:JL2@0'!&4&/EX)''J:8ND6Z^(9-:_P"7E[5;7A0/E#%N3U/)[],<
M=37)Z#XMU6UL_#D>M:+]FLM22*WM[L7?F2>:8\KYJ;1MWX.,,V#P:NOXZ"^
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
M!P"P^4\\4 >ET444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %<KJNC:
MS:^*_P#A(=!%C/)/:+:75K>2M$I"L61U=5;D;F!&.1755G2:W:1^(H-#;?\
M:YK9[I>/E"*RJ<GURXX]C0!P,G@#7GTFU2\?3-2D35KG4+JQED>.VNQ+D@$[
M205)R 01]:<GP[U22Q\6P%-'L%UNQB@M[>Q5EBMF0.,'Y1N!W E@ >3Q7I8E
MC,IC#KY@&2N><?2LS1]<BUB?5HHX7B_LZ]:S<L1\Y"(VX>WSC\J ..OO".O:
MCKEOJVI:7H&JL;)(/LEY/(8;2168EXP8R&W C.0#QC.*N^']+USP;H.GZ:J6
M5W)/K#^<T,;A1!(SN64 80CT)P ,9)Q7;)+')'YB.K)_>4Y%*LD;NR*ZEE^\
M >1]: ,/QGHEQXC\(W^DVDD4<]PJA&E)"C#JW. 3T'I45AH%U:ZWXHO7DA,>
MK-$T 4G*[81&=W''([9XJYX>\06_B'2HKZ-#!YDLT:Q.PW'RY&0G\US^-:CR
MQQE0[JI8X4,<9/M0!P&F>#]>\.1:%>Z8VGW5_9Z2NF7EO/*\<<JJ=RLCA200
MV>J\@]JT8/#>O3ZOX>U/5=0MKB>QN;J>X5 0J++&42.+C)"Y'+8)Y/M77LZ(
M"795 &22<8%*'5D#JP*D9!!XQ0!YDO@GQ6OAFT\+B;21IUC>1S1W7F2>;/&D
MXD"E-N$..^3D@#C.1I77AKQ+8CQ!8:))IC6&LRRW FNI'62UDD7$F%52'!(R
M.5P3SFNZCD25 \;JZGHRG(H9T0$NRJ ,DDXP* .!D\"ZD]M'$+BUROA5]%/S
M-_KB%PWW?N?*>>OM6M=>&;R>W\(QK+ #HT\<MQDGYPL#QG;QSRPZXXKJ ZLJ
ML&!5NA!X-*6 SD@8&3S0!X3K%W<0_#^\\+Z1K&D7%D;DVMK 2XU YG_U!A(X
M(.1N_NC..]>R^(=/EU;PUJNFP,BS7=G- C.2%#.A4$X[9-3BWT\7DET(;;[4
M@^>;:N]1CN>HXJIK.O0:.NF,T;3+?WL5FA1AA2^<-[CB@#FK7PWXEOFT"RUR
M33%L-&ECN/-M7=I+J2-2J95E 0 G)Y;)'&*S+WP3XK?PQJ/A6UFTD:;/=27$
M5W)))YNQIO-V% N <DC=D\=J],21)5W1NKKZJ<BA)8Y"P1U8J<, <X/O0!SE
MGHVIV/C[4]6C-H^F:E;PK)N=A-&\08# Q@@[NN14]]HEQ<^-M(UI'B%O9VMS
M#(I)WEI#&1CC&/D.>?2MP2(S%0ZE@,X!YQ3J .!N? ^IM+J%]:W5JE^-=&KV
M._<4(\I8S')@9&1NY&<<'VJ67PMK6O7FJ:CK3V-I//I,NEVMO:R-*D8DY9V=
ME4DDA> . *Z+6_$%OHBV9=#,US?066U&&4:5MH8^PK4::))%1I$5V^ZI8 GZ
M4 9GAFUU&Q\.6-GJJ6JW=M$L+?979T(48!!8 \@9QBN9TCP3J.GGPT99[5O[
M+U"^NIMK-\RS^;M"\=1Y@SG'0]:ZL:W:'Q&VA#?]L6U%V>/E"%BHY]<@\5?$
ML;2-&KJ77[R@\CZB@#A;;P3J,/@C0=$:>U-SI^IPWDKAFV,B7!D(4XSG!QR!
MS4OB3P=J&L7GB::WFME75-&2PA$C,"LBM(26P#\OSCID]>*[>HUGB9&=9$95
MSDAL@4 <9=^#[^ZU^_9GM6TK5='73KL[V$T142 ,@QA@=_<CI6;H_@74K2XT
MF"?1_"MO%82(TNHVUHKW%T$Z85HP(V) )8,2#TKJO"7B27Q5I?\ :8TR2SLY
M<-:M),KM,G/S%5^[TZ'UJQHWB"WUE]01$,+6=]+98=AF1DQDCVYH XO4/!GB
ME/"NK>$M*ETK^R[IIC;W5Q)()8DD<N8R@4@\L1NST/3->@7EF;O2+BRWA3-
MT6[KC*XS0EY,=4FM6M'2".))%NBR[78D@J!U!& ?3FJ]]KUC8:CIMC*Y:;4)
MG@BV8(#*C.=QSQPI_$B@#CM,\*^)])@T&_@&E/JFEV)TN6 SR"*YMQLVL'V9
M1\H#]TCFNA\,:'?:?=ZMJVK2V[:EJLR22QVV3%"B($1%) +8 ))P,D]*N:)X
M@M]:6\*(83;7T]EM=AEVB;:2/8UKT <IJ>G>*K'Q#<:GH-S9WEK=QHLMAJ,T
MB+$Z @-$RA@N1U&.2,YK&;P%JUY!J.IW5W8P:_=7]MJ$2P(QMHG@&$4YPS9&
MX,W!YX'%>@B:)I&C61#(O)4,,C\*#+&K*ID4,QPH)Y)]J .(NO">K^*[^2Y\
M3?8K2%-/N+&WM[&5I2#. KR,[*O91A<?C5O2-/\ &*2:59ZA<Z;!8Z> )IK1
MV>2]"J54%64",="<%CD8&*ZUI$0J'=5+'"Y.,GT%9GAO7(O$F@6NK0PO#'<;
ML1N02-K%>WTH X)/AWJUOI_AZ&>WTG6(M.AGCFT^\F=8"[R;EE4[&RP'&&7N
M<58L/A]JUM!)&\FEQA_$%MJP2U5DC2- FZ-5V]1MP/7J<=*]',L:R+&74.PR
M%)Y/X5CWWBBRLKW4[+;(]QI]A]OE4  %#OP ?7Y#^E $_B+2[G6-"N;*RU";
M3[I]K0W,1(*.K!AG!Y4XP1W!-<KJ&A^,/$\-KINO)H=M8QW$4\UQ9R2R2R>6
MP8!%90$R1@G)P">M=CI6IPZMIEG>QX3[3;QW B+ LH=0PS^=6S+&LBQEU#MR
M%)Y/X4 ><W_@*]@U?6)]/T?PUJ4>ISFY2;58LRVDC !O^6;>8F1N RO)(K17
MPOK6A:G::GH?]FW4PTZ.PN[><?98WV,661/+1@O+-\NW&"*[5I$4@,Z@DX )
MZFJU]=S6K6HALY+D33K$Y1@/*4@DN<]0, 8'/- '(3^'/%4=WHFM+>6&H:O9
M?:5N(IV:&%DF*G;&RJ2 FU0,@Y'6JMOX(UQXII+VZL&N9O$<&L/Y1<(L:"/<
M@R,Y&T@>O!.,X'H)EC#JAD4,V=HSR<=<5A77B:1/&$/AVSTU[J3R%N;F?SE1
M8(V8J.#RQRIX% %36/"UUJGB/4+Y9X4M[K0I-,&<EE=G)W8QC;@^N:Y/Q7;7
M]GX&T#2YKRPMO%UI-##IJ6LQ<RY'DLP! ;&QF+<8&.M>J++&[LBNI9?O*#DC
MZU&R6KW*2NL+7$:G8Y +*#P<'J!0!#I&F6^C:/9Z9:C$%I"D*?11C)]ZXQO"
M_BBPTS5?#^DRZ6=*OY9WBNIW<36JS$EU\L*0Y!9MIW#MFN]\Z+Y_WB?N_O\
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
M;RV-J\%RQ>>-H5*RL<9+#&&/ Y/H*BAT'1[:V:W@TFQB@:+R6C2W15,>2=I
M&"N23CIR: /.KCP?H,'C+P?:IIT/DWEE=&]0CB[*+$RF;_GI\Q+?-GFL2^M=
M,@\/OIMV5M]&M_''D"/=L2*'&2H_NKEC] 37M1M+9IH9FMXC+""L3E!NC!QD
M*>P.!T]*ADTK3I8WCDT^U='E,S*T*D-(1@N1CEL<9ZT >3>)0NB7OBN'P6L=
MO;KH ENH[# CBF\W 8!>%?RO,/'.%!J?1-.BT_Q3X8ET^3PS8^=O 72I)7DO
M8?+)(?Y<''#;G/4=<FO4]/TK3M)MS;Z;86MG QW&.WA6-2?7"@"HK#0='TNX
MEN-/TJQM)I?]9);VZ1L_U(&30!Q'PNTO1-'\$6WB*=+>WNY4F%Q?SN%.SSF
M4L3@*-JC'3BNZU:2Y70[Z2P&Z[%M(UOCG+[3M_7%17^A6-_H-QHODI!93QM$
MT<,:@!6ZX&, \GG'7FM%5"*%48 & * /$OL'A5/#'@+4+,VW]L7&J6!EF5@9
MYY"ZF82GJV&R3GH0.E0>*_L&I:-XPU6+2]'00W%Q";_4[DO>^<@V@0J%_=C<
M $&[WQS7L:^'M$2]>]31]/6ZD<2/.+9 [,#D,6QDD$9SZT2>'M$EOY+^31]/
M>\D4J]PULAD8$8(+8R>.* /-)HH5\93ZE;V]LVN2>$4N;25D4RR7.'4,IZEM
MH SUQQTK(T.R$=AX2U*UG\-VEW-=0$7EO),]Y=,W^MCDPI+%OF#;N%/IBO:#
MI.FM/:SG3[4S6B[;:0PKNA&,80X^48XXJ.#0='M=1?4;?2;&&^?.^YCMT61L
M]<L!DT <_P#$R62+PAS+)%9/>6T=_)&Q4I;-*HD.1R!M.#[$U@W&D^'K;QYI
M.G:#:6'V2]T^Y&J6ELJF&2$*OE-(@^7.\X!/)R:],DC26-HY$5T8%65AD$'J
M"*IZ=HNE:0LBZ9IEG9+*<R"V@6,,??:!F@#F?A/8VEG\--$>VMHH6N+=99C&
M@4R.1@LV.IP!S[5Q8T_PG/I?Q!O=4^RG4H-2NRDLK 30$ &,Q=U);IMZGCG%
M>QV]O!:6Z6]M#'##&-J1QJ%51Z #@52D\/:+-=I=RZ/I[W*.9$F:V0NKDY+!
ML9!SWH \@\0R7LFD>)9-0W+?MX2T]KC/!$N^3=^.<UT&O^$O"^B^(_!:+I5A
M%!)?3><\R*?,;[.Q!9FZG<JGGN,]:]'GTVQN3,;BRMI3.@CE,D2MYB Y"MD<
M@$G@^M+>Z=8ZE"L-_96]U$K!U2>)74,.A (Z^] 'CMQX<TFX\#_$#69K*.34
MH-3U&2"Z89D@*.2NQNJ\C/&,YKU:[OUM?"<^H7)F*Q6+3R&'_6$!-QV^_I[U
M<_L^R^SSV_V.W\BX9FFC\I=LA;[Q88P2>^>M6 BA @4! ,!0.,>E 'A44-O9
M7?@:^M=.T+36NM1M_*:UN3-?31NIW&5]J[@<C=UY(JW=>'M*N/ GCW69[..3
M4K?4M0DM[IN9("DA9?+;JO//&,DFO5[;PUH-DS-:Z)IL!9UD)BM47+@Y#<#J
M#R#5O^S[(VT]M]CM_(N"S31>4NV0M]XL,8)/?/6@#SF&VT36/&FO'Q<MK*8+
M&U:R%ZP C@:/,DD>>A\S=EAR,#FMWX4[/^%9:-Y;,\>V3:S=2/-?!-=)>Z+I
M6I- ;[3+.Z-N<PF>!7\L_P"SD<?A5FWMX+2!8+:&.&)<[8XU"J,G)P![T >.
M&U\/W7@7Q/JVN&W'B6&YO-]Q(P%S;S([>0L9^\HP(]H'!S[U*]I:_P#"0Z[=
M:C:6L>LR^$HIF9HU60S&.996'?.!@X["O4YM"T>YU)-1GTJQEODQLN7MT:1<
M=,,1D5+<:5IUY=)=7-A:SW$:-&DLL*LZJP(902,@$$@CODT >76V@:7HFD?#
MC5-.LX[?4+B[M8I[I!^\F62V<N';JP) X/3'&*Y^2UDO](\2ZCJC^'H-0BOK
M@2W][-*+VS97(BV;5)4 !2H7K[YKW4V-HT=O&;6 QVS!H%,8Q$0, J/X2 2!
MBJUQH.CW>HIJ%SI-C->QXV7,ENC2+CIAB,B@#A-%T*SUGXDZI=:S!'>W5G8:
M;)&SJ0JRD.2X4XP<J,9&1R.YK;\>?\?/A'_L8(/_ $7+75I;01W$EPD$:SRA
M5DD" ,X&< GJ<9./K1-;07!B,\$<IB<21[T#;'&<,,]#R>?>@#Q2ZT#3#\,/
M%6NM:1MJL&I7LL%X?]; 4N6V[&ZJ,Y.!W)]:U_$.FQP>-/%>HZ9I\ U>+PVM
MS;S1PCS%G)F4NIQG>0 ,]3@"O3SIMB;26T-E;FVE+-)"8EV.6.22N,')Y-2B
MVMUN6N5@B%PR"-I0@W%020I/7 )/'O0!Y2]GX;TZT\$WOA;[*NJW-];)YMLP
M,US"P_?^:1RPVY)+="!TK,DT'34^%GC+6_LJ-J;7&HQBY;ET3SV&U3V'&<#N
M3ZUZ]::%H]A>RWEGI5C;74N?,GAMT1WSURP&34YTZQ-I+:&RMS;2EC)#Y2['
M+'+$KC!R>3ZT >;W?@WP_;_$#PW91Z9#]FN=/N6NXB,K=,AB*F4?\M""Q.6S
MSS6/&;*#2U\/'3X[N)O%%Y!96=Q<^3:*L>6"R'#909)"8Y./2O9&M;=KB.X:
M"(SQ*5CD*#<@.,@'J <#\A56YT32;RUDM;K2[*>WED,TD4L"LKR'JQ!&"WOU
MH \;CM;9M/\ BAIS6VD"&'2XIOLNF@M;13".4Y4$8W@JA) '('<5IS8L;B-O
M#21))'X*N7M1: 8$GF(<J%XW;LGZUZI;Z1IMHA2VTZTA4Q"$B.%5!CY^7@?=
MY/'3DT6>D:;IWE_8M.M+;RT,:>1"J;5)W%1@< GDCUYH \N:S\.:?IO@J^\,
M?9AJ]Q?6RB:W8&:YC;_7^:1RPV[BV[H1VK-NM TM_AKXPUQ[2-M5M]2OI;>[
M/^M@*7#%=C=5&><#N3ZUZ_:Z%I%C>R7MGI5C;W<N?,GAMT1WSURP&34YTZQ-
MK-:FRMS;3%FEA\I=CECEBPQ@DGDYZT 9WB6WBOO!NJ17,*3(]E(2CJ&!(0D<
M?4 UYKINB:'J?_"L+,VEK+9/IUQ+/#&!Y<DODPEMX'!.[D@]3UKV/:-NW QC
M&*I6NC:78^5]CTVSM_*+&/R8%386^\1@<9P,^N* /*;O^SM&M?$^ABQ+Z=)X
M@M;>VL4N/L\ :2*-RKM@[8B020!SG&.:KP6-O'XK\2:4]CH4,<GAN26>QTK+
M0!U?Y"X( +C/]T<$5[!/I.G745S%<:?:RQW1#7"20JPE(  + CYN .OH*;9Z
M+I6GA!9:99VP1"B>3 J;5)!(&!P"0,CVH QOAW%8P_#[0AIZ6Z1M8PM)Y  !
MD**7)Q_%G.>^:\[6RBU#3[2 W>FBY'B'5'@L=6B9[2[(D<$.1P&4'*YSWX->
MQ66GV6F6_P!GL+.WM(=Q;RX(EC7)ZG &,U#<:)I-W9O9W.F64UJ\AE:&2!61
MG)R6*D8R22<T <S\-KFV;2]3LK?38]/:SOWCEAM[GS[?>55CY+8&%Y^Z ,'-
M8R^&M'UWQEX_DU6PAO#&;=(A,NX19M$)90?NL<#D<\"O1[.RM-.M4M;*UAMK
M=/NQ0QA$7Z <"E6TMDEGD2WB62?!F8( 9,# W'OQQSVH \2M&OM9G\%VU^NE
MWELWAU)H(M9=O)EGR YP 0[A-O7L2:GMXT72].TZ_OK*;PV_B1X9X[5Y/LT*
M^42L&YP-T?F^F5Y SVKUVYT/2+VPCL+K2[*>SBQY=O+;HT:8Z84C J3^R]/_
M +._L[[#;?8=NS[-Y*^5M]-N,8_"@#RGQA'HNF:;JECX8>.W@DO[%=7AC8QV
M<,3L0<E!\F["A]O.",T16,>FZQJD*W^B:-;RZ'.;N'0EE?:G 6X*J@4,N3C^
M(@^U>J6ND:98V#6%IIUI;V;9W6\4*I&<]<J!@YI-.T72M(CDCTW3+.R20Y=;
M:!8PWUV@9H \L\-1VNA>(-)MI;#1U:\L9TM]4\/RLIDC6,,6FAQEC@9#9;YC
M[U6\+PV>A:EX6F^R:+J,5U+Y%IJ^ERM#=2[D;+7$1Y?(&6R?E/.!7K5AH.CZ
M5/)/IVDV-G++_K'M[=(V?ZD 9I+70-&L;^2^M-)L+>\DSON(K9$D;/7+ 9-
M'ANORV=SX,N_$=GIVD6GF7QD@OKJY,NIO()^V%&P\'Y=QPHZ5WNG^&='UWXE
M>,)]4L8KMH)+181*,B/-NNXJ.Q.!S["NR/AK03<W%R=$TTSW (FD^RINE!Z[
MCC)S[U=6UAA>>6WAABGF WR*@!<@87=CDX''TH \L\._:-2U;1O!5T6<>%[F
M6:[9O^6B18%I^8=6_P"V==)\260V6AP7KE-'N-6ABU$EMJF(JV%<]D+A >U:
MWAK0+K2[G4M2U2Z@NM5U*1&GE@B,<:HB[41023@#)Y/5C6Y/;PW4#P7$,<T,
M@VO'(H96'H0>#0!X_P"*+;3=-O?%=CX=2WAT]_"]Q+?6]I@0I-G$;;5X5RN_
MZ@9KT?PGH.F:'HD T^T2%KB*.2>0<M,^T99CU)//-7K70](L;&6QM-+LK>TF
M!$D$5NBQOG@Y4#!_&KRJJ*%50JJ,  8 % 'C.HV?A^]\->/K[Q#]F_MR"ZNT
M669@)X5"_P"CK&3R%*[< <-D]>::UO/JGBFSM+VWT2Z@AT&T>R@UEV$1!4^:
MZ* 06R "3R!BO6;O0M'O[Q;R\TJQN+I5*"::W1W"GC&XC..32WVAZ1J=O%;W
M^EV5W##_ *J.>W1U3_=!&!^% 'D<-@M]H'AVV_MG1;UHKV\^P6=_'-)8W,8.
M/+WLHR8\D(3G(Z9Q5BSN;:33-$M+?3DL#9^,(X988+GSX ^QF/E-@83YONX&
M#D5ZM=:/I=]8)87>G6EQ9IC;;RP*T:XZ84C Q2Q:5IT%M!;0V%K'!;N)((DA
M4+$PSAE & >3R/6@#RW2;#1=*\&>+/$]Y9RR7:7NHQF>!]LZQF9EV(W\ YSD
M=,DU7T^UBTGXA^#%AT_P_ICW'GJ8=*G,LLD7D,1YK[5##(!!(.2,@UZ^EE:1
MP201VL*PREFDC6,!7+<L2.ASDY]:J6?AW1-."BRT?3[;;)YJ^3;(F'P1N&!U
MP2,^YH \7M++P]#\)7U2Q^S_ /"3QWKBVG5@;E;G[00D:_Q8((^4<$$G'.:T
MO$\UW%%XT$+K'#+KUA%>N[LB+ T,(?<R\A#P"1V)KU:+P]HD%['>Q:/I\=U&
M"$G2V0.H/HP&1U/YU;^PVG^D?Z+!_I/^O_=C][QCYO[W  Y[4 ><>%K Z;\0
M88[9_#]DLFGNUQ8:.9"LJAEV2,-H12#D DY(8]<5H^,M'TS4/B!X,>\T^UN&
MDEN4<RQ*Q95A=E!R.@;D>AYKK]-T72M'61=,TVSLED.7%M L>X^^T#-69+:"
M6:&:2"-Y823$[("R$C!VGMD<<4 >,&VT&?X:Z]K.JF >*XIKIGN68"ZANUD8
M0HA^\O2,!1P0?>NA\.Z':ZS\1=;O];LTGO[.WTV2,2#(AF,1+,!T#94<^U=W
M)H6CS:FNIRZ58O?IC;=-;H91CIAL9_6K:6T$5Q+<1P1I--M\R14 9\=,GJ<9
MXS0!P_Q/L=,NE\,2:G;6LL2ZW#&[7"*5$;!MRDG^$[5R.^!6"OAC1=6/Q%O;
M[3X+F:*YD2!Y%W>2!;1L"G]TYQR.>!Z5ZG>V%GJ5JUK?VD%U;M@M%/&'0XZ9
M!XHCL+.*.9([2!$GYE58P!)P%^;UX '/84 >.R&]UK6O"L%^FDWD#^&H+B"+
M6G;R99SCS6  (:0#;UZ DUVWPS1HM OH5O;2YMHM0F2W6S,C10)QF)&<#<JM
MNP1D<X!XKI;O1-)U"RBLKW3+*YM(@!'!- KHF!@84C P/2K5O;06=NEO;0QP
M01C:D<2A54>@ X% $M%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
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
M&O=%;PKYUY!*-%M[R&0J"#+YS*5(XXP%YK>T+0YM)U37[N66-UU*]%S&%SE
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
M_<0QKN9XHV^; [X!W8_V:QO&7C6W;1'U;PYXYT^%EMV,%C'%%</=2\E5 )W
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
M<@!2$9R6R>GRX^I%<3X)OKOQ;X@L[O4482>'+(V<X;O?L2DI_!(Q_P!_:O\
MCZ#2_P#A)O!ESJ<5GY U"2-Y;E5V@&"0J"6X^\ 0/7% ';/>VL5REM)<PI._
M*1-( S?0=34]>,E/#3^#O%LOB'['_P )$MW=^:TV/M*R!F^S^5GY@-OE[-O'
MIWKT&=M9_P"%92,/,_MS^QR>/O\ VCR?Y[OUH WH[RUFN)+>*YA>:/[\:R L
MOU'44"]M6NS:K<PFY49,(D&\#UQUKS32%\&1:1X7DT:.W;77BQ:&SQYQE,+;
MS-CDKG.[=WQ6!M\/CX6:7/I_V;_A,#-!L=<?;3?>:OF!OX\YWY!XV^V* /1)
MO',43W*_8'/D:Y#HY_>#DR;/WG3H/,Z>W6NFDO+6&XCMY;F%)Y/N1M( S?0=
M37DUY_KM4_['NR_E!6/<PK<0>,7UFZ\-P70O[@32:C"[7D2 _N3$0P. NTIM
M'7U- 'N5S>6MFJM=7,,"L<*97"@GTYK/N/$5C;>)+/0G8_:KJ"2=#D;0JE1@
M\YR=PQQV-<%81Z7+XPN5\:R6=PZ:+9_8I-20*CKM;SV59.C%\;NX&*BTN+PT
M/&G@RXM($CLI-,N4L7OU'F.5EC\O!;DG!.SO@\4 >L57EO[.W<+-=P1L6V /
M( 2W7'/?VHL[^TU& S65S%<1!VC+Q.& 93AAD=P1BO,43P<_CGQZ?$AT\RAH
M,B\*Y$/V:/)3=WSUV\\+[4 >H3W=M:C-Q<0Q#&?WCA>,X[^_%))>VD5Q';R7
M,*3R?<C:0!F^@ZFO(O"^C)KNN^%8/$UFMXT?AAY?)O$WY/G(J%E/5@C=^Y]:
M/+\,-X8\8R>(Q9?V\MY=^8T^W[0A!/V?RL_,!MV;-O'I0!Z]<WEK9JK75S#
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
MY,7GB?RT\X+L$FT;MN<XSZ9J"WTS3[2YDN;:QMH9Y?\ 62QQ*K/]2!DU:HH
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
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !115:]U"RT
MVW-Q?W=O:P X,D\@1<_4G% %FBHK:ZM[RW2XM9XIX'&4DB<,K#V(X-2T %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !7.>)K30+>:W\1Z_(HATV-
MUB6;#1AGQR$QR_&!CGDXZUT=<KXH\'3>(]7TW4(M;N+%]/W-#&D$<J"0_P >
M'!&X#@''':@"'X?Z;<VEEJE_+9'3H-3OFN[;3R-IMXRJJ-RCA6;:6*CIGUS7
M85F:+I^H:=!*FHZU/JKLV5DF@CC*#'0!  ?QK3H **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
B**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@#_V0$!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>17
<FILENAME>cgnx-20211231xexhibit10l003.jpg
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 cgnx-20211231xexhibit10l003.jpg
M_]C_X  02D9)1@ ! @   0 !  #_VP!#  @&!@<&!0@'!P<)"0@*#!0-# L+
M#!D2$P\4'1H?'AT:'!P@)"XG("(L(QP<*#<I+# Q-#0T'R<Y/3@R/"XS-#+_
MVP!# 0D)"0P+#!@-#1@R(1PA,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R
M,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C+_P  1" 55!!\# 2(  A$! Q$!_\0
M'P   04! 0$! 0$           $" P0%!@<("0H+_\0 M1   @$# P($ P4%
M! 0   %] 0(#  01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D*
M%A<8&1HE)B<H*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U
M=G=X>7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&
MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$  P$! 0$!
M 0$! 0        $" P0%!@<("0H+_\0 M1$  @$"! 0#! <%! 0  0)W  $"
M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF
M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$
MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4
MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,!  (1 Q$ /P#W^BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHR,XSSZ44 %%%(75?O,!]30 M%("&&001[4M !10"#T.:* "BBB@
MHHHH ***9'+'*NZ.17&<94YH ?1110 4444 %%%% !102!U/6B@ HHHH ***
M3</4=<=>] "T4A( R2 />D#JQPK _0T .HHHR,XSR: "BBB@ HHHH ***"<#
M)H **.M(SJBEG8*HY))P!0 M%(K!E#*05(R"#P:6@ HHHH ***"0!DG% !11
M10 4444 %%-#HWW64\D<'N.M&]-P7<N2"0,]<4 .HHHH ***,@$#/6@ HHHH
M **** "BBB@ HHHH **** "B@$$9!R** "BBB@ HHHH **,@YP>E!.!D]* "
MBBB@ HHHH ** 01D'(HH ***8\T4;*KR(K-]T%@"?I0 ^BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "N#U:]U6
MV^+-B!<0+IL>CSS21OO/R"2/>< XW=,'TS7>5S>K^&[F^\5:?K-M=0)'%;2V
M5U;S0E_-AD96.TAAM;Y>IR.: , >-?$4/AZU\6W>GZ>N@3M&YMT=_M,4$C!5
MD+?=8_,&*@#CO6M\3I[VV^'&N36$PAE2V8E\L"%[[2.AK.3P'J[Z-;>&;K6[
M>7PW;NF$%J1<R1(P9(F?=MP, %@N2!VKJ?$VBCQ%X9U+1S,8/MD#0B7;NV$C
M@X[T <.S>)?^%FQ1V2Z8;]O#L1GFF\SR4 GDQM4'<2>.X[_2II_B7+;^'-.E
MN(].L]5N[Z>P=KJX*6L+0LPDD+'!*_*,#@DL!FNBTGP]?V_B)-;U*^MYKG^S
M$L)%@A**2LK/N&6..& Q[5EMX FCL8&M=2CCU.TU2YU"VG>#?'B9F+1NF>5*
MM@D$'@$4 6/!WC0:_JFH:3-=:7>7-I&DRW6ES;X94;(Z9)5@1R"3U!KF_&<6
ME2_%>T&KZ!<:U;C0V*V\%K]H96\\?/M[#&1GW]Z[?0-)U6SNKR]U?48;B:X"
MJEO:P&*"!5S]T$DDG.22?3I3SH#'QRGB+[0-JZ:UCY&SG)E#[LY]L8Q0!P'A
M"ZTVUUO6O$VA:9/I/A>STZ2.\MWPADN8VW$B$,=A5 0<X)ST[U9TWXIO+<:1
M-=WOAV6WU.>.'[%97F^ZM3)PA?G#X) ; &,]\5TUUX+CE\2ZAJ$-P([#5[-K
M75++9Q.<%5D4Y^5@"0>#D>]5=,\)^(+0Z997&NVK:;ISJ5:"S\NXN%085)'+
M%<=,D#)QVH YRU\6KX6LM71'LTNK_P 47D$4M]-Y4$0&&9W;T '0<DD"KL7Q
M*NS9:TD+Z1JMWI4$=Z9=-F+PS6Y;$@QDE)% )P2<\>M:<W@"7RY9[;4HXM13
M6)M5M)G@WHOF#:T3KGYE*D@D$'H16OHNB:G%/?7.N7]O=-=1B(6MK 8K>)!G
M. 22Q;/))]!B@"*;Q//-XA-AI-M'>PPZ6;^5@X4L6.(8U8G +8<Y/8"N?L/'
M]^/$FCZ;?7GAVZ_M&0Q26VFW!DFM'V%AN.XAA\NTG"\]*N:/\.5TWPCK>AR:
MI-+)J:& 787#Q0B,1Q)C/(51^.3ZTRV\$:P;G09+K4=+A@T>X65+>PL3$LN$
M9"6)<X;!XQP.>O& "@WCOQ.OAV[\2G3]+&E65W)!+#OD\Z5$F,9=3]U2/0YS
M@].!6II4^L/\7->AEG@:PCLK4B/Y\JI,NW;S@'(.[UXJ63P-(_P^U#PQ]O4/
M=S32BX\KA?,F,N-N><9QUK230+RW\=3Z];WD(M+NUC@N;9X27S'O*,CAL#[_
M ""#TH Q_%L?]N>-= \,73N-*GAN+R[B5RHN?+VA(R1R5RV2.^!6C;>"='T7
M7+?5]&1=)6*-TN;>U0+%<H1QO4<94\@CFK'B7PW)K4EA?6%\;#5M.D9[6Y\L
M2+AAAT=<C<K#&>0> :HVOAC6+_7;/5?$^J6MU]A#_9;.QMVBA#LNTN^YF+'!
M( Z#- &1_P )QX@7PTOC%]/T\>'B1(;;<_VH6Y;;YF[[N<?-LQT[YJ?4_%GB
M4ZIXF@TBSTO[-H2)*TETS[IPT(DV +T/7D\=..M-_P"$!U4Z$OA5M;@/AE7
MV?9C]J,(;<(2^[;CMNVYQ6W_ ,(JPN/%4HNUQKB*BCR_]3B 1<\\],]J ,K3
M/%VNS:IX<DO[&PBTSQ C&W2%W:: ^495WD_*V5!S@#!/>J%MXY\2_P#"*+XM
MN]/TU='CE(F@1G\\Q"389%.=HQUVD<@=1G%=$GA-T3PBOVQ3_8"X;]W_ *[]
MP8N.?EZY[UQOA'POKFN> ;/2[W4X8]#GFD>:W-JPN=@G8F(/NP%)&<[<X.*
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
M@W$;J4>/&>,Q[5SD_=H N7'B_7H],TJXN6T#1A=62W4MQJ=QA/,;GRD3<&)
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
MGG X/:M;2M%M?%.K^)+=-=LM1CN]+6VGETRP\FV$NXF-]XD<-(O7CH,<\8H
M]4DN;>*XB@DGB2:;/E1LX#/@9.T=3@=<52M?$6B7U\UC9ZQI]Q>)G=;PW*/(
M,=<J#FO.=#U2[\06VL>)M3T^:=]$TE]-^R*2K2W(7=<[2.020B@CT-8D&H6\
M]_X%-OJ.@.J:A"$L](MCFU1HV&V24NQR20NTA2QR>U 'L#^(]#CNHK5]9TY;
MF5BD<+72!W8$J0!G)(((QZC%5;7Q9IMWXNO?#D<T7VNTACD/[U<N6W94+G.5
M"@GTW"O-+G2[$_"+QO>&TA-T=1OY/.*#?N6<[2#U&,<5U>ES65M\7]6AG:&.
M[O-,M'ME8 -+M,V\KZX&,T =%K.OMI6MZ#IXMQ(-4N)("Y?'E[8V?.,<_=Q5
MA_$>AQW45J^LZ<MQ*Q2.%KI [L"5( SDD$$8]1BN>\8?\CGX&_["$_\ Z3O7
M%W.EV/\ PJ'QM>&TA-T=1OY/.* ON6<[2#U&,#% '=/XR:X^((\,Z>=-=88E
MDNI)KO$A)+92- #N90N3DC -;UIKVCW][)96>JV-Q=Q9\R"&X1W3'7*@Y%<!
MJUE<7'B;QL-,B']I/X=@^SLBC?YC"<?*?[QZ9JD]YX;U"P\%67A?[*=6M[ZV
M80VR@36T2_Z_S0.5&W<&W=2>] 'I3>(M#29X6UG3UE16=D-T@954D,2,\ $$
M$]B*;_PDN@_Z5_Q.]-_T3_CY_P!*3]SSCY^?EYXYKRU]-LH_A'XWOUM(1>27
M>I;I]@WD><PQNZXP!Q70WF@:3#\1/!D,>G6JQIIUWA1$,?*(MN?7&XX^M '<
M?VQI?]F#4_[2L_[/(W"Z\]?*QG&=^<=?>LO5/&FB:?X6OO$$%_:7UI:H3FVN
M$8.X'" @XW'TKS9KNUTRSDM6M-.2$^+;Q8+G4=PM+)E!(9E4@'.2%!(&3GBJ
M4SK>VGQ,"7=GJ)DTFWE$UE:^5#(5$H+(-S;@.FX$\CVH ]@LM;74-2MX[5[.
M:RFLS<K+'=*SEMX7 0=5Y/S>HQ4]EKNCZE=RVECJMC=7,7^LA@N$=T^H!R*\
MOU^0ZO?7+^&94G:;P=<"V:U/WCYR@A<=^"/K5J:]\-:G/X*MO"1M7O[:]B<I
M:J!);6P1A,)<<H"."&QDXH ]#_X2/0_M<-I_;.G?:9B1%#]J3?(02I"C.3R"
M..X-75NK=KM[1;B(W*(':$.-ZJ> 2O4 X/->-2:98I\$=;O5M(1=G4+B;S]@
MW[UO"%(;KD  5ZU%<:2WB&XMXOL_]KK;H\V(\2>42=N6QR,YP,T 0ZYK)TLV
M%M!$LU]?W*V]O$3@="SN?945F_ #O5>77+N-KD"+3SY6HQ6B[KY1E&VY)XXD
M^8X3J>/6L[6\K\4?"C2_ZIK6^2/T\W$9_/:&_(UQ^H?Z_6_^QVL/Y6] '=WW
MB:XT[2K_ %.:VMGMK"^,4_D7 D9;<8#2' ^5EW;BA[ ^U=(K!E#*05(R".]>
M;Z>\,?@_XC/<8\D:AJ._/IY2YKJ=$>XLOAYISW,,LUS#I49DB0D.[B(94>Y(
MQ]: +T/B+1+C4CIL.L:?+?*2#;)<H901U^4'-6OM]GY%Q/\ :X/)MBRSR>8-
ML17E@QS\N.^>E>%+J5K<:=X-:VO= BC75;)TTW3;=GFM%,@!\Z5G)!&=IRHR
M3WK;OM=TW2O"OQ&T>]NDBU.>\OFALV_ULJR1#8RKU*XYR.  <T =Y=>-],@\
M0W.B1S0274.GF]'[]<.>2(P.N[:-WT(/>IO#GB[2]?T_36%]91ZE=VD=RU@M
MRK2Q[T#8V]>,]<5Q#RV-IXO07)ABFN_"*+;EP 99%+E@I[L%_'%16^F6-EX
M^&MQ;6D,4YOM.<RH@#$R(=^3UYR<T >F7.O:/9W\=A=:K8P7DF-EO+<(LC9Z
M84G)IUWK6E6$ZP7FIV=O,Q51'-.J,2V=HP3WP<>N#7E@N_#MEX>\8Z=XC%M_
M;EQ>79:"=09[G<3Y!B!^9AMV!=O3':M/PII N/'*MKEK'<:E:^'-/5VG0.4E
MS)O//?*]: .QMO$]A%I\4^L:AI=A)+)*B*;Y"K!'*Y#$C)QC([$XJ[#KND7%
MA+?PZK8R6<)Q+<)<(8T/'WF!P.HZ^M>2V_BC3]%\$6&F,^GQZI?W]^MO/?A?
M*M4^TR;I6+>G9?XCCWI^M0:';>&_#T?AW5K&?1[/5?,U.]=!=1^<R-MEG56&
M1O(ZD 97L * /6K36-,U"Q:^LM1M+FT3.Z>&=7C7'7+ X&*33=:TK65D;2]3
ML[Y8SAS:SK*%/OM)Q7DLEOIVH0^+KF;75O[&2Q@CO)]#TT+ '$FY7SYCB1E'
MW@/X>M;G@K4A-XW>V6XT/6B=.).KZ3'Y910XVQS*&*9.21@YX/% '7ZMXLTW
M1_$6DZ+=31)<:COVEY578%'&03GYC\H]3GTJIH'C?3-6A5;R[L;*]DNI[>*T
M>Z7S)/+E:,%5."<[<\"LWQA+8V?C_P %W=^88H=]U%YLH 7>T8V+D]R<X]ZX
M^;3+%?@MXGO1:0_:VU"[E,VP;]ZW1"G/7( &* /6]1UO2=(,0U/4[*R,IQ&+
MFX6/>?;<1FKRLKJ&4@J1D$'@BO(M8D:Q^(_B*75-:T;2X[BW@^R/J]CYZS0"
M/#K&QD4</NRHR3D&NV^'5L;3P'I<(N)YXPC&)Y[<P-Y9=B@V%F( 4@#GIB@#
M.T_Q3XKUI]0DTO0=*>UM+Z>S#3ZB\;N8W*YP(B!G'K6QX=\5V^LZ#<:E>1+I
MCV<\MM>QS3*5@DC;##?P".G/'6N"T'PC=ZYH_B:?3_$6KZ;>G6;Y85@NV2#<
M)3C<HYP>Y!S6=>3V\_@;0(K6WATF#3-9\O6X+B)KE+:<!OGF!8%T+E6W%NX)
MZ4 >H:IXKL;?PAJ>OZ7<6NIQ65O)*/L\ZLC%5SMW+G%7+CQ!I6GVEK/JFI65
MA]I0,@N;A8]Q(!P-Q&>M>37PBN=.\=7UKKEEJ:G0FBN'TRP\FU9P&*DN)'#2
M!20<=B.>U3W3O8^.-2FU/6M'TJ*?3;46<FKV/G)+"(_WB1L9$ ._)*\DY!H
M]>6\M7N%MUN86G:/S5C#@L4SC<!UVY[]*BFU?3;:"XGGU"TBBMFV3R/,JK$V
M <,2?E.".#ZUY7;(/"W@GPSXLCEN+FWTN65)6:V,#-93N1@(68A5;RRN3]T4
M^[0Z%X<\,?VI;:<FHZI?RZA<7VJ%OLUI<.C/\Z@@%L'8H) ^6@#TZVUW2+RP
M:_M=5L9[-6VM<17"-&#P,%@<9Y'YTVVU_1KQKE;75["<VH+7 BN4;R0.I?!^
M7'O7B5[+'=:5\2 +ZUO4EBTUO/L[?R(9?WC!F0;FR.,;@3DBO1-0TVQT_P")
MOA6.SLX+>.2POH76*,*&11%M4@=0,GB@#?\ "OB>R\6Z)'J=BRA&=U:,2*S1
MD,0-V.A( ./0UG7?B?5K[7+W2?#.EVUV]@56[N[RX,4,<A&X1KM5BS8()Z 9
MJE\)I[-_ EO;6[Q?:;66:.ZC7 :-_-?AAV.,=>U5-&UG3O!7B7Q)INOW<=@M
M_J#:C9W-R=D4Z2(H*ASQN4J003GD4 =-H'B"XU&"^35M.;2[S3Y-ERKONB(V
M[@Z28 92/H1T-7[#6])U6*673M4LKR.+_6/;W"2!/J5)Q7GOB?Q$?%?AJZN;
M>PFD\-6FJ6GG7(#$7MLK@SD)C)13CGD$ ^E+=W>CZKXVM;GPM+:SQ0:1=KJ4
M]C@Q[&5?)1F7C=N#$#J #0!WL?B30I9V@CUK3GF6+SFC6Z0L(\9WXS]W'.>F
M*DM]<TB[L?MUMJMC-9[Q']HCN$:/<2 %W XSD@8]Q7E5KH>EGP;\+LZ?;GS;
MRW:0F,9<M;R.V[URP!.?2H?&$-E:IX^AD@"V/V[2'EAB3@@M'OP!W('XT >N
MZ?K.EZMYO]FZE9WOE';)]FG638?0[2<5%:^(M$O;]K"TUC3[B\7.ZWBN4:08
MZY4'->?:EJ>CW?BF/4?"\4.H6]CH=Y_:*Z<<+)&54PPEDZ/D-@=1S7.PZA;W
M%SX%^SZCH#(FHV^RRTFV.ZU1D88DE+DYR0N"%+'Z4 >Q2>(]#BNH[636=.2X
ME<QQQ-=('=@=I &<D@@C'J,4^+4)&UJ]LY!;+!!#'('$X,F6W9W)U4?*,'OS
MZ5Y3<Z78-\*O'UVUG"URVI:C)YI0%]RS':0>HQCBG^,H;Z[N?&J60D:9M(TP
MR!%+,T7FR&3@$$_)NR.XR* /5-.UO2=7:5=-U2RO6B.)!;7"2%/KM)Q26FO:
M/?WLEE9ZM8W-W%GS((;E'=,=<J#D5YCIAL]1\6Z3+:>(=.U(P65QOAT'2_*(
M@,>-DCB5MGS;2JD9W#M53PM>VEEJGA6RL+W2-=MUD,5O$+?R=1T]?+8,T@0D
M84<-N R3WH ].\3^*+#PK96US?.@%Q=16R!I%3[[!2W/90<GV%6KWQ!HNG"
MWVKV%J+@ PF>Y1/,![KD\_A7-?%#[/'X;L;JZ""WM]6LI)9'&5C03+N)]!CK
M6/:ZEX:T_P 7^)Y_$D]A&EY'!)8S7>WRY[/R5&V(GAANW95>I/2@#TU6#*&4
M@@C(([TM<I\-8+JW^'^EQW4<L; 2&*.8$.D)D8Q YY&$*UU= !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %)@9SCGUI:X/QGXLO]$U^WLC
M?VVC:=);>:-1N[&2XCDFW$>42K*$P "23SGB@#N\+C&!C/2F^5&9/,\M?,QC
M=CG'IFO-KVZUK5/%7@"Z&HZ8AGCN7<6R-/"S"/YF5MXR"IP./E.3ENE2_P#"
M5>*+KPO>>,[-M-&DVYEECTUX&,LMO$S!F,N["N0K$#:1T'- '5:GX=?5M<T^
M\N=0E_L^Q=9DT]8U"-.N=LC-C<<9!"],@&MVN#M_$NNZKXKU**RFL+?1-,CM
MKF5I8&>::.2/>5&& 4X!YY[<=:YVT^*=[+9VFM/?Z=+#<3)OT:*TE\Z.%F R
M)LX9P"&(V@'D"@#UW:N,8&/3%-,49D$A12ZC 8CD?C5#7[ZYTW0;V\M!:_:(
MHRR&[E\N('U=NP'7\*XG0_'%Y/XJMM*.M:;K=O=VD\PGL[-X!#)&%. 2S*ZD
M-V.1CGW /1]JXQ@8],4V8Q+!(TY00A27+XV@=\Y[5YIIOBWQ8V@^&_$E_)I;
M66J7-O;2V45NX=!*VP2"0N><D';MQ@XSWIGB+5O$GB+PCXNO;"73X=*M4O+)
M;62!FDG6-621_,W *<AMHVGH,]: /3X_+\I?*V^7@;=O3'M2X!(/!QWK+TE9
MG\)6*VTJ13FQC$<CIO56V#!*Y&0#VR,^HKS/PMK'B:P\$^#;&PNK"6XU>>:)
M9)[=OW*!7?)P_P [ JQ[9X''6@#V#:.>!SU]Z0HI*DJ"5Z<=*\_USQ)K.EWR
MV%UXDT'3IX[:-AFU>>6[E(.XB)7#1IG@?>)YJ&R\:>(=?C\)1Z:MA:2ZU8W$
M]Q+-$T@A:,H,HNX9SN/!/<<\<@'H^T8 P,#H,4$ C!&17F\WC/Q#:>'M2\Z.
MV>]T[6!IUS?06DDD<<)17\\PJVXX# %0>O/2D?QSJ</@;5]8L]2T76I+2>!+
M:>V#1[P\B*5ECW$QL-QQSSP<4 >D.B2(4=593U5AD&F.\$?EP.T:^9E4C8@;
ML#. ._%<+_:/C5?%G_"-MJ.CF2>Q^WK>+9/B !]C1B/S/GY*X8L.,\'BJUEX
MFOM87PA)=6NG_;[B_O;228PEA$\23+OC!.1G9R,]"1[T =CK^@6^OZ!+I#2&
MWA=XVW1*/EV2*^,?5<?C6JD:1YV(J[CDX&,GUKB?A4M__P (@SWMW%<!KVZV
M;(2A4B>0-DECG)R1TP..>M9>M>.-6LO$NH6+ZEI6D-;S*EE:ZG;2*E\FU27^
MT;@JY)8  '&.<T >DB*-9&D$:AVX+ <G\:4QQM(LA12Z\!B.1^-8.EZW=7OC
M'7=)E6(6]C!:R1%0=Q,@<MDYY^Z,<"N8TGQEKWB*R\.V5BUE;:EJ5M/=W-S)
M"SI#%')L&U-PRQ)'5L#F@#T)Y((YH_,>-99#L3<0"W? ]>F:D9%8@LH.#D9'
M0UYEXC;Q0;_PG%=C3QJJ:S+'!<*K>3+'Y$F)2F[(."?DW=1UP:Z7POJVK3:[
MKFAZQ+:W,^F^0Z75O"8A(DJL0"A9L$%3T//% '1[K;[65S%]IV;B.-^W.,^N
M,U-7!>*/$$^C>(]:EM;2S-Q9^&9+V.>2(F0LLC80G/*9&<>O>B#7/%5KJOA]
M-1N-,>#75D18H;9P;.00F1?F+_O!\I!X7VQ0!V<%Y8274MG;W-LUQ"/WD,;J
M7C!]5'(JSM7!&!@]1CK7CWA:\U30=%EEM_[-N-6UK7Y[&&9K0Q['\V4R22,'
M)=<)D+QC@9/6M_5/%7B#PS_;-AJ,MC>W4.CS:G8W<5NT2L8^&21-Q[E2"#R,
MT >@QQI$@2-%11T51@4N!G.!GUKSRXUWQG:1: DDVD-=:W=;$46[[;9#"SX/
MSY<J1[9QCC.17?7_ !LL?B: 7NC^;X=_>-.;-_\ 3 8A*%V^9^[X."<MG(X&
M.0#TL@$@D#(Z4T1QK(9 B!VX+8&3^-<%J_C&\"Z9(NM:1H=O>6$=TIN8S<SR
MNXSL6(,IV@?Q<Y/%83Z[K7BJ#P)J4=W:6LTFJW$,@%J[(TD:3+OP74X*J?E/
M(+=>,$ ]9CDAF\P1O&^UBD@4@X;N#[\BG1QI$@2-%11T51@5YQ'XHOH+G4=.
MTJRT^'4;WQ)+80R&(A %A21YI #EVV@CJ,\>E/U?Q=X@\,1:[8:@]C>7MII3
M:G974<#1HZAMC+)'N.""1R#R#VH ]&  Z#%0L;:VVAO)B\Q\*#A=[GT]37'V
MNL^);#Q1H=GK$VG3VVM)-B.W@:-K5TC\P#<6.\8R,X'//M6AXQO?L<GAP?9;
M:?S]9@A_?Q[O+RK_ #IZ,,<'W- '2[5P1@8/48H**6#%06'0XY%>87'B[Q<O
MAW6O$L<FE+9:1>W$/V,V[E[F**4J27W_ "''3@\C/? ] UC5HM&T"^U>5&>*
MTMGN&4=6"J6Q^E %\@$@D#CI3(I(9T8Q/'(@8J2A!&0<$?7->8:3\1K][[1G
MN=2TV^34IXX9K"ULY4>S\S[I$C$AP#@-D#U%5+'Q:_AOP]':V\MO;W&I:_J,
M8N;F-GC@19G9G*K@L>@ R.3R: /7<#.<<TBQ1H[.J*&;[S <GZUYE#\2KJVT
M[6D9[75KFS6#['=00O!'.TS^6%=6)VE6()P>0>U:>MIXSMO#VM1WE]IEQ ^F
M32"[@MFB:"0#E-AD.X%=V&R"",D'I0!W>%*XP,']:,#(.!D5YCINJ>*H;3PC
MX?TV[TSS;S1S<O=36KXB5!'M 4/\QPVT\C).>.E:2:WXLUE-9OM(GTN"VTNX
MEM8X)[9W:[DBXD)8./+4MD#@GN: .[>..1"CHK*W52,@TQI((7CC9XT>3Y8U
M) +8&< =^*X&U\6:]XHUJQL]"DL;"UN]$AU1IKF!IGC9W=2@4,H/0<]L'KD8
MCL/%5UJ<WA.74;*P-VVHWMI<2K&3Y;0QR@O%DY7=L]^"10!Z*J(@ 554#@8&
M*8YM[5);A_*A4#=)(V%&!W)KBM"UCQ?KNG6'B*V_LTZ=>2AAIIB99$MBV-_G
M;L%P/FQMQVI?BY%=3?#Z[2WGACC,]NLRR0F3S%,R# ^88Y()ZY (XSD '96U
MQ:WMJD]K-#/;ODK)$P9&Y[$<'FFK80+J4FH!2;B2)82Q8X"@DX [<GGUX]*X
MZVNO$%QK%WX<T6YTFP31X(?M-P; E9II 7"I$) $7')Y)R:SU\:^(]6;0=/T
MZ+3[34;V>]M+UYD:2.&2W(!9 ""0>< ^HYX.0#M]:T:/6(K4^:8+FSN4N;>9
M1DHZ\'CN&4LI'HQK2VKZ#KGI7G%WX@\8M=>*(;6ZTF)/#\44C.]J[FY<VZRL
MN-XV#.[GDX('8DVM,\2^(CJWAB;46T]K#Q#&Y2VAA8/:D0F5?WA8[^!@_*.>
ME '5ZYHL>NV"V$\A2U>9'N(U7_7(IW;">P) SZC([UIU3TU=12V<:G);23^:
MY4VZ%5V9^4$$GG&,^]<3XJ\6ZCIFK7]O%KVB:=]GC#VUK) UU/<G;DEU1P8U
MSP.">_M0!WZPQ(6*QH-QRV%')]32F*,OO**7QC<1SCTKSZV\6>(?$%]X?M-*
M-A9?VGHO]I32SPM-Y)W("%4,N[EL<GW]J9;^--=N;.UTE%L1KTVL3Z6;GRV\
M@+"I=IMF[.=H&%W=3UQ0!Z#O@DG,6Z-IHP&*9!90>AQVS@_E2RRPP(K3/'&F
MY54N0!N)P ,]R2 *X7PK'JL/Q,\21ZO-;SSK866R:WC,:R)NFP2I)VG.0>3T
MSWQ6AJ4IU'XF:3I4G_'M86,FIE>SREA%'G_=!D/U(]* .H1K:XD+H8I'B8H6
M7#%&[CV/M3I988 'FDCC#,J!G8#))P!SW). />O/;/Q/=:?=7%PMI90Z=_PD
MTVGWIBB*MAPJQRDYQNWE0Q/4$=,5KI--XSB\5:=*L:Z7%(;"UD4$.957,CYS
M_"Y &.A0T =:8T/5%/X4!$"E0JX/48ZUA^"=8FU_P5I&J7'_ !\3VRF4CNXX
M8_B0:X:\^(>IV$\5P^M:'<2?;4@GTBTA>5HHVD"<W"L1O ()RH&>* /54C2)
M D:*BCHJC %)'%'""L:(@)R0H R:Y>U\27LZ>,"R0YT>=X[;"GD"!)!NYYY8
M],<5SFDWNLZQ\0/#&HO>VT:77AO[5+"+9B,,T)=0=_!+$8.#@#&#UH ])CD@
MNX4EC>.:)OF5U(93[@U)M7&,#'IBO'?!VK>)-!^'/A?4VGTY]*>6"T:R\AO-
M\N278'\W=C=D@[=N,=ZZL:QXHUV[UN;0I]-M;32KE[2.*ZMVD:ZE0 ON8.NQ
M<G P">_M0!VLD4<H DC5P#D;AG!HBFBF#&*1) C%&VL#AAU!]QZ5YW:>,?$'
MBC5-)MM -A90WFCIJ4LEW$TIC/F%&0 ,N>>,^Q/I4^GZG?MHNN7UI?:/HD%C
MJ]\MS++8M(CJCXWG$B_.>23SDGI0!WX '0 4;5Y^4<]>.M>9/XW\1Z3X-AU;
M6!8I/J=^EMIQ>V>(1Q,"1+,@=C]U2VT'/09YX?8>/M3,NK6-M);>(;B#37O;
M2:TM)(-[J<&)D).3R",'D9'6@#TA(HXX_+1%5/[JC _*B2*.0 2(C '(# '!
MKAO!?BR[UO53;OKVD:E'Y!>6&.V>TN;:0$?*8G8EEY//&#CKFE\=)J;^*O!J
MV-]!;JU_(,26YD^;R)#DX=<C&1CU(.>,$ [>.6&<.(Y$D"L4?:0<,.H/O[4Y
MXTE0I(BNIZJPR#7DEC?>)M)TGQKK.F7&G)9Z=K%]<&VGMV=[C:0SC>&&P8&!
MP>:UM;^($G_"0#2K34[+2(XK.*YEN+NU>X9VD!*QJJE0  ,DD]P * /1=BXQ
MM&,8Z=J7 )SQD?I7/^"_$4GB;PZE]/$D=PDLD$OEA@CLC$;TW<[6&",^M<%:
M:SXA\.:/XRU.*YLKR=/$"P)$]NR!G=H$)SO.!M8 #'!&<GI0!ZZ$522J@$G)
MP.M-DBCF39+&KKUPPR*X;6-9U_0K>QMM5\0Z!8O,9&DOI(&YQC;''#YF6/)R
MV>@'&367;>/]<N_#D$MH-/GOSX@&C^>T,D<4J%<B383N7JI(R>A]: /4  !@
M# %,2*.)2L:*BDY(48%<.GB'Q+I=]K^E7B6NKWUEIBZC9&U@:$S;BZ^6R;FY
MW)Q@\@^M5_"WBK4]?NY+2#Q%HMW*]JSM&;*2">SFXP#"SYD3DYY4\#GF@#NK
M>]L;N66&VNK>:2W;;*D4BL8CZ,!T/!ZU3\0Z%%XATEK"65H5,T,Q= "<QR*X
M'X[<5Y+X7\03^$_ _ARW2YTRVN=<>5_MLEDV(8XR2QD"MF5R6 'W1\W/3G<?
MXCZI%X>UU[9[+4;W39;06]VD#PPW*32JF"I)*L/F!P2.0?:@#U%(TC!"(J@G
M)VC&3ZTBPQ)G9&BY.XX4#)]:I:-%JT-AMUJZM;F[WD[[6$Q(%[#!8GCGG-<+
M_P );XHF\)2^-X&T[^R$WSKIC0-YKVRL06,N[ <@%@-N.@H ]!EO;&&[CLI;
MJW2YF!,<#2*'D]<+U-6, '/&37G/AZSN;WXN>(=1FGL9XXK>T:+=9'S%C=9"
M@1RYVD#[QQ\WHM7-=34V^+?AD07T$=M]CNF,3VY8D!HMXSO R00 <?+@\-G@
M [6V-L\9EM3$R.22\6"&.<'D=:>L4:.SK&H=OO,!R?K7C_AK5O$GA_X<V>MQ
MSZ<VDP7K1M9- QEDC>Z9&;S-V V6.!MQ@5L:SX_N?^$EU;3K35]-TN/3&6)1
M>6DD[74I4,02K#8@R!GD]30!Z4RAE*L 0>H/>FM%&X7=&C;#E<J#@^U9?A?6
MSXC\,:?J[6[6[W,6YX6_@8'##Z9!Q[5KT %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %<_K&A:K=ZH+_2]>>Q+0>1-;SP?:('&20P
M0LNUN2,@\C&1Q705R.O:]KT7C"RT#1(M-WSV4EV\E[OP-KJN!M_WJ (8/A^N
MG6?AV/3-5DMYM&EFD$KP*XF$N3*"O 7))QCI44OP^N3876B6_B":#PY<R.\E
MBMNID5'8L\:2YX0DG^$D XS5O2O$6MQ>+E\.>(+6P$T]HUW;W%A(Y4A6"LK*
MPR#\P(/2M6U\6^'KW53I=KK-G->@E?)24$DCJ!ZD=P.E #=.\-V^G:SK%\LF
M^/4D@0VY3"QK&A0#/?(-8UEX'U*PMK72X?%%VFA6LJO%;1PA)]BME8C.&SL[
M= 2.,U>TKQ;!+8:U?:O+;6-MIVI36?FN^U2J$ $DGJ<U>MO%6@WFGM?V^K6D
MEJLJPO*)!A'8@*K>A)(Z^HH /%/A^+Q1X>N=)EG> 2E'655#;61PZDJ>",J,
M@]163%X/U";Q#8:UJFO&ZGLX9H$BBM!%%MD4 D#<2&R 223G &!72S:A9V]Y
M#:37,4=Q,CO'&S89E3&XCV&1D^]9FG>,?#FK:@+#3]:L[FZ8$K''*"7 Z[?[
MV/;- %!/!,:>$M#T#[<Y32I[:99O+&9/)<, 1GC.,>U4]1\ W=Q#K%CI_B"6
MQTK5VDEN+86RR,KR#Y]CDC:K'DC!ZG!&:V9?&WAB"]2SEUZP2X>0Q",S#(<,
M5(/H=P(Y[BH;/QEI]YXWOO#"R1"XM88Y ?,RTC'=N4+C^$*"?]Z@#<L;46.G
MVUH'WB")8@Q&,[0!G]*Y/1? +Z2-$C?6'N8-&NIIK5#;A3L>-DV,0><;R=V/
MPK6UC7I]-\4>'-*CBC:+5)9TD=L[D$<1<8^I&.:)?&WAB&]2SEUZP2X>0Q",
MS#(<,5(/H=P(Y[B@"C/X0OD\1:IJFEZZ;%-5$?VM#:K)("B; 8W)^7@=PPSS
M3=!\"Q:&_A\K?O,-&MKBV0-&!YBRLIR>>"-H'O[57?QL]S\2/^$9L;K3$AMX
M5DN3.S&61_FW)& 0 55<DG/6MS3?%WA[6+]K'3M9L[FY )\N*4$L!U*_W@/;
M- &=+X-G7^TI;#6[FRNKO4QJ*2QI\J,(U3RW7.)$(7D''4>E4I?AXU[9ZR=0
MU;S=0U9[8S7$5J(D58'#J @)Y/.26)Y]JVAXU\,FXF@&N6)EAC:251*,HJML
M)/IAN*C'CSPH5N6'B#3R+;'FXF'&3@8]>>.,T 7#H2GQ>GB#SSO6P:R\G;Q@
MR!]V?^ XQ618>!HK%]'87[O_ &9?W5Z,Q@>89_,RO7C'F=>^*V#XFT-=$36C
MJMH-,?[MT91L8YQ@'USQCKFLG4_B#H5IX3U+7K&^MKZ.Q4YC27:3)CY4/&5)
M]Q0!=\+^'9O#5O=VG]H&ZLY+B2>WC:$*T =V=E+ _-RW7 K,UKP7J.K#4[-?
M$<J:3J9)GM9[83M'D ,(G8_(#C@8.#R,5IZ;XACU34X1;7FGR6,M@+I0DI,V
M[>5+8Z>7P1GKD5+IOB[P]K%\UCIVLV=U<@$^7%*"6 ZE?[P'MF@#*G\&74&L
M/?Z'KDFF+/:Q6ES&;=9MZQY",I8_*P#$9.1[57M?A\VEZ9HL>E:Q);:AI$<L
M,5V\ D66*1MS(Z9&1G!X(.16P?&WA@7L5F=>L/M$KF-(_.&2P8KM]CD$8/I5
MW7]9M_#V@7VKW17RK2%I""VW<1T7/8DX'XT 8=MX)=+K3;V[U>>[O+74)+^6
M5T $KM$8]JKG"* 1@#/3WS6O8Z$MEXEU?61.7;48[=#$5P$\H.,Y[YW_ *53
MM?&NAOX8L-<N]2M+:WNT7:6ER/,Q\R+W8@Y' [5L:=J=CJ]DE[IUW#=6S_=E
MA<,IQU&1W]J ,+7?!T>N7^I737K0F^T=]**B/.P,Q;?UY//2K5UX;2YNO#TY
MN64Z,Y=1L_UN8FCYYX^]GO4FK>+?#^A7*V^J:O:6LY7?Y<DGS!?4CL/<\4Z_
M\4Z#I<44M[J]G DT7G1,TH_>)D#<O]X?,.GK0!CMX#A_L$:>FHS17,.I2:G:
MWB1C=#*TC./E.0PPY4@]0>U1S>!)]2CU:;6=::\U"_TY]-2:.V$4=O"W)VIN
M.23@DEN< <5T%IXCT:^ALIK74[6:.^9DMF20$2LH)*CW !XZ\5;2^M9+^6Q2
M>-KJ%%DDB!RR*V=I([9P?RH R[OPVEW<^'YC<LO]CRF11LSYO[IH\'GC[V>_
M2H6\*1M)XH?[6W_$^4*WR?ZG$(BXYYZ9[59FUM++5]0CO;S3X;&TLTN')D(E
MCR6!9QT"848/J#6A)J%G%<6MO)<QK-=[A;H6YEPNX[?7 YH Y2'P->Z;J,=[
MH^NBUE-A!8W!ELUF+K$"%9,L-AY/'S#VJ*'X=R6>B:9966N31W.FZA+?6]U+
M LA/F;]RNN0&XD//'TK0O?&^CRVMPFCZWI$M["(G99YR$5&D5"6*Y(/S8'N5
M]:OWOB[P]IVIC3;S6;."\RH,3R@%2W0'L">V>M &3/X"CD2\DAU*6"^DU=M6
MMKE(P3;R%%3;M/#J0""#C.:BNO ,NJ6NLOJ^LM=:CJ5E]@%PEN(TMX<YPD>3
MU8Y)+'.!TK?U3Q/H>B74-MJ>JVEI/,-R1RR!21G&3Z#/<\5C>&/%=WKUEX>N
MI3I\/]I03RRP;V$A*, /*'0@9^;)XR,4 :U[X?2\UG0M1-PRG23*53;GS-\9
M3DYXQG-/UW0EUM]+9IS%]@OX[T87.\H&&WVSNZ^U16_C'PW=:A)80:W9274>
M[=&LH)^7EL>I'<#I6-HWCVW\1:?:W6GSZ=$7U0V<L<\Y)*;G"[,#EV"!@#QC
M/- %B3P1%)X.UGP]]N<)J<UQ,TWEC,?FN7(QGG&<5T5[I]OJ&EW&G72>9;7$
M+02KTW*PP1^1K/N_%_AVQU4:9=:U90WN0IA>4 J3T!]">P/6EU3Q;X?T29X=
M3U>TM94"EHY) & ;.#CKV/Y4 96G>$M7M)-.ANO%5U<:;IS!H8(X1#)(%&%6
M:13\Z@=L#..<U&? *QV$*VNJ2V^H6NHSZA:WBQ ^6TS,60J3AE(<@\C/'2NM
MMKF"]M8KFUFCF@E4/'+&P974]"".HK$@\3V5K;7,^L:GI<")?3VT3QS87"9.
MUBV,2!5.X#@8H I2>"Y]3TS5+;7M<NKZ6_$8#1+Y,=MY9W(8H\D!@P!))).!
MVI8_"-_>23R:[X@EOR]G+9Q)# +=$6089RH)W/@#GH.<#FMO1]>TK7[=Y])O
MX+R.-MCF)L[6]".H_&I6U;3T:^5KR%6L%#W0+ >2I7<"WH,<T 8&B>#I]+O=
M'N[O5C>2Z98R6,9^SB/?&Q3;G!/($8'OFH;KP5?+/JD>D^(9=.T_596FNK<6
MRR,KN,.T3DC9NZ\AL'D8K>N->T]+""YAO()/M<326>'R)P$+_+ZC:,_2L7PK
MX_T;7[#2HY=3L4U>\MDE>SCEY5RH8J,]QGIUH NZ7X2M-'UN&_LY&2&'2XM,
MBMRN=J1NS!MW<_-C\*I6/@6*RN-+E^W,_P!@U"[O@IB WF<."IYXQYG7OBM"
M#Q%;6]AJ5[JVH:;#;6EY)!YL<QVH 0 KEL8DYY ]L5G:QX[TZ#0K;5=)O+.\
MMVU&WLYY#)\L0>0*Q;IM(!SS0!!:>!+NSAM]+B\0SKX?MYQ-%8K"%E #[Q$9
M@<E >V,XXS6_XET-?$F@S:6\Y@65XG\P+N(V2*_3WVX_&ET?Q+HOB S#2=3M
MKQH<>8L+@E<]"1Z'L>AJAK/C+3]%\5Z-H-Q)$LVHASN:3!CQPG&.=S<#Z&@!
MFH^%[XZ]<:QH>L_V9<WD217:O;">.79D(P!(VL 2,Y(QC(J/3? MKI5SH4T%
MY,[:6;EW:4 M<R3_ 'W8\8.<GI[57T3XBZ/=F6WU74K"ROA?SVL<!EP2$E9$
M)R>"VWOU/2MS5_%&A:#-'#JNJVMI+(NY4ED .W^]CL/<\4 53X50S>)Y/M;?
M\3Y55AL_U.(1%QSSTSVI%\*1JWA<_:V_XD*E5^3_ %W[@Q<\\=<]ZWXI8YXD
MEB=9(W4,CH<A@>A![BN%TC7O&GB!+^YTZ'0([:WOI[1%N/.WGRW*Y.W(YQ0!
MU.@1ZI'8S#5YC+.;F8QEE12(MYV A>/NX]_7FL*7P3>+J6LRV&O/:6>L2>9=
MQ"U5Y0VP(?+E)^4$#NIQVQ5KP]XQ@U'PQ<:MJ_D::;*XEM;PM,#$DD;;25<X
MR"<8^N*=?>,M.?PAK.MZ)>6M^VG6TDI17R RH6 8=1G% $>@>"TT.\TFX%\T
MYT[2CIB@Q;=Z[U8.>3@_(!CWJO+X"0PSO;ZG+;W_ /:TNJVMTL0/DNXP4*D_
M,I4D$<9SVK4N?%VC:58V,VL:E:V4MU"LJQR/@G(!) ZX&>M:,.K:=<7,%O#>
MP22SP?:(51P?,BR!O7'4<CD>M &/H'AB[TK7=1UF_P!8;4+R_ABB?]P(D01E
ML; "<#YNA)YR<\U%K%G+8^.-&U^*-Y(9(7TR[VJ245V#QO\ 0.NTGMOSV-:U
MUXCT:RM[J>YU.UBBM)1#.[R ".0@$(?]K!''7FH;3Q9H%]IMQJ%MJ]I):6S!
M9Y1(,1$] W<?C0!0/@NVDT+Q!I4UR[QZQ=371<)@PL^,8YY*E00?44HLG\&>
M FL]/66]O(8BL1"_/<7$C'YB!TW.V2>PSZ5;L_&/AN_DNX[36K*9K2-I9PDH
M.Q%ZM[J/4<4SP;XJM?&/AZ+5;;8A9F62%7WF(@G )P.<8/XT 6/#FAIH/A33
M]$W[Q;6RPNX.-S8^8_B<FN47X:WO_".6_AX^)6&EVDJ26T<=DJO\CAU$C;OG
M''8+D\FM.Y\0ZYJNOW^D^&;:P"::52[O;\N4\UAN\M$3!) (R21C.*O:)KFH
M-;:BOB2RCTV;3GQ+<JQ^RS(5W"1';''J#T- &=J'@B\N-0UE[#Q!+8V.LX-[
M;BV5VW;!&2CD_+E0,\'VQ4UKX,DL+_P]=V>JM&^DZ>-.E5H PN81LSW^0Y0'
M(S6KI7BC0M<$W]F:K:W1@7=((WR57U(ZX]^E58_'?A26?R4\0Z<7\KSO]>N-
MFW<3GITY^E %.+P-%%X(TOPU]O<I82P2B?RQE_*E$F,9XSC'6FW7@V_2]U-]
M%\02:;:ZI(9;J#[,LI60J%9XF)&PD 9R&&>:UK7Q9X?O-+EU.WU>T>RAD$4L
MPD 5')  ;/0DD=?6I-)\2Z)KLDT>EZI:W;P@%UBD!(!Z''I[]* *.D^#[/1-
M8M+RRE98+72UTR. C/RJ^[<6[G\*Q=1^'$]W$(8->:& ZK/JDD+V@DCE>1MR
MJP+#(0Y(SP3@D<5T-GXS\-:CJ2Z=9ZW93W;$A(TE!WD=0IZ,1[9IMWXV\,6-
MW]ENM=L(9Q(8BCS %6!P0WISQS0!1N_"6I:KIIM]6\0M/<PW$=U8W4-HD36T
MJ9PV,D,#G!![9]:?'X5U.X6_?5O$][//=6WV:,V0-JEN,YWJH8_O,_Q$]..E
M:BZHRZ]>VLUS8+:V]K'/CS")DR6RS@\!,+P<]FIND^*=!UZ>2#2M6M+N6-=S
M)%("=O3<!W'N.* ,O3_"5ZOB&SUK6M974;FQADAMO+LU@QO #,Y!)8X'L!D\
M5=\2^'9M<?3+BTU V%YIUS]HAE\D2@Y1D92I(ZACWJ2P\7>'M4U(Z?8ZS9W%
MW\V(HY02V.NW^]COC-:5[?6NFV<MY?7,5M;1#=)+*X55'N30!@?\(='_ ,([
MXBTC[:VW6IKJ5I/+YB\X8( SSC\,U'<>$+N#4H]2T/63I]X;2.TN?,MA-'.L
M>=C%=PPPR><]#TK5T_Q/H6J65Q>66JVDUO;<SR"0 1#&<MG[HQSS2:3XHT+7
M6E72]5M;MH5W2+&^2J_WL=<>_2@";1-,?2-*CM);^ZOY@6>2YN7W.[,23[ <
M\*. ,"N<NO +W!UB$:PZV.I7\6H>0;<$Q2H\;'#9Y!\L#&.,]ZUK7QKX9OM0
M@L+77;&:ZG ,4:3 E\C( ]\<XZU)-XN\.V^KC2IM9LTOMXC\EI0"'/13V#'T
MZT 5-9\+W5YXEMM?TS5%L;Z*U:T;S;43HT98-P-RE6R.N?PK/L_AZ+6)4DUB
M>Y?^W%UII)8EW-(% 93C P2,\#CIBMQ-;C@O-:-_>Z=%9Z>8SN$I#Q*4#'SL
M\*<GC';%9FF>-['6_&$>E:5<VMW9'3Y+IYHVRR.LB+M([##9Y'I0!;O_  JE
M_K>HZE_:%S;O>Z:NG_Z.VQXMKNP=7!R#\_Z54T_PC?#Q!8ZQK6M+J-QI\4D=
MKY=FL!^< ,SD$EC@>PYSBM/3_%OA[5=1;3[#6+.YNQG]U'*"6QUV_P!['?&<
M4ZT\4:%?ZJ=+M-5M9[X!V,$<@+ *Q5LCV((_"@##B\ "TT+0K2QU62WU'12Y
MM;[R0P(?.]70G!4@],@\ YI]QX*N]1T?4+75?$%Q=W-[/!*TGE[8HA$ZN%CB
MW$+G;R<DG.3TK>U?Q!I&@1QOJNH6]H)21&)7P7(ZX'4X]JB/BK0!I,.JG6+(
M:?.Q2.Y,P",P!)&?7"MQ[&@#7KA6^'DYTV708]?FC\-2R%FL!;KY@1FW&(39
MR$))_AS@XS716OBK0;W3;G4;?5K62TM?^/B42<1?[W<?C3M-\3Z'K%[+9Z=J
MMI<W,0+-'%("< X)'J,\9'% ":?H,>G^(M5U9)B?M\5O'Y.S C$08#![YW?I
M4&K^'9M0\1:/K5KJ!M)]/\Q'0PB19HI"NY>2-I^08(Z4ZU\9>&KUK@6VN6$G
MV:$3S%9AB.,_Q,>@'(_.I=+\4Z%K<<[Z;JMK<BW7=+Y;\HOJ1UQ[]* ,G_A!
MHO\ A AX5^WOL$OF_:/+&?\ 7^=C;G\.M.O/">H1ZQJ&H:#KS:9_:6UKN)K5
M9U+A=HD3)&UMH /4' XK0L?&'AS4K^.QLM:LI[F5=T<<<H)<8SQZG!S@<U6U
M+QGHT*WUG9ZSIG]JP03.L-Q-A5:,'=YF.0H*G/? /I0!LZ78#3-+MK$7%Q<^
M1&$\ZYD,DDA'\3,>I-6ZP[[Q;HFC0VW]KZM96TTT0E"^9G<,<L!UVY[U1U3Q
MYH^FZOH%D+JVEBU<L4N!,-JH$)5AC[VY@%'UH ZJBL:[\6^'K#5!IEWK-E#>
MDJODO* 03T!]">P/6MF@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "O/O$>@PZ[\5=+BNQ=K;)H\[>9;3R0D-YL> 70@]">,_RKT&LV]\0
MZ+IMQ]GO]8T^UGP&\N>Y1&P>AP3F@#SW3]#E\+>(];T...6:XU>QE;2=7G=I
M)00IS;O(2<;3AATR.N36%I$?VK1O#6A/K&HM>VEQ;$Z5#I*)+:21D%F9R!A0
M0<MGY@>^:]>M_$>AW:.]OK.G3+&5#F.Z1@I8X4'!XR>!ZFM.@#Q34;*_17OP
M]Q;V5GXNNY[B5+;SC$I7"2^60=RACUP<9SVK7TK1;?Q=>>)O^)K>:E%>Z?':
M/?&R6W@:0%F0KC!=T)SG'&0,UZI10!Y1H]SJVL:1XA\4:EHTEQ?6NE_V7#82
MH?WSHFZ?CN'D...H2LZWOI=0USP2\>K_ -H107JAH;33/(M[,&%U"%B"P/8*
M6Z Y'2O4X?$V@W&H?8(-;TV6\SM^SI=(9,^FT'.:U: /(I]-_P"+0^.%%F?/
MGU#4),>7\SD3':??@#'TKI=.N$M/BQJ4-SYB27^EVGV8F-MLAC,I<!L8R,CJ
M>]=Q10!QWB>*1_B#X'=8V9$N+PNP&0N;9@,^E<G/IN/@_P"-U%F?/FU"_DQY
M?S.1,=I]^ ,?2O7"R@@$@%C@ GK2T >8^(--U'4=8\:V]@DGVFY\.V\4)'&]
MLS94'U.<?C3;G4]-\1-X/T[P_;2B\L+^":6/[,T9L844B17) "Y'RX[Y[UZA
M10!X_+II3X%^(U2T87,]S>,P$?SOFY8 ^I^4#\ *ZN]TZ%/BKX>>.T416^E7
M2HRQ\1X:(* >W!8#ZFNUJ*&Y@N3)Y$\<OE.8Y-CAMCCJIQT/(XH \A:YGTG2
MP/LT%M"?%5\W]H75JTR6(W.5D" CDYVACP,U4D6[U&#XC,EQ=ZFUUHT)AN6L
M_(%SM$H/EJ -P'3/)/J1BO;JBDN8(9H899XTEF)6)&<!I"!DA1WX!/% 'E&L
MI/XFO-1DT+S)?M?A!H8'",F]_.8%.0,$X(JY<ZIIOB.3P?I_A^VE%Y87\$TL
M?V=HS8PHI$BN2!MR/EV]_>O2[>Y@O(%GMIXYX6SMDB<,IP<'!''4407,%TKM
M;SQRA':-S&X;:RG!4XZ$'J* /))=.*_ [7E6T87$E]<RE1'\S,+L[6QUS@#!
M] *])\50R7'@_6X(4:262PG1$49+,8V  'K6O10!Y1INK6-KJ?A/Q#>^8='B
MT1K%;AH7*VMT"F[<,97(4KN]L=ZZ/P*IN-6\3ZM:P20Z3J%\DEF'C,?F%8E6
M24*<'#,.O?&:[2B@#RK6=6G7Q5XCM/M2:.[B-$B@TPSW.ICRQA@S94CDH %.
M,<U%X&LV?5/ LD]LV;;P[.,NA_=R;XEQST.-P_.O6J* /*'TFYD\->+;FS@*
MWNF>(Y=3LEVXW-&L;$#V8;U_X%74>  VH6%]XGF1EEURY-Q&'&&6W4;(5/\
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
M+EG>...6"0.H!),3JX'XE<?C3-1\,6>JZX-1NV9T.GS:?);D?*\<K*6R>O\
M#C\: .&TCQWJSWFBS2WXU#^T)XXKJQBTB>$6HDZ,DK##!21G=U&2,5T7Q-N)
MHO"26T4SP1W]];65Q,AP8XI) KG/;(R/QJ73_!EY:2Z=%<>)M0NM.TYP]M:E
M4C)VC""1U ,@ [<9P,YKH-7TFRUW2;G3-1A$UI<)LD3./<$'L0<$'L10!QOC
M'3O#&D^'3IDWA6\DL%@9Q<:5:(3:!.=X<D%6&,YYZ<T-K>O:UXJL=+T+48;/
M3Y-&@U,SW5L)96W.R[<;@ 2 ,GM@XZU9E\"ZM=6;:9=^-M6FTEE,;P>5")G3
M&-K3!=Q!'!/4^M;=CX8M-.UZ/4[9W18M-CTV.#JJQHQ93D\D\X_"@#@/$OCS
M5-)35KV'Q!I\D]A,VW2K6Q>X0QJV,2S#[CD<GH%/%=#+J'B?6?&&MZ1I>IVF
MG6MA#;2I(]IYSLTBL=O+ 8^4Y/7IBHY_AHTVA7WA]?$5[%HER\D@M8X8PZ%V
M+D&3&64,<XX/8G%=-IN@1Z=KFI:J+AY);^.".12  OE*P!'UW4 >>VVJ:MXG
MU_X=:P;N&U>YM[II(D@W+N50),$GHPX']WWJ&3XD:I=6U]J]E?*OD3RK;:0-
M)FD^T1QL5^:<# =L'&.!P#GFNNM_ *6-GX<BLM6N()M#:012^6C>:DGWU8$8
MY'&1TIK^ YHTNK*P\17]CHUW,TTME"B;E+MN=8Y<;D5CDX'3)P10!B:GX]NK
MOQ'?6%KJ9T>"QBA(+:5+=O-))&),-M&$50RC'4G/-=GX1UJX\0>%K'4[NU-K
M<RJPEB*LN&5BI(#<@'&1GL15*]\(S_VQ<ZGHFMW&DSWD:1W2K$DRR[!M5\..
M' XSW &16WI&F1Z/I-MI\4UQ.L"[?-N)"\CGJ2S'J22: //--\9ZQ)XBM[74
M]6M-.O9+TPOH]]8O"IAWD Q3\B1R,$=B3C JI:3>)+"R\=ZOI6I6EM;Z?JMW
M<"WEM?,-PR1JS!FW#:,  8&<YKJ&\!2S"&RNO$%[<Z-#=+=1V4L:,^Y7WJIF
M(W%0WXXXS6DGA*W31O$.FBYEV:W+<2RO@9C,J!"%^F.] '/ZWXKNOM5BJZ_9
M:/#<6,=RD26K7EU([=O+'1!QS@DG/3%9NFZ]=>)+CX=ZG>J@N7OKZ.38A0$I
M%,F=IY7.W.#TS72+X(FL]2-[I.NW-@\UI!:7.((Y/,6(%492P.QL$^H]J72?
M 5II$6AQ17US*FD75Q<0F3!9_.#@ACWQO//M0 WX6_\ ).-*^LW_ *.>N.LK
MSQ)HWASQ=KNG:A9Q6FG:S?S"SDM=YN LQ+;GW KW P.W?/'IGAS0XO#>@VVD
MPS/-'!OP[@ G<Y;M_O5G-X,MF\,:YH?VN7RM6GN9I)-HW1F9BQ ^F>* ,;Q'
MXFO(=9-K'XBL]*C^S)+#!#9/>W,K-G)=%^ZHX P,GGD4WP]XUU._C\)W^H+!
M'9:U;S02[$*B.Z0DJ<GH&5'X/<"M5_!D\.LWNH:9KUU8#4(XDO$2&-RQC38K
M(S [#M^OK44GP\LI/ $/A+[;<K%;MO@NUP)8V$A<$=L\E?H30!S]U\0=3&EZ
M=.)HK5=<U"X%E<&T>;R+.,</Y:<N[8!';Y^>!6]X*\2WFK:CJ6FW4S7L5JL<
MD&H?89+7S5;.59' ^92.HX((Z5HZGX1M;S3]*@L;F;3KC2"/L%S  3$ FPJ0
M1AE*\$'K5C0]"N-+GN[N^U:ZU*]NBN^24!$15& J1KPHY.>Y[F@#%\7Z_<Z=
MK%M9+K]EI,#P&3BV:ZNI7W8PL0Z)C^+G)XXQ6-I?C;7-:TG1+"WDMH=5U&^N
MK5[Q[9@J1V^XLXB8@AR ORD\$G/I74:CX5N)_$CZYIFLS:==36RVMP%@24.B
ML2I&X?*PW'U'M5"W^'=O9Z7;V]IJU['>6E]+?6E\P5I(VDSO5@1AP02#D#-
M$.IZKXJT*TAT^XN+"YO=0U**RL+XQ%0$=2S/)$#C*A&Q@X/'2H]=USQ+X+T/
M4+G4+BSU)6>"*PN?(:-A)(^TB2-,Y5>&&WD]/>KS^ DNK2X:]U>\GU::ZBNU
MU *J-#)$,1[$QM"@$C!!SN.>M$O@*/4K?4/[;U:[O[R\2-%N558?LXC;>AC5
M1A2&^;)SGZ<4 8^D>,=6_MG^SXKEM>6>SFECD_LN6S,4Z+E4)8;2K\@'J".>
MM)X0\7ZEJ6MV=I>ZY:/=2Q,UWI5W8/9W$#A<XBS_ *P Y!R3QSGM716OA2\>
MZDN-9\17VHL;9[:-$5;=$5^&;"8R_'WNW8"H+/P3.+_3)]5U^[U.'2]QLXY(
MD1@2A3<[J,N0I/ISR<T <]X>\9ZQ>:[8VNJ:O:6=_-,R7.BWMB]N47G'D2G(
MD;IZA@3TXK8^+$=U)X%D^S70@Q>6F_,>_<#/& .HQ@D'WQCO4L/@.8R:?!?>
M(+V^TS3KE;JUMIHTWAT)*;Y<;F"D^Q.!DFMSQ+H4?B70+C2I;B2W$I1UFC +
M(R.KJ<'@\J.* .=2]\2ZUK^IZ3I^K6MDFCI#%-<-9B1KJ=XPY.TL B $<#G)
M/-;?@_79_$7AJ"_NH4ANQ))!<)&24$D;LC%<]B5R/K6?+X/ODOY-1T_Q'<V5
M_=01Q7\JV\;K<LB[1)M(PCXXXXZ<<5/9^'9]"7P_I^C7$R:=9R2F\$C*QG#(
MQRQ(R6,C!N,#K["@"SXNU2XTC07NK:]L+)O-1&N;XG9$I."0H^^V.BY&37$6
M_CK4XO\ A)+>/4TU-;/1)-2M;N33WMB'7<-I5L!UR <CW%=SXF\.IXCL[2,7
M<EI<V=TEY;3HH;9(F0,J>&&">*QY/ +7=UJ=YJ.N7=W=:CI<FF2NT2*J(QR"
MB@<8R>#G.3S0!3L]9\3V.J>&)=4O[.ZM=<)CDMHK7R_LS&%I%*ON);[N#GZC
M%<WXHU#Q'XE^%VK>(%OK2/3+@N(]/^S_ #"!9=H8R;L[_EW=,=L=Z]'N/#4%
MP^@,;B0?V-()(\ ?O#Y31\_@V:P+_P"&QN],O-&@\07MKH=S*TWV%(XSY;,V
M\JKD;MF[G;^N.* -[QFL[^"-;%O.(9?L,I#E-V %)(QGN,C/;.:\]T^UUM]8
M\"06FIP1W3Z!,3=/:[O+B_<D )NP6'RC)/J<=J]7O[*/4=.NK&8L(KF%X7*G
MG:P(./SKGM%\&G2KO2+F?59KV73+.2RB+Q(FZ-BF,[>X" 9[]Z .9N?'NKZ5
MX<NXKR2VDU.'7?[&2\6V<I@J'\XQ*220A/R@\D"M3PEXIO;[Q+-I$]V^J6IM
M?M$=\=-DM"CA@K1L& !R"""/0YK0N? EG<VFI1&\N8YKK4QJL-Q'@/;3A552
MN000-O<<@D5=T?P_>6.IS:EJ6MW6I73Q"! R+%%&@.>(UXW$]6.3V&!0!E^)
M=2\0/XPTO0-$O;:R6[LYYY;B:W\XIL9 "JY&<[L<GOGM6*GB75(;C4-+L$L8
M=1N_$9TZ.Y^S@*JBW21Y74$;WP"!D^G85V\^AQ3^*+/7#,XEM;66V6, ;6#L
MA)/N-@_.N6\2>&8M.TZ[NH8M3NI;G65U+SK!0T]D^P)O1,'S  H!7!R&/I0!
MF>(-0U^"V\8:!J][;7MO%X;ENX9X[?RG;<)%.X9(R-I'''2K>F7_ (FT>;PI
M%?:C9W%IJ\?V<P1VNPVK" NA5MQ+_=P<]>V*J:'X<O/$.K^);J]N-6:SU'2E
MTT7>H6PMY'8E]QCBVKM10RXR.3D\UVUQX:@N)- <W$@_L:3S(\ ?O#Y31\_@
MV: ,#X5PWL?A^_:[O5N0VIW84"'9M83N&.<G.3SCMTYK&DU6_P##/BGXAZY+
M=+<PV=O;2"V\G;O)C/EC=G@#.#QSG/%=OX<\.MX=;4(X]0EN+2YN7N8H)(U'
MD,[,S@,!E@2W?IBJ=YX*MK[6=8NIKR5K+6+5;>]L2B[7*J55@V-RD ]N] &<
M^H^)_#E_H<FM:A9ZA;:I=+9S10VOE&VE=25*-N.Y<K@[N>]:WB_6;[3(M,L]
M+\E;_5+U;.*692R0@JS,Y4$;B%4X&1R15:S\&7 O].GU?7[S5(=,;?9P2Q(@
M5]I4.Y49=@"<'CKG&:U?$.@0^(+*&)KB6UN+:=;FUN8<;X95SA@""",$@@\$
M$T <1XYA\36G@O4X-1N[._075BUE<B+RF9C<1Y61!D8!Q@CL:V+;5?$.D>+#
MH^J:A9:A'<:9->PR>1]F$4D;*"I.6^0[QR>1CO4LW@,ZA;7AU76KJ\O;M[<M
M<&-45$AD$BHB#@ D')Y)S6EK7A.SUW4VN[J:4*^G7&G/&F!E)MNXY[$;>/K0
M!Q-CXZU)=7T('7[/5EU"[2UNK>UTYT@A+JQS'/T;!&,$DL,GBIKKQ%XNDT?Q
M3KEMJ-C#;Z'>W4<5JUIO-PD)R0[;AMXX&!VSWXVH_ 5RXT9;[Q'=W,6CSQ36
MD0@CC7Y!@;\#+';QG(QD\5H_\(?;?\(_K^D?:I?+UF:YEDDP,QF88('T[4 9
MBZQKWB3Q!?66C7UMIEOIUO;O(TMMY[32RIO"GYAA N.G))/-<ZGQ$U:71?#T
M%U<PV-_J+7;W5W%9O<"%(92@"1KDDDX&3P,$]Q5_7+631O$<DEH/$=B9;*&%
M[K2K,727H0$ ,NQO+D7H&.!@^U2^&? EU%X-\.^9=7&E:YIOGO',NV5D69V9
MHY <AQ@KGW&0: -?P1XCO-;;4[2\9KC[#*@BOOLCVPN4=<@[''# @@XXZ'O6
M_K:3R:%?K;3B"8P/LD*;MIP><9&:PI?#NKV7A_4ULM;O+G6[V1'^UR;%"$%0
M J?=1 H.0 2>>IQ74S1+/#)$_P!QU*MCT(Q0!XQHUOK+6GPOBM-1@6YEL;DQ
MSR6^1!$8(^-N[YF X!)')Y'&*V[WQUK.@Z9K%E?36UUJ5IJL&G07@MF"$3(L
M@=XT))*J6X7K@5T.B>!AI#:$9-6N+L:*LT5J)(D7]TZ*H0[1SM"]>IS4E_X%
MLM0?6))+NXCEU"[AO$EBP'MIHD549#C_ &<\^I% &9X5\57UWXG.D37KZK:2
MVS3)>G3)+0Q2*0#&P88((.01SP0<U#\0V=?%O@MH]*.JN+BZQ9AD'F?N#W<A
M>.O)[5TFD>'KVSU5]3U/7;K4[GR?(C4HL,4:YR3L7@L2/O'Z#%6=2T&+4M=T
M;57F=)-+DE>-% P_F1E#GZ YH X'2/\ B?\ Q+LGA\/P^';C0ED>\C=D$]PD
MB;5 "<-'GG=DC(P.:HI\3-4NM-DUZUO X$K&'15TF9_,A#[<>>!CS"HSD?*#
MQBO1M4\,P:CX@TO7(KB2UO[ LOF1@'SH6^]$X[KW'H>16.O@&6""33;/Q%J%
MKH4DQF-A$J!D!;>427&Y4)SP.<$C- '/7WB9_#6J>.=3MHU>XEO-/@@$J,5#
MR0(H+*OS$#).!R<8JUIGBK6[G5'TBTU+^U'NK*9X+Q])EM1;7"#*APPVLC9.
M.XQ[UT=]X&L-1;73/<3C^UI8)MT9"M;R0JH1D/J"H/-3Z5X<O[;5EU+5?$%W
MJ<T41AAC,:PQ("1EBB<,QP.3T[ 4 9&F^,;O79/"D%@$CGOX9+K4@5R88XAL
M=,=B92%S[&N<N_'VJ6;PW@U_3[V3[='!/IUE8O) D;2A,?:1QN (.3@$\8KM
M]&\%Z?HNM:UJ<+RN^J-S&Y^6%269E3T#.[,?<UBCX:R'0K?0G\27ITNSD22U
M@6"-2NQPRAV RX&/;U.<4 0W.K^++^\\6-I^IV5G;Z),1 CVGF--B%9"K'<,
M#GJ.>?;FOIMWJ.M_$GPYJPO$@BN_#GVIK<0[L*SQ%D#9[D@Y[8Q786_AF"W_
M +?Q<2'^V93))D#]V3$L>!^"YJE;>"Q8WV@7=GJD\+Z38C3V'EHPN81LX;(^
M4Y0'(H J?$C_ )!_A_\ [&"P_P#1HK/N=7\67]WXL;3]3LK.WT28B!'M/,:;
M$*R;6.X8'/4<_-[<]=K^@Q:_!8Q33/$+2^AO5* '<T;;@ISV-0P>&8+<>( +
MB0_VS*TDF0/W9,2QX'X+F@#@GN[K5O'/AWQ!<7$*6[>'7U(VYM1)Y:YA9T4D
M]3GANHZ<U?\ ^$C\4V7A2R\:7EY926%QY,TVEI;8\N"5E VR[LEP&!.1@\C
MKIM/\'6EA=:5-Y\DHT_23I01U&)$.S+'W^0?G6;#\/=MK:Z5/KM[/X?M95DA
MTUT3HC;D1I,;F12!@>PR3B@"M9ZQXFO]2\2W:ZA:0Z9HUU/ EO\ 9=SS;80P
MR^[Y<%E['//M69;Z_P"-6L?"E\VI::W_  D02+R#9G;;;HC() 0V6.%.0<#)
MQQ7;6?AJ"SM]=A6XD8:O<R7$A('[LNBH0/P7-01^$;>.Q\,VHNI2N@%#$V!F
M7;$8OF].&SQ0!SX\3:YI]EXFLKW5-+^U:3<P1IJ5W'Y,?ERHK99 >64,0 "-
MQQ6=:^*=3U*^U?0XM;6_A?1I;R&^;3&MS&ZL%*@' =2&ZCI73:KX"MM3N=2N
MA?SP7-W>6U]%(BJWD2P*%0X/##CD'UI]KX+D&O/K.I:U=7]W+826$BM&D<8C
M9E;Y54?*05ZDG.?I0!R_AK4+G2]*^'45VUO<QSZ;++YAM@)(8UME950Y)!QP
M3_%4Y\3^*;?P=!XYGN[)K"01W$FE+;?=MW8 8EW9,@4@\C&<C%;^D^!ETY=!
M6XU6>\&BI+%;"2)%S$\8C"-@<[0.O4]ZJI\.P+*+1Y-<O)/#D,HD33&C3[JM
MN6,R8W&,'''7  S0!1N=8\67]QXLDL-3LK2WT2=E@1[3S&FQ"LFUCN&!SU'/
MS>W/:Z%J+:OX>TW4V01M>6L5P4!X4N@;'ZU2@\,00)X@47$A_MJ5I9,@?NR8
MECP/P7/-2Z9H<NE1:5;PZE.;33[);3[.57;,5"@.QQD$!>W'- &Q7D5O>2V/
MBGQM./!LNNQ1Z@KO-'Y)*8@C^4*YW'U^4'K7KM9.D:#%I&HZQ>1S/(VIW(N7
M5@,(0BI@>WRT ><:/K#^%_ .K^*K&"RCBUF_233[&!C)#;E]L>6V@<Y!9E4=
M1CK5ZU\67\UY/I4M^^KVMWI]PQN?[*EM#;2(F<'<,%6&<=P1WS70-\/M.-KK
M=B+FXCL-3G6[6",A?LDX(8R1'L2P#8Z9'I4]MX4O6N9+C5_$5YJ+_9GMHD\M
M(8T#C#,53AGX')X'8"@#B+#Q?<:?H?A#0+>^_LY6T"WO)[L6,EVV"H145%!Q
MDAB2?05KV'CC5VT^RO[I5-I;:O\ V??3FU>$3PR "*=5?E,.R CGO6R/ OV2
M#1WTG5[BQU#3+%=/6Z$22">$ ?*Z'@\C(QC!)JXGA"%_"VHZ)?W]W?'4/,:X
MNIV&_>_=0.$"X& !@8H Q[OQ5J;VWB2_MKS3;/3[*[CL;:XOLA%9<">0XY<A
MF*JO&2OO638>.-274-9LH]5358H-%FU&WNGTY[8K(AQMP<!UY!R/I72R^ [5
MO".GZ%#>W$4FGSI=PWF%9S.K%_,8'ALL6)!]:B/@62XU*[U'4==NKN[NM-ET
MV0F)$18W(.44#@@@GDG.?I0!EV6N^*;4^%-1U*_LKBUUV2.&2TCM=GD%XFD5
ME?<2Q&WG(P<\8JS\,(+^*TU\WE^MR/[9NU $ 3#B0[FZG[W'';'>MV7PK!+8
M^'K4W,@71)HI8FP,R%(VC ;ZAL\4_0?#K:#>:J\6H2S6M]=/=K;21J!#(Y)?
M# 9()/0],4 ;E%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 5
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
M)^RVMB/+9=OW V02% W$  Y[5HW&EW'_  J#QG MC+]HN+Z_D6,1'?(3,=K
M8R> ,'V% '?:QXMT'0+E;?4]2B@G9/,\O#,RITW,%!VK[G I=2\6:#I,5K)>
M:G"JW2>9 (\R&5,9W*%!)7!'/2N5CU"'PMXR\27.LVMVT6II;26DL5H\PE5(
M@C1?*#A@P)VG&=V:P9(+S2O$UOJUR=1\+V-UI$,,"V-FERML59BT#?NFV'Y@
M1@ $Y')% 'K-C?6FIV4-[8W$=Q;3+NCEB;<K#V-49/$^BPZ8=2EU&%+,3FV,
MK$@"4/L*GWW BLGX>6)L_#4C;=05;J\FN5%^B1R$.V=VQ0 @8Y8+@8S7&ZWX
M5O-7\6ZKX5-M*-(N6FUE)RIV"5X/*"[NF1*3)C\: /0=?\00Z=%-!!?V,-_%
MY$C+=ARBQR2A 3MYR?F"^^.U<WJ?Q)2.W\8I81PM=Z#%NB$@<K+A5+%NF &;
M;C/;-<VEMJVM?#[4]?U"PN8]3U*^L$^SM&=ZQP2Q+]WKC<)6^AS5KQ(LVWXF
MZ<+6Z-S>V\=Q;!;=RLR""-#M8#!.[C&<_E0!WND>,= UN]%C8ZG!->>7YGEK
MD;@.I0D88 ]U)K1U75]/T2R^UZE=QVT&X(&<_>8]% ZDGT'-<SJUDZ^,? K0
M6S"&W^U(Q1/EB4V^ #Z#( H^(%Y=6:Z*\,210F\/G:B;(W36(V-AU0 X)/R[
MN@S[T :]KXQ\/WNFWNH0:G$;:QYNF965H>,_,I 8?E3M,\6Z#K-\UEI^IPSW
M 4N$&1O4'!9"1AQ[KD5Y/J N6TSXC74TVI7<-QI%N8KR^M1!YX7S 2JA%^49
MP.,]^00:ZW[=!XF\1^$DT>PNX!I4CS7;2VKPBUC\ED\DE@ 220,+GA<]* .C
MM/'?A>^NX+6VUFWDDG8)$1NVLYZ)NQMW?[.<^U9\?BN]E?6%:33K86.MQ:?&
M\ZOAXV$1(X/WSO('09QFN!T>^@UCX0:=X6TVPNQJ\\J"-1:N$0BXWF?S,;=H
M )SG.>.M;&H6%XT>O[;2<[_%]G*N(S\R#[/EAZJ,'GIP: .[U#QGX<TO46T^
M]U:"&Y4J)%.2(MWW=[ 83/\ M$4NK^,- T*Y^S:CJ4<4X3S&C56=D3^\P4':
M/<XKC;748/#MMXITC5M&N[Z^O=1N;B"U6T>1-0CEY0!PI7&,*<_=Q45_J%]#
MXGU>UE:ZT,&*!88=,TL3RWX\L?\ +8HRG:24' P!VH Z/5O'=EI7B#1HI+NU
M_LC4+*:X6X&79V4QA FW[V0YX )XJ;4_&,'V#1+[1)[:\M[_ %6&Q=SD[58D
M-QD$,,=#T]*X+PW(="'@&\U33KP0VFD7<,T@M7<VKEXP"P )'0CIW],U;-G=
MWMY_;%O8W,5A?^+;2YMXWA96\M(PCS%2,J&8$\@<8/>@#O[[QIX<TS4FT^\U
M:"*Y0J)%.2L9;H'8#:F?]HBM+4[I[+2;R[B"L\,#RJ&Z$A21GVXKQV6UNM,@
M\3Z1J6I:]%->WMS(EA9Z;',M^DI.TI(8FY((4Y;Y<=L5ZA)9R6O@)K';,TL6
MF&'$A#2$B+')'!;Z=Z *EGXUTV#POH>I:U=PVUUJ5E%<"&)&8L616;:@RVT9
M]\<<UI6/B;1=2%B;+489OMPD-ML)_>;/OCV(SR#S7G$%Y?:;#X4MYGET6%?#
MMNIU&+2S<SO)A=UODJVS& V".3]*J:?:ZC8>#[G7H['49;_2?$DU\D4\&VXG
MAD(5\J !EDD+$  9'M0!ZG_PDVBFQO[T:C";:PG:WNI 21%(I *GWR1^=:M>
M+Z7X8U2PUS1]!DM9GLM66TU34YMIV+/#O>56]V?R?R->N6FI0WEY>VL:3*]H
MZI(9(BJL2H;Y2>&&#U% %RBBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH *QX/#EK#XDFUV2YN[BZ>,Q1)/+NCMD."PC7'&XJ,GD\>
ME;%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 4-;TBVU_1;S2;PR"VNXC%(8SAL'T-7D4(BH.BC I
M:* ,_0M&M?#VBVVE61D-M;J50R-EN23R?J:T*** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH ***S-=URWT"P%S-#<3R2.(H+>VB,DDTA!(50/H>3@#')H TZ*XVW\=,_P
MYL?$\EANNKW8D%E')]^61]B)N/N1DXZ9JYI&OZI_PD3:#KUE:6]X]J;NWELY
MF>.5 P5U^900REE^H.: .FHHKB_$OCU/#'C'2M)N[4'3[N$R3W@)_P!'^<(K
M-VV[F4$]MU ':45ASZ[)#XVLM!$*&*XL9KHRYY!1T4#'H=_Z5-;>*-!O-5?2
M[;6;":_0D&WCN%9\CJ, YR._I0!K45QL'C^RU.'6ETVYTT7&FWJ6V+F\54D0
MF,&3(Z EV4>K+COQNZAXFT+2;V.SU'6+&TN9<%(I[A48@]#@F@#5HK,U7Q'H
MFAO$FJZM9632_P"K6XG5"P]1D]/>EU+Q#HVCVL-SJ6J6=I!-_JI)IE42<9^7
M)YX]* -*BH;2[MK^UCNK.XBN+>4;HY8G#*P]01P:FH **XO7_'J>'O'>FZ'=
MVH&GW=N))+W)_<.SE$W=@I.!GL6%;#Z[(OCF+P_Y*>4^FO>^;D[@1(J;<>GS
M9H W**R;/Q1H.H:D^FV>LV%Q>IG=!%<*SC'7@'MW]*P[3Q_9:O8ZO+I=SIOG
M:??+;?Z1>*$="Z+YF1T#;F"^I &>: .RHK*U#Q-H6DWL=EJ.L6-I=2X*0S7"
MHQSTX)I=5\2:)H;Q)JNK65D\O^K6XG5"P]1D]/>@#4HK-U+Q#HVC6L-SJ6J6
M=I!-_JGFF51)W^7)YX]*N6MW;7UK'=6EQ%<6\HW1RQ.&5AZ@C@T 345R.G^/
M](:\U*TU?4-/TZ>WU*6R@CEN%5I54+AL$]RV/3BMS5O$&C:$L;:MJEG8B4XC
M^T3*F[UQD\T :5%9MYX@T;3[2*[O-5LH+:9"\4LDZA9% R2ISR,$=/6H+SQ;
MX=T]+5[S7-.@6[026YDN442(>C+D\CWZ4 ;-%5S?6@N8;8W,/GSHTD4>\;I%
M&,LH[@9'/N*@EUO2H4E>74K2-8IOL\C/,H"2X!V'GAL$''7F@"_16;I?B'1M
M<BFETK5+.]2$XE:WF5PGUP>.E8LGCS2KGQ!HVF:/?6&H"]N9()V@N YAVQ.X
M.!ZE,?G0!UE%93^)]!BU@:1)K-@NHDA1:FX429/0;<YS[=:=<^(M%LM0CL+K
M5;*&\DD6)('G4.SM]T;<YR>WUH TZ*J:EJNGZ-9F[U.]M[.W!"F6>0(N3T&3
MW]JP]9\9V5IH=EJVF7-I?6EQ?P6C3),"BAY K'([@'- '3T5FZ7XAT77%F;2
MM5L[T0'$IMYE?9]<'CH:AT_Q7X>U:_:QT_6]/NKI03Y,-PKMQUP ><>U &Q1
M7$Z/XXN-3N= B>SB0:I<W\#D,3L%NS@$>N=O/UK7\4>)%\-_V2\HA$%Y?K:S
M2S/L6)"CL7STXV=Z -^BL_3==TG6;1[O3=2M+NWC)#R0RJRH1ZD'C\:CTOQ)
MH>MS2PZ5J]E>RQ<R);SJY4>N >GO0!J455OM2L=,B66_O+>UC=MJO/($!."V
M,GV4GZ UE'QQX5%DEZ?$>EBV>0Q+*;I-I<=1UZ\C\Z -^BLS4_$6BZ+!%/J>
MJV=I%-_JFFF51)_NY//X5%<:Y%)!I5SIMWIT]K?72Q"5[D!74JQ/ED9#OE?N
M^@/I0!L45S6C>+[6Z\-S:SJTUKIT$5W/;EY90J?NY60<GN=O2M>SUK2]0TUM
M2L]1M9[%02UQ',IC7'7+9P,=\T 7J*Y6V\<:=J?BG3M*TB[L[^VN;>XEEG@F
M#F-HS'A>/7?^E;^HZG8:19M>:E>06ELIP99Y BY[#)[T 6Z*S8/$.C7.EC4X
M-5LI+ N$^TK.ICW$@!=V<9R0,>IJ;3=5T_6;3[7IE[;WEON*>;!('7(ZC(H
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
M=D9)'0A@4'<Y[U[#1C- 'D>G26_A6;P'>:G/=0:=%IUW;_:;^'RC&7,;1I(
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
M=N#N$;F/CY0QZ]!N!KVZ26.&-Y)'5$12S,QP% ZDGL*<K+(BNC!E89!!R"*
M//O OEWGBS6]4M]8;5$D@ABFN8+%8+:1U+$;6#'>X!P2!@ @9J;7;J/PM\1X
M?$>HK(ND7FF"PENE0LMO*DA==^.BL&(STR.:[P#'2B@#B9/%S^*9;_3?"J?:
M[8:?-OU-25C2<KB-$)&&;.2<<#CFN1-]I%_X$\->'='AV^([:XL\6BPE9K.6
M-U,TCC&5& ^6/7/?->R 8&!4<TT-M$TT\D<48QN=V"@=N2: /(-2T^$_#OXF
M2_95,\NJ71W%,LVW85_(Y(K>\164-GXNTI;6W2&-?#^H18C3 "@1;5X[#G K
MT6JTJP:IILJ1S*\%S$R"2)@P(88R#TH \@TO4-'U7P1X'T70E!UFWN+*=H4B
M(>WVX::5^.%8;N?XMPQG-5?$>K&ZT;QE9)<V.FRO-=*=(BL&FN[I@,"5F+<!
ML!MRKA1WXKV31M,BT71+#2X'=XK.WCMT=\;F5%"@G'?BKV.<]Z /._#%K#=?
M$":[EA65AX=L521USPQDW 'WP,U@Z?&=&^'&@>)HXF#:!J5VTJ*O/V1[F6.5
M0/92K#_<%>Q5B>(_#H\20P6D^H7$%@'S=6L07;=+D$(Q() R.=I&02* *G@.
MQGM?#$=Y>IMO]4E?4+H'J'E.X+_P%=J_\!K@=>U?S;OQC9"ZL-)F>22(V L&
MN+S4?W0"N"6QM;H,*0 ,G%>R=!@48YSWH \JT6[M[/6/AU<7C^6EQX?-K'(Z
MG#3$083/]XX-=-XX5FU#P?@$XUV,G Z#R9JZ^J4FKZ9#=O:2ZC:)<HH9X6G4
M.H) !*YR 20/Q% 'DWG:6=#UBSO+N[L;JP\4S7)N(+<2?8RTLABEE5N#$1GG
MGJ/K74_#W4IK_5==WOIVH1J83_;-A;F%;MMK#:PR064 <J<?,*[F.>&9I%CE
M1VC;;(%8$J<9P?0X(_.I ,=* /.=8U;1-%^,BW>LR10#^P46&YF7Y(R9Y,C=
MT4D=/7!'>L#2]-2ZO_#)ELB-+N?$E_=V4$L6 L!BD9#M(^4%@6 ]Q7J(T. >
M*'U[S)#</9+9&/C9M#E\^N<M6I0!X[XSM%9_B!;B#]RT6CH$5<#;YA! _"NE
M\06+1_$'1UTR)()WT6_AC:-0H!'E;!QV!/%=S#<0W$2RP2QRQMD*Z,&!QUP1
M]#1%/%/O\J5)-C%'V,#M8=0?0^U 'F/AC5O#0\.^%-!.G&XUJTDA5[%8RLUI
M.HQ),_3: =Q)/WL]\UA:==:=I@\#76L(%MHM1UAB[H2L3>:^UV] #CGMU[5[
M?CG-8^H:797GB'1M0FNMES9>?]GB#*!+O3:W!Y.!SQ0!YGJ6H0E?%&MV-C;W
M.AWVHV"13W$3FV61?];<E5P713LR1P2O6H'O'OO%6LS_ -KPZLLGA6\C%W:V
M?DPLP93L0Y.\@'/WCC/UKVOMBCI0!C>%@1X*T4$8(TZ#(/\ US6O(]%U#1]1
M^$F@>'M(4?\ "0FXMY(K=(B)8I1,&:<\<+M#'?TP<9[5[G(R)$[R.$0 EF8X
M 'K6%X0BT;3] M=(T?5(+^&PC$6])DD;&?XMO2@#SV^O/[.T_7Y)+2V='\7X
M-Q>QL\-H/+C(F=5(R 0!R0,D9-9UW_:&MZQXK33=3&K7-SX;*1W-K:>1',1(
M<I'@G?PV,Y/+8SQ7N5% 'FTVK^']=M;*P\,6@N-6BT^X2UD@4H=-S"5 DZ;<
MG:NT\YYQQFN5T;R;O3?"ND+KQ:\M+JW9=+M=("W-I(A&\R$N"JC#!F/4$\'-
M>YXHP,Y[T <?\2;>2;PS;N8)+BRM]1MI[^&-"Y>V60%QM'W@."1Z UBS7^F^
M(_'EC?>'7CN;>UTNZCU"Z@7]V58+Y41;&"P8,=O4<UZ50!CI0!R_PX39\-_#
MJE=I^P19&,<[174444 %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!7GVLP:Q<?%R"/1[JVM'.A'S;B>$R[%\_HJ!ER2<=3@#->@US&L>%KR]\31:
M_INM/I]Y'9FTVFW66-U+[CN!(SSCH1T_"@#&L?&FK27&EV%U':B\&N2Z3?/&
MAV.$A:0.@)RN1L.#G'(J?6O%FM65[XKM]/LX[I]+MK26VC6)G8F4L'8@'+!0
MN[ P3@CO4S_#]5T>VAMM6GBU6#4#J?\ :+Q*YDN&!#%DX&TJV-HQ@ <\40^!
M;D-K5S<>([UM0U5+<-=0(L)A:$L5* <;>0"ISD Y)S0!BV_BZ?4/#/B>3^V=
M%UVWM=*FF"?96@E5PC9CE@8G*' YX[CWJY::QXDU;6QHNDW&FZ?;PZ1:79E>
MU,I5GW#8JAU&WY1] .^>+K^ Y[^74[K6-9^UWU[IDNEI-%:+"L44G4[026;.
M.IQQP!FM;2/#,>DZS+J*W32,]A;V6PI@ 1;L-G/?=T]J .-F^)-Z?#OAPRO9
MV&H:K)<QSW3PO+% (&*.RH#DDG;@$\9YZ4Z'Q_K#Z)KBVJQ:G=:=);^7?064
MH1X9&PSF'.XM& Q*J>>.G-;:> %M=*TN&QU66WU'2[B>>UO1$&XF=F=&0G#*
M0V.H/R@Y%61X2U&2PO1<^)]0?4KF:.9;J']VD!C^ZJ19*[3_ ! YW9Y/3 !B
M:=XRU6X\/Z[>:;J&F>(Y;.!9+9;6%X9]YSE9("2<#&1@@G!&,U=\%^*+C6]4
MGMSK^EZK L&]ECMGM+F&3< 5:)B24P?O<8/'.:G3P-/<7&I7VI:[/)J=Y:+:
M+=V40M3"BMO!4 DEMW4DG(&.E6=,\*7<7B*+7-8U<:C>V]NUM 8[18%56(+%
ML$EC\H[@#G YH 3QEKESHZV*Q:KIFE03NXEN[T>8PP.%CB!&]B??@#H<URL/
MQ!UJ3P[?26SV-Y>VNLV^GQ7#6\D,<Z2E,,4)W*?GQZ=Q78:]X9GU/6].UK3]
M2%C?V4<D*M);B=&1\9!4D8/RC!!_.LR+X>82\\_6;BXDN]3MM3DDDB4'S(BI
M*\8&T[!CC@>M %.Z\6:UX4U#5[;79K34DMM'?5(9+:W,!RK[#&06;@DK@_6J
M>I1^)_[?\$SZW=V%Q%-J6\I;6[1F"0V\IV ECO7&>3@\>_'6ZIX1L]8UJXOK
MR1GAN-+DTR6W P"CN&+;NQXQ6;!X(U$ZAHT^H^)I[V'1YO,MHC;(FX;&3]XP
M/S-@_>X[\<YH O\ C?6M0T+0X[K3XLEKE(YY_L[3BVB.=TIC4@MC X'KGM7#
M^(-?NM;^%VO2+JVE:PL-S:"WN+,-$S9GC.V6,D[#GCKR.PKT?7M)N-6LX4L]
M3N-.NH)EFBFAY!(R-KH>'4@G(/L>U<[+\/#>V>L'4-6,VH:JUL9KF.V6)56!
MPZA4!/7G)))Y]J );/5?$6F^,+;1M9N;"^COK*:YB:VMV@,+QE 4Y9MRD/P3
M@\5S<?Q!U*'4=)9]<T:_:\OXK2YT^QMG=;<2-MR+@,5)4D=0 ><5W.K>&8-7
MUNVU&:XD58;.XLS$@QN6;;D[NQ&W]:Y^/X>7QTW2--N/$DDEEI$\$UI%'9I'
MGRF!42$$[^!CC;R<G)H YP_ZP_\ 90!_Z#76?%'[0?"4 M%1KG^T[+RED.%+
M^>FT'VSBK'_"#0[L_;G_ .0[_;7^K'WL8\OKT]ZTO%/AY?$^C?V<UY+9XGBG
M$T(!=3&X<8SQGCK0!S\_B?5_"NJ36OB*>UO[=M,N-0AGM;<PL#" 9(RI9LC#
M @Y]<UAZ5\1M0DN=&GN-1L+U=1GCBGT^VL94>T$G 82DD/M)&[(&><5UEMX-
M>XO[B]\0ZF=6FELWL47R!#''"_WP%!.6; RV>W %1:=X/U2S;3K:?Q3>3Z7I
MSJT%ND*Q2.%&$6613EU [8&<<YH M^.-;U#0/#Z7FF1P27;WEO BS@[#YDJH
M<XY'7K6&E]XU;Q7=>&3JND^8MDE^M^+!OE5G9/+\OS.>5SNW<#L2>.J\1:&G
MB#3X;1YVA$=U!<[E7.3'(K@?CMQ0FAHOBZ7Q!Y[;Y+!++R=O "R,^[/_  /&
M/:@#C1XWU&Z\):#J,VI:/HS7HE6ZN;@&3#HQ7$,6X%LD$]3M'K5./QE=:IX7
MNGNX[#4)++7[6R69[1D29&DB(D\MSE7&_CW (K;MOAY+IBZ/-I6M&"]TV*>
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
M.+3(YVG6.263S&7:3OD9\8]MV/PK)N? T-QI&L:>;YU74M4746?RQF,AXVV
M9Y'[L<^] '*S>)W\*_\ "7W4(B^T7/B*.TA:8,8XV>"+YV"\D !C@<G&*VO"
MGC"YO_$S:+/J%OJL+VIN([VWLI+;8RL T;JQ(.0000>QS5^[\"6UW#JP-]/'
M/>ZBFI03QJ UK,BHJE<Y#?<[]02*O:/H6IVNJ2:CJVOS:C,8?)CB2+R($7.2
MWE@G<Y_O$\#@8H J:YXHE\/^)/*O1&-*DTJ>ZC?'S>;"0SKG/0HP(X_A-8?A
M_P ;ZUJECH5G<P6T6N7&IRVU_&$.R.*)3([ 9R"4:(#/=ZZ/QAX0M?&%E9V]
MQ<20?9KD3;XQDNN"KQGV96(-)9^#K2S\<W_BA9W::[@$0@(^2,X0,X]V$: _
M[M '!6-SJ6J2_#NXLY;#3TEO+X""&T/EJRK."=H<=5!'U.>>E265YXETK2_&
MVLZ7=:?%9Z=J][<&VGMVD:XVX9P7##8,# P#S74Q^ 6M-+T&WL=7D@NM&N99
MX;@P*X<2;]ZE2?1R,YJ\/!\0\/\ B/2?MC[=;EN97DV#,7G+@@#/.* -.[GG
MOO#,MQ:2+;S36ADC=TWA"5SR,C/YBO)]%CUMK'X8+:WMH;N6UN3%-+;L5AC,
M"=5#9=@,\Y&21P*]BM[)(=,BL2Q9$A$);H2 N,UR^A^!9-(.@>=J[W:Z()H[
M8&W5"8G14"M@\E<9SWS0!B7OCW5M TS6;74FLKC4[+4H+""Z6)DA?SD5U=T!
M)&T%B0#SCBKWA;QC<WOB<:+/J-OJT,MLT\=Y;V4EMY;J0#&ZL2""#D$'L0:T
MM0\"6VH2ZS,][/%-J%U;WD,L2@-:S0HJHRYR#]W/([D5<TC0M4M=5;4=6U^;
M491#Y,4,<0@A09R6* G<YP.2>!T H QO&L2ZMXO\)>'[P;]+O)+FXN83]V=H
M44HC>JY8L0>#MK7F\):#!K>FZK;11:9>6S-&AM D(G5E(\IQCYQW Z@C(JQX
MD\.0^(;:W_TF:SO;.83VEY!C?#)@C.#P002"IX(K-M/"%]/K-GJ?B'7I-6:P
M8O:0+:K;Q1R$8\QE!.Y@"<$G R<"@#!_X2OQ1/X2N/&]O)IXTJ+S)TTQH&\Q
M[9&(+&7=PY + ;<=!4UYXD\3ZAJ?B5='NM.M;+2((;B)I[9I'GWP"38<. HZ
M\\GD<<5;?X>3'3YM#BU^>+PW-(SMIX@7>$9MS1++G(0DGC&<'&:V8_"L,5UX
MAF2X8#68HXR@08A"1>6,>O'- '/:9XF\1M>^%;W4)+!M/\0@@6D,+![;,)E0
M^86._A<'@=>*IQ^*?%Y\)WWBQY=,-G83W&;$6[;IX8I61F\S?\K84X&"/EYZ
M\=3'X1BCMO"\/VMR- V[#L'[[$)BYYXX.:Y'PUX+U75/#%Q8:CJUW:Z5=7]T
M]QISVP5V3[0YVK(>51P 3P2<G! - %_Q)XNOK;5+B&W\0:1IL:0)+:V[VSW=
MQ<%EW9=$8%%S@#@D\GVIL'B_Q!KI\)0Z9]ALWUO39;JXDFB:40E/+Y1=PS]X
MC!/<'M@ZTG@JZBU;5KG3==>QM=6*M=0K;(\@(0)^[D)^7Y0.H;';%2:+X)BT
M:3P^XOGE_L:RFLTS&!YJN4Y//!&P?G0!B)XRURQTNYN-0^QRC2-<73]1FCB*
MJ]NP3$H7<=I!D0D9(P#73Z3K-UJOB?6[>,1_V9IQCME<+\SW!7?)SGHH9!C'
M7-9.MZ58Z#X>\3&ZBO=1BURXD<V]M;-(^YXE0* N?[GWC@ FM/P/H4WA[PA8
MV5VQ>^93/>2,<EYW.YR3WY.,^@% '14444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %96L^)-'\/^2-3OHX'FSY4>"[OCJ0J@D@=SCBM6N%U.ZC\/?$
MI]:U2&X.GW6EI:P74<#RK#(LC,R-L!*[@RD'&#MQVH W[CQAX>M=(MM5FU>U
M6PN21#/ORKD D@8[X5N.N1CK6EI]_:ZI807UE*);:= \<@!&X'O@\UY58Z5=
M7%_I-\^FW$5G>>+9K^"&6$J8XC P5V4CY,NN[G'WAZUZA_:UK_;O]C?O!=_9
MOM0^0["F[;PW3.>WN/6@""_U)[77=,LQ<V<<5RD[/'*&\U]B@@QXXP,_-GMC
M%4K/QYX6U"^MK.UUJVEFN<"$+G:Y(R%#8QNQ_#G/M5#Q+;SR^//"TL<,CQQP
M7X=U4D*3&F,GMFN9M=,GB^$O@BW6RE6>'4-/D>,1$-&?.!9B,9'4DGZT >IW
M%Q#:6TEQ<RI#!$I>221@JJHY))/05D:7XMT/7'EATO4H9IXX_-V$,I*?W@"
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
MBB@ HHHH H:UI%MKVBWFDWAD%M=Q&*0QG#8/H:NH@CC5!T4 "G44 %%%% &/
MKOARV\1?94O;F[6V@DWO:Q2[8KC!! D&,L 5!QD=ZV*** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ KG]7\)6>LW]Y=SSSH]WI4FEN$(P(W.2P
MR/O?I[5T%% &+/X:M;C^PMTTP_L:020X(^<B-H_FX]&)XQS5C7]%M_$6A7>D
MW3R1Q7*;3)$<.A!!5E/J" 1]*TJ* .53P!I$>H^'+U6F#:#;_9[=,C;(-NU2
M_')')&,<DUHVWANUMO[<V33'^V)3+-G'R$QK'\O'HH/.>:V:* .7B\%6]K-X
M=FM-1O()-$MA:(5V'[1#A,JX*]]@Y7!ZT[2/!-CH\FBO#<W+G28;B&'>5^<3
M,&8M@=05XQBNFHH XCQ'X7AMM(U6:"ROM0DOM2BOY%MIECGMV4(OF0G'+*$!
M"GKR,]JSO"NBZA=>-;S7)I-;\C^R_L*W6JHD4SNT@;Y(U4!54*.2HR2>M>D4
M4 5M/M7L=/@M9+J:Z>) IGG(+R$=VP ,U9HHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HID4L<\
M8DAD22-NC(P(/XBA)8Y&D5)$9HVVN%8$J< X/H<$'\: 'T455N]3L+!E6\OK
M:W9AE1-*J$CVR: +5%06M[:7R%[2ZAN$!P6BD#@?E4] !111GG'>@ HICS11
MR1QO*BO(2$5F +$#)P._%/H **CEGA@4-+*D:E@@+L!ECP!]34E !1110 45
M3O-6TW3I$2^U"TM7D^XL\RH6^F3S5L$, 000>010 M%%% !1110 4444 %%!
M..M% !1110 45G-X@T56*MJ]@&!P0;E,@_G5F"_LKK9]GNX)O,!9/+D#;@#@
MD8/(!XH L4444 %%-DDCAC:25U2-1EF8X 'J35:RU73M3W_8+^UN]GWO(F63
M;]<'B@"W1110 4449YQWH **** "BBB@ HHHH **H'7-(6*>4ZI9".W;9,YN
M$Q$WHQSP?8U:M[JWNXS);3Q3(#@M&X89],B@"6BBB@ HHIDTT5O"TT\J11*,
ML[L% 'N30 ^BBF0S17$2RP2I+&W1T8,#^(H ?13)IHK>"2>>5(HHU+/([!54
M#J23T%)%/#/O\F5)-C;&V,#M;T..AYH DHHHH **** "BBB@ HHIDTT5O$TL
M\J11KU=V"@=NIH ?1110 4449H ***8\T4<L<3RHLDF=B%@"V!DX'?B@!]%%
M% !13&FB26.)Y4623.Q"P!;'7 [XI] !1110 4444 %%,AFBN(A+!*DL;='1
M@P/;J*(IHIU+0RI(JL5)1@0"#@CCN#0 ^BBB@ HJ-YX8VC625%:1MJ!F +'K
M@>IX/Y5)0 4444 %%%% !11G'6FNZQHSNP5%&69C@ >IH =138Y$EC62-U=&
M 964Y!!Z$&G9H **9#-%<1B2&5)$)(#(P(R#@\CW&*?0 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !69KNDS:U8"RCU*YL(G<>>]M@221X
M.4#'[F3CD<\<8S6G10!PWPZM[BY^$&C06EVUG.]IM2X5 YC.X\@'@GZTWX:6
M"Z8WBJS6>><1:W(#+</OD<^3$2S'N22:Z7PQH:>&O#5AHR3M.MI'Y8E9=I;D
MG..W6FZ1H(TB7698KIF?4KQKO)0?NB41,#UQLS^- &Q7F7C(PCXI:1YWA]]=
M7^R)_P#14CB<@^;'\^)"!QT]>:]#TZWNK73H(+V]-[<HF)+EHUC,A]=J\#\*
MY35[FWLO'L.K/8ZW/):V3VFVUTV26)P[(^0XXR-N,4 <YX8N+2;Q7JOB?3]#
M70=.TJPEMK^SQ''--*"'!>)#A<!3ACR<\<4W3OB9?R#2]0FU#3KF.^FB2;2K
M>SE$MM'(0 1*3AV7(+< 'G%:%W<Z?<>*CKD6D>)(OM%HUGJ%M_8TI2\C(^7=
MTPR\\\\<50T][RQ2PL#>>+GT:PD5H;9-$DCE94^Y&\PY9!P, #(&": +DOCC
M5E\37-C/J6E:;/%?&"'2]0MI(OM, 8 2+<%MI9AD@ 'L*K76IZWH.O?$C5X[
MRUE%E;P21PO;MU\HF,9W] ,@\?,3GCI4&JQ2ZO#=Z;<R^*I=$N[@S26LV@R2
M3("VXHDQY5<]/E) X!J36(XM4O/$#QP>)H+77+1;>X@_L*1]KJNU75N#T[=_
M6@#:;4-9M-<\+G7AI=Q)>7%Q(C16S!K1!;,VU6+')X(+8&1VJ70=6\8:YI^G
M>(83IIT^]D5_[-,3+)';L<!_-W8+@8;&W!Z5!?ZM9W^J:'>MI/B1?[*>1@G]
MCRD2[XC'@\<=<UB6<;V4-KIB2>*_[ M9UFAL5T.19 %;<L9F')0''&,X&,T
M1:;=:GI^CZO-?R6&H!O%R0;)+0@*YG16<9<XZ@J/X2.IKI+KQIJ5EH^O6\D5
MNVO6>HK8V<04A9O.*_9V(STVMD\_P-6 \$3/?Q^3XF^Q7.K1ZJD!T*3,4JR!
MV&[N&*@=./>M"^DTR^\;6/B5](\3J]M'AK8:1+LE=0XC=N.JB1\?7VH 35/'
MUY_PD&IZ;;ZSIFFC2RD6;FREF-W-L#-]UAY:#('<]37;>%]:/B+PQI^KM;M;
MO<Q!GA;^!@<,.>V0<5PEY=7$>KZAJ&A'Q-I?]I;6NXF\/O.I<*%\Q,XVMM !
MZ@X'%=!IGBBVTS2[:Q&D^*[@01A/.N=-FDDDQ_$S$<DT 9GP\T32_$'A7^W]
M9T^UO]2U66:2YENHED( D91&-P.U5"@8'I5N9W\)6.D>&/#-PLT]_>RPV\EZ
MWFI9QJ&D<87!(0#"J3GD9/%8!DO-.NKP^'+CQ/I=G=RM.]I)X=:X6.1CEFC)
MQMR><'(SGBE^RZ9;Z+8VNGV/BRVU&RNFO8M1?2)))'G?(D:0$88,&((XXQTQ
M0!JZCXH\3:&VLZ;/]BO]0L+*/5()HH&C$]N'*RHR;CM<!6P02#D<5=U7QU]E
MO;NXLECN-*T[1CJ=TX!W.S\PQJ>@R%8G(/&*S-&U".RU2\U;5;+Q)J>I7<*V
M[2'0Y(HXX5)(1$&< EB3DG-4M!M=%T7P[JFBR:/XHO+?42RRM)I,H81;!&D8
M..BH  ?QH FTCX@W[ZIHRW.IZ=J*ZE,L,UI:64L3V;./E(=B0Z@X4Y ZY'I2
M/XO\6KX6O?%1ETL65A>2PM9?9W+SQ).8R?,W_*V.@P1QGO@-TV]U"VN-/6^O
M/%MW8Z><PP1Z')"TN!M7SG7_ %@ /3 !/)S2.MD_@>_\,_8/$P2[FFE,_P#8
MLN5\R8RXQWQG'6@#5\4^*=0T[6KJTCU_1M+6&)7MX);=KJXN6(R=R(P*+G@<
M$GD^U0P>,=?UQ?",6EBPM)-;T^:YN))HFE$!01\JH89^\1@GN.>.<Z665-:U
M:\T[_A)K*WU8JUW&/#[O("$"9CD/W>!W5L'I3]%^QZ,_AUA8>)I?[%LYK1,Z
M+*/-60KR?0C8/KF@"MX@U?Q!JGAJ:SN;NSCO=,\26ME)/%;MLG'F1,C[=_R_
M?&1DYQC(SFK^O>--9TK7[O3KC5M+TEK=(_LAU"RD$.H,4!8^=OVQC=E<<D8[
MU5OX[6\L=8ACM/$\$VH:G'J4<PT21O(DC\O:,'[PS&/3K3=1FU"^2]@%WXG%
MKJ$2I=PS>'I)ANV!&:+<?W8;&=N& /(H ]5@<RV\<C;-S(&.QMRY(['N/>I*
MPM M)([?3I+2YN[?2H+$6T>G75L$D#*0%D8D;@=JXQT.<UNT >;>*O#&@)XY
M\&QKH>FJES>7/GJ+2,"7%NY&[CYN>>>].UG3KFR^)'A^Q\-)I^FC^S+L9-MF
M.)3)$25C4J"2<=QU)KK]5T!-4US1-3:X:-M*FEE6,+D2;XRF">V,YIT^AI/X
MKL]=,[![6TEMA#MX8.R-G/ML_6@#B;GX@ZGI?ANY%]]B.JPZV=&6Y\MQ 3M#
M^<R EL!,Y4'J.M:7A'QA<:GXDGT2>_MM4C%K]IBOK:T>W (8*T;JQ//S @@]
M,U<N/ <$]KJ"#4)HKFXU;^UK:YC0;K:8*JC .0PPI!!ZAB*T-&T34[/4YM1U
M;7IM1G>(0I$D7D01J#G(C#'+$_Q$YQP,"@#"\46\6O?$+0/#VH+YFE"UGOY+
M=ON7,B%%16'\07<6QT]:JZB_A?3/&FDE-%U+2KZ&\6UBO+33_*M[@R#:(F?&
MUD.<^H*\8KJ?$?AF'7_LDZ7<]AJ5BYDM+VWQOB)&&!!!#*1P5/6LI/!FJ7VH
MV-SXB\33:E%83K<V]M#:);)YJ_=9\$EL>F0* *>EZ_XIU&?7[\2:4FG:7=W=
MI%;R*R-,8\[6:4MA /E!X/0GCBJ&C>.KZ7Q5HNGOKFDZQ#J321S"QM'C6V=8
MV<;9-S*X^4CU[UT;^";:;PWK^BS7<IAUBYN+AY$4*T9E.<#UP?SJO%X,U*75
M=%U#4O$/VE](D+00PV2PQ,IC*'(#$[L$<YP,=.: .>C\8>+?^$27Q=++I?V&
M*[,+V*V[[Y8Q<>26\S?\K=P,$<>^*;-K>H>%_$WQ"UNYN(;FVLHK8K;"$J6+
M)^Z7=N. ,X/'.<\=*Z<^!HCX"?PM]N?RVE,OVCRQGF?SL;<^O'6C4? T6IZM
MK<T]^_\ 9^M6R0W=H(AD.B[4D1^JD=<8/- &'HGCN];Q#I=C=:KI^JQ:@624
M6=E+ ;1PI8<L3O0X*Y.#G!K'3XKWDVG?V_%?6#0&7*Z*+.4S-#OQGSLX\S'S
M8VX[5W6G>'-9BU*SN=5\47%]#9JPB@C@%N)"1C=,58^80.W SSBJ$'@2_L[4
M:39>)KJUT%9O,2UBA"S1KNW&-9P<A,^V<<9H VO%^L7&A^#=6U>S$;3VMJ\T
M0D!*D@9&1QQ7):QXNU_P_!I5KJE_I<-[K$KR)<"UD:.SA1%9@5#9D;+  _*.
M<FNU\1Z,OB'PYJ&CO,8%O(&A,H7<5R.N.]4]<\,G5?[,N;2_>QU/3&)MKI8Q
M(,,NUU9#PRL,9&0>!@T <SIOCO4+G2M?C2ZTNYN--$30ZE,KVMM(DAQN<,<@
MI@Y //&,9J+2/&&IZEX@FT.VU[3=26?3I;F&^AT^2-89$905(+X=2&SPP([U
ML7G@6ZU32;R#4_$-S<WUQ<0W*3^4!# T1!0)"25VY'()RW<]*L6GA&^'B:#7
MM2UUKRZBM);3RDM1%$$<J?E7)(.5Y))S[8H \NTS0[^3P;\/HUN-)$-[?(X1
M],W9;R9"#+^\_>$?-Z<D'C'/5_\ "2:K9026NB6>EVUQ<^*9M+!\@JFWRR?,
M8 \M\H)]0,<=:Z:S\$Q6FD^%[ 7SL-!F65',8'G8C=,$9X^_GOTIJ>!HDN8Y
MOMSDIKCZSCRQRS(5\OKT^;.?TH SO[1\97/B6Y\.P:AI,<MII\-S+>-9NV^1
MFD&T)OX!VCG)Q@]<\4=+\8^)[G2_#'B"[.FK8:O=Q6<EC%"V]-^5\P2%NNY<
M[=O .,D\UVL&A)!XJOM<$[%[NUBMC%MX41LYSGWW_I65;>!XK?PSH&BB^=ET
M>[BNEE\L9E,;$X(SQG- '/1>.-6?Q+)97.I:5I]PM^8%TB_MI(6E@#[0Z3EM
MK,R_,  1SCWK=^*G_)+_ !!_U[?^S"H;_P !WNIQ2Z=>>(IY]$DNOM!MIK</
M,OS[]BSDY"YZ<9 XS70>)]#3Q+X:O]&>=H%NX_+,JKN*\@YQWZ4 85KJOB33
M/%ND:9K5QI]S!JT,[*MM T9MI(U5MNXL=ZD$C. <C\*Y>U\:7UEX4\.2)]AT
M+3KN*=IKY-.>:"%UD(6,(K#9NY.YCC@UZ+?Z$E]XAT?5S.R-IHG"QA<B3S%"
M\GMC%85GX(O](TS3+;1_$<UM+8Q20MYL'FPSJ[[_ )HMP 8'HP.<9'0T 4[[
M4KCQ#X.TBQN+G3[J?6;Y+9YM.D+PR0JQDD89Z9CC8$9."V,UB65UXETZV\=:
MII-UIT5KI^K75P8;BW:1K@K&C,NX,-@P!C@G)KK= \#0Z'?6EU]N:X:$W,S@
MQ! \\[*6D '"@!2H4#@,>:LQ^$HX]&\2:=]L8KK<UQ,S[/\ 5>:@0@#/.,9[
M4 <QJGQ#EFUF/3K74K/1XTL8;N6>ZM7N6=Y1N6-54@  #)8GN,"FP^.?$&M6
MOAVWTM+&WOM2N;JUGFFB=HE,*D^8@)!*D#(!]0,\5OOX,N[.\@OM#ULZ?=BR
MBLKDR6PFCN%C&$8KD889/(/0XP:GM?!_D76@W,VK7=W/I4EQ*TMR=[3M*I4_
M[H&> .  !0!?U:]OM(\&WU](\,NH6=A),SJA6-Y4C)SMSD*2.F>G>N9M_$'B
M;3D\.ZCK,NGS6>LS16\EM;P,CVKRJ2A#ECO&1AN!UXKIO%L4EQX,UV&&-Y)9
M-/N$1$4EF8QL  !U-<YX>\(:A+8^'I=:UF>ZMM.CBGM[)[98V241X7S&SERF
M3CA>>N30!FV_C/Q-'X;U'Q+=#3I+2*XELK6RCB97DE^T>3&S/NX&3@C';/?C
M:35O$6A>(-)L-<NK"_M]5,D226ULT)MYE0OC!=MR$*PSP<XJW%X(L_\ A#;K
MPW<W$LL%Q-+-YR#8Z,\IE!7KRK$8^E-L_"=^^LV6IZ[KK:G)8*XM$6U6!49U
MVL[ $[FVY'8#)XH Y.S\8>-9O#GAS7F?1V36;B.S%G]G<>69-P64OOYY7)7'
M0XSGFIM;\1:Q9:1XLTS6%TS4Y=,6SECD-J5CE29\8>,L>5*G!SZ5TEMX'BM_
M#7AW1A?.RZ+=0W*R^6,RF//!&>,[J36O T6L2Z^[7SQ?VO%:Q,!&#Y7D,6!'
M/.<_A0!@Z]XVU;3_ !+J%B^IZ7H_V=U6Q@U.UD$=\I4$M]HW!4Y)7 !(QSFI
M=>\=SQ^*;K1;?5;#2$L8(I)9KBUDN3-)(-P50I4!0,9)Y.>!6OK/@W4=4;4[
M:+Q'+%I>IY^T6D]LLYCRH5A$['Y 0.F" <D8ITO@RXLM1^V^'-9;2Y)+6*UG
M22W%PDJQC;&V"00X!QG.#W% %_P=K\GB;PS;:E/ (9V9XY44';N1BI*YYVG&
M1GL:X32=:UO0+?Q-*)[2]N[OQ+_9]K&\+1J)W$:[V.\G8%Q\HY^7KSQZ5HNF
M-I&DP6+WMU>O&"7N+I]\DC$DDD]N3P!P!@5S<_@ 7#:PAU:9+:_O5U&!4B42
M6ETNTB17[C*#Y2/6@"6RU77=*\66.AZY<V=]'J-O++;7-M;F!D>/:71E+,",
M,"#GL0:I>-TU&3QIX-72G@CNS+=@2W"%TC7R?F;:""Q S@9'.*UM,\+WD>O1
M:UK>L'4[RW@:"U"6P@CA5B"YV@G+': 3GH.E/\2>&9];U#2=0M-5DT^[TQY'
MB=8A(&+KM(8$\C&<CWZCK0!S&H^/M4\.6FM6&IBSN-4L;BUAM[E8VCAE6XSL
M=T!8C;M?(!YP,=:M>&/&=S>>*(]&GU*TU>*XMWF2[M;.2W\EU(RCJQ(((.00
M>Q!%76^'\=WI^H_VCJD]QJU_/%<-J$<:QF*2'_5>6G( 7T.<Y.3S6EI.A:M;
MZK_:.K^(9M0=(3#%!%#]GA4$@EF0,=S\#DG YP!0!A^,X]3E\?>#TTF6WAN2
ME\/.N$+K&NR/+;01N/H,CDU7F\;:UID6I:1<Q6=UKMO?VMC;3*C1P3?:!F-V
M7)*X ;(!_AX/-=#XB\,W&LZMI.J66K/I]YI@F\IA")%?S H(8$C(PO3WZC%4
M3X BN-,OTOM3GGU:]NH[Q]21%C:.6+'E%$Y 5<8P<YR<GF@"I>>(?$/AK4'T
M_5KBQOS<Z=<W=G<PV[0[985#,CIO;*X8$$$'@CWJW-XHOX]"\&7H2#S=9N;6
M*Y!4X DA9VV\\<J,9S4UOX.GNM1>_P#$.KMJD_V22SA6.W$$<4<F-Y"@DEF
M SGMTJC9^ +^/^PXKWQ+-=6FB3QR6<'V1$R$4J [ Y8A3@'COP<T 9%QXM\7
M#P]K?B2.72TLM(OKB'[(UNY>YCBE*DE]_P AQTP#R,]\#>FUCQ!K/B?4M-T*
MXL;.'2HH3*]W TIGED7>$X9=JA<9/)R?:IY/!$4G@_6O#_VYPFJ3W$S3>6,Q
M^<Y<@#/.,XI][X3O!K4^J:+K;Z9-=PQPWBFV699=@(5U!(VN 2,\CID<4 5O
MA7O'PWTGS5"R?OMR@YP?.?(KE-%O/$^C^&?$6MV,VGG3[#5-0G^QRPL7N$69
MS(?,##8< @?*>G/7CT3POH*>&/#EIH\=R]RMMO ED&&;<Y;G_OJN;/P\O/L>
MHZ8OB6=='U*ZFN+NU%LN\B1RS(DF<JI!P>#W(QF@"8^.3876NMJ*QBUMM.CU
M6P*J5:6!EP5/)^8. /\ @:UT6FG5KCPS;->O!!J\ML&D(B)CCE*Y^[NR0">F
M1G'45Q_BC1K;Q'XU\/Z7;VETB:8WF7LHA98#;C8ZQ;B,/F1(^ 3C:U>B4 >'
MZ2-:/@KX>-#=6LMW+JKFW:6%@L:F*8'?\V7(^9N"N>!QUKJ+WQQJ_AFT\3P:
MN;._NM*6U:VGBB:%9?M!*J'7+8VL#G!Y'O6II/@%]-M-%M)-8>XM]'OFNK4&
MW"D(4=?+8@\XWD[OTJWJG@>SU>[UV6ZN90NK06T1$8VM T)9D=6]=S ].U &
M)X>\;7=QXIL=(GU2RU>*_CD/FVEE);FVD1=V#N)#*0#@\'(]ZVO&>LZQIDVA
MV>B_91<:G>FU+W*%E0>6[;L C.-N<=\8XSFI],\/ZQ#JT%]J_B2>_%O&T<4$
M4 MXR6QEI K'>V!QT Y(%7=7T--6U'1[MIVC.F71N54+GS"8V3!]/OY_"@#A
M]1\;ZE:Z]/H,VN:9I]QIUO$;FZDL))1<S.N["(K?(H7&223D\4VY^(FI3Z#H
M=^QBT>VN_/2]U![*2YBADC8*JA000K\L&;L*ZG4/"U\=>N=8T/6CIES>1)'=
MH]LL\<NS(1P"1M8 XSG!&,BF-X3U*VM=-&F^)[^.[LXWCDEO!]I2Y#G<2Z%A
MR#T((P..E '*Z[J&M:UI7@VZAU?2&DDUL1_:+.-IH92%DV/C>,< Y3)Y(Y&.
M= ZYXDU*7Q5(6TL:/H\EQ;M!);L[W.( ^"=V  6&>#D$]*NGX>>7H<-K:ZN\
M.H1ZH=6-Y]G4J9R"#^ZX 7!QC/XUK6OA5;:P\0VIO&<ZU/+,[^7CRB\2QD 9
MYQMS^- '/:3KNMZV=-TC0WT_3%@T:UO+F9[4RJK2K\D4<890% 4\DGC JO='
MQ-/X_P#!9U":RM+@VUYY\$432(2ICW%3O'WE*XR/DYSNS6TO@FZL'L+G1-:-
MC>V^GQ:?-(]L)DN(XQ\I*$C# DX(/?'-*O@>2WGT"YM=:N1=:4\QDFN(Q*;H
M3$&4-R-N2O&.GI0!D>%_$]W%#X=\RTLK;2]3NKZT86\101W"S2&,CG'SA'SZ
MMSWJ&_\ B+?0Z9%=(]G;QZIJLUKIUQ-$[I';1 AIF53ER2K8 QU%;LG@*&3P
M,?#0U"5&6X>YAO40!X9#,90P&>Q..O(JQ>^"[:71-'L=/NI+"XT8H;&ZC0,4
M*IL.Y3PP9201WSUH H^#/%L^L:QJ&DW%W;Z@+>))X;^VMG@616)!1D8G#*0.
MAP01TKM:Q-$T74+"[NKW5-:FU*ZN J!0GDP1*N>$C!(!.3DDDGBMN@ HHHH
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
M'.]@$N[*$AS-$Q+7"(PRRIE,G!R%.,XJO/+JFNZ+XOL[:6'Q CZ/B/5H=/\
ML\TD@+8@..)"!DC;TSC'- 'KLNH6D-S:VTEQ&L]WN\B,GF3:-QQZX'-9EIXQ
M\-WTMQ';:W8RM;P_:)MLPQ''_>8] .1^=<C_ ,)!9>(_&_@I]+%Q-%;"Y-Q*
M;=T2)FMR A+ ?-P>.WXBL5-$NW^ VG0V=I*LB7"7%U%'!OD>-;DL_P A^^<
M-M/7;B@#T_1_$NBZ^95TK4[>[:( NL;_ #*#T..N#Z]*FU76M,T.U6YU2^@M
M(F;8K2MC<WH!U)]A7!>''CUCQ[97\.N7VL&TLY4DN%T]+>&-7*XC=L ELC(7
MG&#TK1\>:E+8:[H&&MK"(^>3K$]H;C[,VU0$4 @*7!/)_NT ='!XJT"ZTK^U
M(=7M&L1*(6G\T!5D) "GT.2.#ZBG:/XGT/7WF32=4M;QX,&18G!*@]#CT/KT
MKR(V\VH:;XG287=ZESKVFOYEQ:>29XRT0+[ H&TX/;H,FNP\4Z;>7GC:\BTZ
M,I<7'A6[MXI ,#S#(FP;NW)XH T=1^(>D_;]+LM&U"QOI[G4H[29%DW%48-N
M9<=<%0,\CFK_ (Z\07GA?PC=:MI]M'=744D*1PR$A7+RJF./]ZN%DU72M1LO
M >F6-C.M]I^H6HGA-JZ&R"H5=7)&%R<#'?&>U==\38I)O!$R11L[_;+,[5&3
M@7,9- #+_P =1GX>#Q1ID2NV^&-H)\@Q.TJQNC <AE+'\16UJWBO0-"N4MM4
MU:TM)G7<(Y) "%Z;B.P]SQ7G/Q+T74-%6\N-)MGGTO7+BW^VP1@GR+E9483
M#LRJ5;WVFMF#5-/\+^+/%?\ PD,<B-J,T<UM*;=I!<P")5\M< Y*L&&W_:]Z
M .PU'Q+HFD112:AJEI;I-&98F>0 2*-HROK]Y>GJ*L:7JVGZW8K>Z9>0W=LQ
M($D3;AD=1['VKS/PIHUY9ZIX BU&RD26VT_4'"2+DV^YT,:GT(1MN/8BM?1=
M,UB:[\61:3J0TASKS2^8]F)A(I@CSA20.6YS[4 ;FO\ B*_@URT\/:%:V]QJ
MUQ"UR[W+E8;:%3MWMMY;+'  ]^1BET?4O$D6N'2]?T^V='A,T.H:>K^3D$ Q
MN&R4;G(Y((SZ5@W_ -K\)>-+#Q#J\DU]93Z7_9UY>P6I_<R+(9%=D7)56W$<
M9P0,U9NO$UUXN74=,\+P/+9'3;A7U*1'B43LN(TC+ ;CDDD]!QS0!OV?B_P[
MJ&J'3;/6;*:\R0(DE!+$=0O9B.X&<4R?QKX9MK];&;7+%+HRF'RFE&0X.W:?
M0Y!'/>N!>^L=7\)>%_#FDV<\>M6=S9EK<VSHUB8F4RNY(PHP&&<_-NXSFH]2
MTTM\,OB$HLV,UQK%T^/+.Z3$J[2/7IQ0!Z1IWBO0-6FN8=/U>TN9+52\RQR
M[5_O>X]QQ4=CXQ\.:G?165EK5E/<RKNCC24'?QGY>Q.#G YKGO$%J(?'=HT,
M&R%/#U[%E$PH :+:O\\"N5TG4+#6O '@S0='MIAJT$UC.R"W9?LX0JTDQ8C
M5ANP<_-OXSF@#TV\\7>'K#5!IEWK-G#>DJIB>4 J6Z ]@3V!ZU0D\;6(\9WG
MAE);=;J"R%PKR2<%SN)0C'&%4,3Z&O-98YK#3O$VB:MK%]!<WE[<LVG1:4LS
MWRR,2C1N5^;((&<_*1VQ73\Z7XTEM+O[3YMUX7AMX'EC),LD9E+@LN5W 8)Y
M[\4 ;5CX]LWU[1=$NI[%[N_T\7336TQ,9D)3:J C)#;F()[+6A;>*K&U\-VV
MJ:WJFF1"9V02V\I,3L&8 )GEC@<C'4&N+\,2?V7JW@&2]26%)O#?V-&,3$><
M3"0AP/E. >N.E9_A@C01X2UG6()DTR&TO[?S3$S"UG>XW!F &5#*"N[_ !H
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
MFJ^*[&;2_#\MQ8?VGJ-Y-'#J*PDJ+:--Y<Q9P)/X<9QW]J .[HKS76?%NO\
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
M6\;0B>-%D62)B"4=&X(R 1T(-48? 5K'!;^;?W,]XNJ)JMQ=2!=]Q*HP 0
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
MH<7AO0+72()GFCMPP#N "<L6[?6LO4_!SRZS/K&B:S=Z-?W*JMR8426*?:,
MM&X(W <9&#BK5YXU\.6%U;VMSJL,<]PL;0QX8LZR9V$ #H<'GMWHD\:>'(M6
M.F/JT NA*(6'.U9#_ 7QM#?[).: ,L?#Z&:PUE=1U>^O]1U:T-G/>S;04CYP
MJ(H"J 23C'4UH:SX5.I2Z/=VFHRV5_I.\6\ZQK("KH%8,K<'( ],5/J_B_0-
M"NQ:ZEJ4<,^SS#'M9RB?WFV@[5]S@4[4O%>A:0ENU]J<$0NHS+;X);SE&WE-
MN=WWEZ>M &&_PZBG@UM;K6;VYFUAK9[B:14R&A;<-H   . ,8X KH+G0XKGQ
M+8:VTSB6SMYH%C &UA(4))^FP?G6<OQ"\)/]FVZY;$7) 0C=@$MM <X^0Y!'
MS8Z5<UCQ;H6@W*VVI:C'#.R>9Y85G94Z;F"@[5]S@4 85K\.UL])L;.#7+Q)
M],N'FTRZ$<>^V5@0T9&,.IR<YY_*K;>!X[W3-2MM8U:^O[C4&C9[C(C\@QG,
M9B5?E3:1GOD]<UI:AXMT#2X[:2\U2"-;J(RVY!+^<@V\IMSN^\O3UK(UKXBZ
M/I^@66KV-Q%>07-]':;AN&S+@.2,9!4$G:<&@"_I?AN^MM634=4\07FIRPQ-
M%!&R)#&@;&6*H,,QP.3T[ 5=U30H=4U72+^25T;39I)41>CEXVC(/X-FM*&5
M)X8YHVW1R*&4XQD'D5CZMKB:3J]M'<7=I%:FUFGEC=',S;"G*8XVC=SGGD8[
MT 9$/@.7?807OB"^O=+T^Y6ZMK69$+AT.4W2XW,%)^IP,DUL^)O#T?B33H;=
MKF6UFM[F.[MYXP&,<J'*DJ>&'L:R?AUXDO\ Q7X?.KWL]FPF;*06T#I]G[[&
M9B=YP5Y  ZUD7'Q0B?1]8O+,6ZMI^K169\X-M,#21H9"3MP?F?CM@9H Z#3/
M"4UIXH7Q#>ZU<W]]]C:S8/&B1A"ZL-JJ.,%?4YR?:NFK&T?Q7H>OW$T&F:A'
M/-"H=X]K*VT]& 8#*^XXJ*Q\:>'-2U)=/L]6@EN7++& "%D*]0C$;7(Y^Z30
M!O4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %
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
MN7EBVLCA!W;#9 [XQ4$GCMM6N;*Q\,Z?=W-W+.@N7N[*:&*UBS\Y<L%^;&0
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
M;Z9),IAC93E1G;O95/12Q' K=U[1+;Q%HESI-X\J6]P ':(@,,,&X)!'4>E
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
M-+@N%N;?3UF3RH75PX ^3<5S_"20,\8." "?XH122_#/Q (YWA*V<C,4"G<
M.5.0>#TXY]*YU=+U6?XBV-G;Z_<6\B^'%,UXL$1F<>><* 5V#J.=O0>^:]#U
M?2[;6]'O-+O WV:[A:&38<-M88.#ZUG:3X5M]+U&#4&O[V\NXK'[#YMRR$M'
MYA<$[5'S G&?0>O- '#2^-M=AT#3]/>YFDU*;6+K39;ZULO-E,<!?+K$ 1O(
M4=B!R<5T7@W5]8N=9O\ 3[U=6N=/2%)K:^U'3S:R;B2&C;Y55L<$$ =3GI5V
M;P)I<NG/:K/>12?VC)J<-U'(%E@G=BQ*'&,?,1@@\'G-7=$\-1:/>75]+?WN
MHZA=!4ENKME+;%SM555551R3P.2>: ,+48DO_C'I5M?*)+:UTB6ZM(W&5\\R
MJK,!W8)C'IFM37!H6E:LFO7 C76(;*X$"B78]Q&J[W7'\>, \YQG-6O$'AFS
M\0BUDFFN;6\M'+VUY:2;)H21AL'!!!'!!!!JKI7@RTL=2DU.^OK[6+]X3 )[
M]U;RXSU5%5550>_&30!R[:KXFTOPGI?C&ZUS[4ERUM)=:;]GC6$13NJ[8R!O
M#+O')8YQTJIJ>M^*?['\7Z[!KQ@CT/4)H[:T6UB*2HFUBLA*[B,-@8((ZY/;
MJ+;X>6%N;2!]3U2XTJRE6:UTR:53!&RG*C.W>RJ<85F(&!5V;P9IL^BZYI32
MW0M]:GDGN6#KN5G !V';@#Y1C(- & VH>(=$\1VUK>:TU_'J.EW5SL:WC1;>
M:((1Y>T9V_/C#%CQUJC9ZMXGT_PKX;\4W^NF]%^]HEW9&WB6+RYRJ@H54,'&
MX$\D$YX Q79:SX>@O9XM14S&[L[*XMH$5AM82JN<C'7Y!CD=ZYSPAX!^S>'_
M  [_ &O?:G(;&&&==,GE0PP7 49/"[CM;) +$ ].U &5XH\3ZG!+K\UCXCOC
M/IWF&&UTS2Q/;Q;$SBXE:,C=G.X!QM'O6E'J7B#Q'XIM]/MM:?2[.30K;4)/
ML\$;OYKLX(4NIP.!G(/08QDUIW/P\L[@:I;KJ^JPZ;J<LDUU80RHL;/)]\AM
MF\ GDJ&Q[8XK5TOPO9:3J,5]#-</-'IT.G#S&4@QQDE2< ?-\QR>GL* .1TK
MQ5KBZ?X;U'4+M);9M2N-)U$K$JAV\QHX9>GR_,@! ./GZ5TWA'5+W7$U35)I
MMUA+>R1:?&%  AC^0OG&3N=7//;&*Q?$WAXV7@BY\,Z/IU]?OJ<TK),63;;2
MO)YGF.V1A58Y& 3\H%=+%X=@MO#VGZ-:W=W:060B5'MG".PCQP3@Y#8Y]<F@
M#8KE?B0B'X<>(V*J6&GS<XY^Z:ZJJ&M:3;Z[HE[I-TTBV]Y"T,C1$!@K#!P2
M",_A0!QGCV-A\)5^S"-)B;#8S+QN\^+&?;-/DU76?"GB9[74=7EUBSDTBYO]
MLL$<;1R0E<A2BCY2&Z')&.M=3JOAZSU?0%T:XDF6V4PD-&P#_NG5UY((ZH,\
M>M.NM L[W7;?5I_,::"UEM1&2/+9)"I;<,9)^0=_6@#S?2?%?B>:'1]45]<O
MI;R6)KJQ.BE+5(9",F*0)N^0'(8L0V/>O7*Y"T^'UE:O90G5M5GTRQE6:UTV
M693#&RG*C(4.RKV#,0,"NOH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
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
M7B31H[R!V%IX92TDN ,H)?.#% W3@?H*Y^71;[2U\1:9=P>*YY;R]N9H(=-
M-K=I,21NDV$1GG:VX\8R,T >R;U,?F [EQN!7G(]O6N+T#XBV%_HVI:EJ0EL
MXK6_DM4#6LJEQYA6,*"N7D..549!."!5VP\)W=L^FRKK^KVT-K# AT]98WA^
M1%4J6,>YLXY.1G)Z5QN=>T_1M0L+;2]2A>/Q'+/<7,=B)G6VDDD82VX8$.P^
M7H"5W=* .XMO'&BW%OJ$FZ\A?3XA/<V]Q92QS)&<X?RV7<1P>0#TJ]!XCTFZ
MU"SL;:[6>XN[;[7"(E+ P\8<D#"@YP,XSVKS_1S?Z9XOU;7/[.\2:A:#1ECA
M>_A)FN9!*3L5 HV?>'!4?Q'&.:M_#_P_J?@W6);6^T]'CUB/[5]HMHR4LY!D
MFV)YQ& WR'@9W#O0!VVM>(-.T"&%[Z23?</Y<$,,32RRMC.%102>/;BJ%OX[
M\.7.GZA?+?E(-/94NO-@D1HG;HA4J&W9XV@9SQ5#Q4ES8^+O#^O1V<]];VL5
MS!-!;*'F02!,2*G5@"N#CG#5Q[7^L7EYXTO=+TFYMYGU'3_,C-LDMQ%"(UW2
M+&<@R!<,%Y(STR* /0+/QCI>J->6EO)=6E[;VS7!BO;*6%Q'T\P*Z@LN?2JD
M/CK2+33M*2\OY;V^O+&.ZC%I8RLUPI'WUC4$@=3CL.M<II^GZA/XSFOHXO$5
MU9R:%<VZW>JQ;&:4LAVA-J[!@<949.<9Q6CX+T?4+/7?#LUU8SQ+!X3BM9'D
MC("2AT)0GLV!T]J .F/C?03HUKJD5U+/#=R&&".&WD>:209W((PN[(VG(QQB
MK^BZ[I^OVDEQI\KL(I##*DD31R12#&59& *GD=1WKSB71IHM-G:^T?6-H\17
MUQ'=Z8S)=6JNS;940 EU8'!QG@YP:ZKP$VLM;:E_:;7DMH+D?89[^V6"YECV
M#)D4 ?Q9 ) ) YH T+CQGHEMXA&@M/,^I;T1H8K:1]F\ J6(4A5.1R3C]:A@
M\>>'KB_CM8[J8K+-]GBNC;2"VDESC8LQ783D8X/)X%5--TJZ/C+QI,T,D$=[
M':QP7!4@-B%@2I[X)K@M.\/WG_".Z;X:O+/Q;+>PR10S6V\1V*A'!\T3>65V
MC;N !+9X]Z /2-3\=Z#I-U<V]Q+=R?8\?:Y;>REFCMLC/[QT4JO!SUXJCJWB
MB>#7[ZWAO8(=/C\.R:DER8C*$8.0'P.64+S@=:Y778]=OSXHLKB'Q"EQ+).E
MA9:9:K':SQE,(\DVWDG^(%P>, 4^YT759=/E"Z==;F\"&S"^4<^?C_58_O\
MMUH [.Y\;Z5I=M&;YM0DVVZ327$.F7#Q%2H;=N5"H&.>O'>I9O&^AQ6.GW2R
MW,_]HQF6T@@M)9)I4'5A&J[@.1R0!S7&:K=WU[<:;H.I:'K7]@65K ]T+:Q>
M3[=+L4B,D<"-3]X=21CH#4FN6MS/XNLO$JP>)+33+C3/L>-.MR+BW=96;#Q;
M6;:P/4#^$9[4 =H_C'04T!-:^W;K)Y/)0K&YD:7./+$>-V_/&W&:S?#_ (O_
M +?\::GI]N7%G:V4$GE3V[0RQRL[A@RN 1P%.,=\]ZY6VT.^L=/T[78=)U>1
M+?79-0GM+J02W4T;1&+S=@5<-T;9R>O.>*Z+P[+<ZG\1-8U?^R;ZRL9=.MX8
MI;NW,1F97D).T\C&X#!P< 'H10!-K7C$:'X[MM+NO,:SGTUYTBM[9YII)A(H
M 4("2-NX].U:MGXOT.^&FFWO=PU&22&WS&RYD0$LC9'R, #PV#Q6%K<]QI/Q
M+M-7;2+^\L!I#V[SVELTQB<RJP&U>3G'8$].V:Q9]$U!O!/B#77M7LKP:L^O
M6,$^%>(1A<!Q_"75'R.V_F@#T:WU6SN]3O=.@E+W5D(S<*%.$W@E1G&"<#.!
MTX]:Y6\\<R)XA\2:/#;R*VFZ<+B"4VLF#)MD8[F(VA?E7'KS@GM>\ VLP\/-
MJUVA2\UF=]1F5NJA_P#5I_P&,(/P-8VKVU[%XO\ %*#3;V6/5=$2*VGBA+Q[
MT6;*LP^Z3N7 /7- &AX8^(.E:Q:Z-;SSS+?WUNA$C6DD<,TVP,ZI(5VL0<\
M]JNW/CSP]:7\MK+=3;8)1!/<K;2-;PR9QL>4+L4Y(')X[XK#N-)OO^$7^'EN
MEE-YEE>637"",YA5;=U8L.P!(!^M<FOA^^L-#U'P[>VWBRZNI;B=$M[,A;.Z
M221F#&7850$-\VXY!SQ0![/>7<-C93WEPVV""-I9&]%49)_(5Q6EOXU\3Z5#
MKD.KV6CPW2":TL38^?B,\IYKE@<D8)V@8S7576DI>^&YM'E9ECFLVM6;=N(!
M3:3GC)YK@([R2W\+6?ACQ3X6\07$]@B1+)I4<C17&P;5=9(F&W(Y(8C!H Z@
M>+UT;P_I]WXMB_LV^N7: P1*TP>5=Q^3;D_,%RH//('6G3^/-$@$('V^:62!
M;@P6]A-))%&<X:154E.A^]CI7(:/X<UFVM_"8O+"Y41:[<79BDD,[6L#1R^6
M'?)Z94=3SCO5_79=6_X3+4HKA=>M[ Q0_8O[$M%/VL[3N$LVTE2&X +* .<T
M ='<^.O#MM::;<F^:6/4XVDLA!!)(TX7;D*JJ3N^8<8SU]#65KGQ'L+7PL=7
MTM9;AA?1V4D3VLH:%RZAPZ8W*P4Y .,G &<@5@^#=#U2U/@#[9IMS"UA#J:W
M/F(?W+,PV[C[C.#WIVNZ/JGV+QE+%IMU+OUNRNX8XXB6FCC\@N4'\6-K=/2@
M#LK_ ,;:+ITL<,K7DDS0+<O#!932O#$>C2*JDQCV;!X/%37OB_1;&QL;LW37
M"WXS9I:1//)<#&241 20!U...]<'=VEW:>+M8U>=?%D-IJ\=O<VQTF LV5B"
MF*5-I*.".,X')YXJHOA>^T8^&M0:UU^TLHK&>WFBTZ47%U:O)+YHW;4^93R#
MM7@@#H.0#U/1]:L->LC=Z?,9(U<QNK(R/&XZJRL 58>A%9NI>.-#TO4[C39I
M;J6]ME62:&VLY9FC0C.\[%.%QWJAX!TYK:/5KYK758!>W0=6U24&:8*@42%
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
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 56U#4+32=/GO[^=(+6!=\DK]%%6:\^^(NJQMJN@:
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
MV@7\KNJ@ N%BYQTZC-:P\0ZI_P (+X&O_MC?:M1N]/CNI-JYE60?.,8P,^U
M'H555U&T?4Y--6=3>1Q+.\/.0C$@-^)4_E7E?B?Q)J44'B#4=.UW6[B?3Y)3
M"-/L4^PP"/\ @E=U^<C!W$,>O XQ6I]AO=>^)L\D.KW.F(V@6DDILPGF.3)*
M0 75L*.<\<\<T >@3ZC:6M[:6<TZI<7A<01GK(57<V/H.:M5Y1I^L7NI>(_"
M7]I2BXN]/U+5;*2=4"^?Y43*'P. 2 ,X[YK/L/%?BG4M#@\1VB>(9[Z:02I9
M)9Q_8&BWX\L'&[.W^/.<T >ST5S_ (VUNX\/>#-2U2S5#<Q1J(O,&55F8("1
MZ MG\*Q-4&M>"].O-7?Q'+JL<6GSRR6M^L8,DR+N5HMBJ0O7*\\4 =W17G4T
MNN^&X?#NK3^(;G4CJ-Y;VM[;31QB(^=QNB"J"NTD$<G('-8USJ?B4>"]=\5C
MQ)=+-I=]=+;6BQ1>2T<<Y7;(-NYLC(R", #ODD ]>K!URPT;Q)<#0=0GE:2-
M%NI+6*=X_,C)*@/M(W(2"-I]*Y#Q;J>NV.O:C+<WFN6&EI$C6%WIEK'<01'9
MEVN$VES\WT&WTZTNN>-+[2[G5;ZTNHKRWA\,PWUN50"-Y7D=1)Z[3\IQGH*
M/09[^SL;BSM)IDBENF,=O'C[Y52Q ^B@G\*MUYG?Z/J6E^,?!,MYX@N]35[N
M;S5N$C&)/LTAW1[5&%Z_*<]O?.'9>+/%.IZ&GB.R7Q#-?2R&6&RCLHS8-%OQ
MY><;B=H^_G.: /:**X&RGUC4O&_B26;7YK33-'GA,5J$0(P:W1V$C$9VY.>"
M",GGICG(?$VJP7/A^_M]8UV_%]J-O;W,L]BD-A+'*VT^4&57'4%2"<XYH ]2
MN];TRRM+JZN+V%(+1Q'<.&W>4YVX5L=#\R\>XJ_7CH>_T'P_\0=2M-6NVGBU
MH1H)1&5!/V?+XV?>PVWTP!QGFNHC_MCQ7XB\010Z]=Z5;:5.MI;16B1Y9_+5
MS))O4[AEP HP,"@#NJ*\KTG7]?\ %UYX:MO[6DTY+S3;J2]:T1-TCPS+'N0L
MIVY//0\$^Q'5>!;Z_N;/5[/4;Q[R33=4FLH[B15#R1J%92VT %OFQD 9Q0!T
M%OJ-I=W=W:03J\]FZI<(,YC9E# 'Z@@U:KS#Q#XBUNU'C!;&^\F6TU33K>U8
MQJPC640[@1CD'>W7UXQ5B]U75O!NO7\,NK7>KVPT&YU,)>+'N6:%EX4HJX4A
MNG;% 'H]5=.U&TU;3X;^QG6>UF7='(O1A7*:+8:[%%HVK7/BF2Y^V(K7EK<I
M&(GWH6 A"J"I!QCDY .:Y_X=:G>10>"=,2<K9SZ/=2R18&&=9$"G/7@,?SH
M]5K":;0=%US5KN2=8;^:T2\O=S,<01!E#XZ #YNE<?<>)M:D34;&&_,4USXJ
M&D07/EJ3;0F)'.T$8)X8#.>6JGJD&H^'?%'B28:Q<WLL'A*::UGN50RQ%78@
M':H#889&1WQSB@#U:&:.X@CGA8/%(H=&'<$9!I]><64NM^(O$S:;_P )!>6%
MG'HMG=-]D2,2-*^\$[F4X''(QV'3G-72_$.NZ_I_A329-4DM;C4&O?ME]!&@
MD=;9R@"Y!52V02<<8.* /4:9--';P232L$CC4N['L ,DUR/A&XU6/Q1XFTC4
M-5EU&&P:V%L\J(KJKH6(;: ">G/? -=#KW_(NZG_ ->DO_H!H M6=W!J%E!>
M6LHEM[B-98I%Z,C#((^H-35Y/HQUGPSX,\&ZN-=N+N*X^PVLU@Z1^3Y,H5%"
M84,&7*G.3G!SUK7/B'5!X&\=7_VQOM6G75_':2;5_=+&N4 XP<>^: .\^U6_
MVO[)Y\?VD)YABW#=LSC=CKC/&:EKSG1K:XG^+0O9-2NV+>'[:9XODV-EW7:?
MESMS\W7.2><<5J^+KG57\4^&=(T_5)=/AU W0N9(D1G*I&&&W<" >HSCO0!V
M-!( ))P!U->6S>(M=T>#7-$35'NKJ'6+/3K/4+J-"\27"H=S@ *Q7<<<<\9]
M*T-075=#UVUT-_$%_>V>L65UB2<1>=;2Q*&W(P0#:0<8(.#B@#O;:Y@O+>.X
MMIHYH)!N22-@RL/4$=15%?$6DLZH+Z,L]XU@HP>;A028^G4 '\JP_A=;O;_#
M70M]S-/YEI'(/-V_NP5'R+@#Y1VSD^]<QIFHW=A=K';3>6MWXWNH)AM!WH8Y
M&QSTY4=/2@#U:H;JZALK.>[N9!'!!&TDCGHJJ,D_D*\FN]4\3KX4UGQ-'XCN
M%GL-8EMK:U\F/R&B%SY>V0;=S<'J&& !WR3JZE>:UX<U76]/.NW=^A\.7&HQ
MO=)'NAGC.W*[5 VG=G:0>E 'H-OJ-G=-$D%S$[RPBX1 WS-&>CXZXYZU9KRF
MQEN8O'*:[-J%Y*T?A.&]D@&P))@ME/NYVD@MP<[CUQQ572?$7BF>RTC6HO\
MA(;NZNY(9+FVDLHUL3#(1N$9'S#:IR&R<XYZT >M7EW!864]Y=2B*WMXVEED
M;HJJ,D_@!3X9H[B".:)@T<BAT8=P1D&O*M9.L^)O!OC+5SKMQ:Q6QOK6&P1(
M_)\F(,C!\J6+-ACG(QD8Z5Z'I<33^$[*%)I(&DL8U$L6-Z$H!N7((R.O((H
MT+:ZM[RW6XM9HYH7SMDC8,K8.#@CKR*;>V=OJ-C/97D*S6T\;1RQMT92,$&O
M(_!\VIQ^%/!6@6>L75NNKK<SS7.V,R0QQ#_5Q97 R2#D@D<_AVOAJ\U"T\5Z
MQX;O;^748K6""ZMKF=5$H60N"CE0 <%,@XS@\T 7=*\&:3I.H0WT;7MS<6Z&
M.V:\O))_LZD8(0.2%R!C/7'&:Z&O-O$.OZG>>.+[1H)-=@LM/MH7/]C6\<DD
MDLFX@NS@X4!<  <G.>E0+K/BN_MO"EA<W5SI=Y>W]S:W,QMT626)(W97V$$*
MQ"@^@;MCB@#U"BO)Y6\2+9>,E'BS4 /#A9[-_+AWRGR!-B8[/F SC@#OG/&-
M2UN=:\3^*_LG]N7.G6(T6TO'CLUC#F60R<AF5L+QR/8>^0#NI]1M+:^M+*:=
M4N;O>((SG,FT;FQ]!S5JO)['6KR_\0^$Y-2<7%WI][JUG+,B!?/\E"H< < D
M =.,YIQU7Q##\/8O'[:_.]P42[?3=D?V4PLX_= ;=P.T_>W9S0!ZM17G.J>*
MM4T1_%.ER3F;4F>&31=Z@%A<D1HH&.0D@;KVZTCQ^(-1\2Z[I(\3WMK!I6GV
MKH\$<0>29D?+,2IX)3)48SGM0!Z/17EFDZMX@%AX*\0W6NSW#:W<QV]U9&*-
M8 CQ.P*@+N# J#G<<DGMQ69#XJ\3ZMI5QK]A_P ) U[Y\AM+.&RC:Q,:.5$;
M$C<20IRV003QTH ]FJ*2ZMX9X8))XTFG)$4;, SD#)P.^!S7"J=;\2>--;TY
M==OM*LK.TM)4BMDCWK)*KDY9E/ V\COZU@:?<:AXEU7X;ZI>ZG<QW4T5V)?(
M6-59HUP6P5.-X&#[=,=: /7J*** "BBB@ HHHH **** "BBB@ HHHH ****
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
M'GI6!/X_T.WNYHW-V;:";[//?I:N;:*3."K28P,$@$] >I% $>I_#W2=3DU
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
MV5Y"DUM.ACEC<9#*1@@T >>W6AW.C_$'P69-<O\ 45=[L.MXZL=_V=LLN ,
M]QTZ8QWRM*O]<\10^"[%]?O[5=0M]0>\FMV42R>7*H3!(.".F<=,^M=OI_@/
M2-/U2RU(3:A<W-B&6U:ZO'E$*,I4JH)Z8/UX'/ JUIWA'2=+DTQ[6*16TR.:
M.VS(3M65@SY]>0/I0!P$NJZYJNJ:\D3^*"-,N6L;-]-\CRE:-%^>7>P+LQ.2
M",8QBM33[[6_%FM6&E:C>W6D^3HT5[=1V,BH\L[NR'YQGY!L)P#U;G.*Z/4_
M VDZG?W5V9;^U>\4+>)9W;PI<@# WA3R<<9&#CO4M]X,TF[^Q- +G3YK*'[/
M!-83M ZP\?N\CJO X.<=J ..NM-N9/&W@J.Z\1SW\T+WT37%NRIGRQD!@,C?
M@A7Z9QT%0K>:W>_#Z]\=CQ!>P7T:SW4-F"OV5$C=@(63'S9"X)SG)ZUVA\#Z
M*MMI4-NES;'2Y6EMI8+AUDW-]_<V<MN_BSG-03_#W0I[B9G%X+.>;[1-IZW3
MBUDDSDL8\XY/)'0GJ* ,C1VU/Q'X\U:276=0M+"P%E-#8P.JJQDA#,KY!)7C
MH,=3[4OBR#4].O=,M=-AU5M"@MG\ZWT6=%NEDW#:Y#G<ZXW=#DDY.:[&TTBS
MLM4U#48$87-_Y?GDMD'8NU<#MQ5/6?"]CK5[!?/->6E] C1)=65PT,FPG)0D
M=5R <'OTH B\%:BNI^%[>8:E-J#HSQ23W%OY$H96(VR)V9> ?7&>]><"YOO"
MND^-M0TZ^OIKLZXME'YC+(%,@@'F;2 "X#$#)QTS7K&CZ/9:%IR6-A&R0JS.
M2[EV=V.69F/+,222351_"NCRV6K6<UKYUOJTQGNXW8D,Y55R/[OW%QCH1F@#
MA[;6->T'46ECM?$,NG?8+F:=-;>%B)(TWHT91BW."I&,<CI5'2-7\3M:Z'J\
M:>([BYNY8'O/M9MQ8R128W"-0^5P#E2!DXYZUW^F>#=,TV_^W/+>W]TL1@CD
MO[EIS%&>JKNX&<#)ZGUJM:?#[0[.YM70WKVUG+YUK8RW;O;P..C*A..,G&<@
M=L4 <??:KK&EZQ=7NMZAKEE"NH$P:A:JEQIHM_,PJ21KRIQ\I)Y#<Y[5WGC>
M\N-.\"Z[>6DS0W,%C-)%(O5&"$@BJDWP^T2>YF9C>BTGG^T3:>MVXMI),[BQ
MCSCEADCH3VK>U33;;6-*N]-O%9K:ZB:&4*V"588.#VH X/1+!Y/BS->/J%ZS
M'0[6=D,@V,6>0;2,?='4#U-7_%823XB^"8;S!L=]TZ!_N&Y6,>7GMD N1[UT
MUMH=C::LVIQ(XN6M8[,L6)'EH25&/7+'FG:UH>F^(=/-CJELL\!8. 259&'1
ME88*L/4'- '+>,=7N;+4]/.H>%HKO38M2MA;7WV\*Z2N0H<1A<\%B,9Y ]ZI
M:;+J%QJ?BO6;[Q+=VMIH]]<100G!MT40JQ:1<;G + @ C[OO6W:?#[1H+ZWO
M+N?4]4DMG#VXU*^DN$A8="JL<9'J036JGAO2TM-6M6MS)!JTKRWD;L2'+H$;
MZ#"CI0!YQ9:QJEGK7A>>&[\330ZA>+;W4^J)'';W(>-FS'%G<ARN1@  <$TR
MXNM>_P"$(U_Q2/$FHK=Z;?W0M8%9?)\N.<@(Z[?GR,CD\#&.G/;6_P /]'AG
ML)Y9]2NI-.D62S-S>O)Y.WC"@G&,<'(R<=:O/X2TE_#U]H;12?8;Z262=?,.
M2TCEVP>W)H XFZFET/QIXYUZ&XNI9;+1X+I+=GS&QVS$!AC[H*\>F34.CZCX
MEAN= O$3Q).]W/$FH-J)MQ:R1R#YFC"OE"I(*A1R!@YKOI?"^FS:\^L,)A<2
MVWV6>,2GRIX\, )$Z-C<V,^M4=/\ Z-I]W:3(]]/%8MOL[:YNWEAMCC *(3U
M ) SG';% 'G\7B'Q/J^D7FOV:>(_MXGF-HD/V<6"(DA41NK.&((7#,1D$G'0
M5Z7XCOKF#P'J^H0EK:ZCTR:9"IR8W$18<^H-4KKX>Z%=W%PS_;4M+J;S[FPC
MNW6VFDSDLT8..2 2.A[BNAO["WU+2[K3KA2;:YA>"15./D92I ].#0!YEJEY
MX@DDMKFXEUZ333IENT<NAO&TD,Q4EWFC/S/GY2,9& >*]#\/7\>I^'-.O8[Y
M;Y)K=&^U"+R_-..6V?PY.>.U9EUX&TJXG2>&?4+&46Z6TCV5V\1FC084/@\X
M&<'KSUK=T_3[32M.M]/L8%AM+>,1Q1KT51VYZT >/ZIXBU*+27\0:=JOB*^=
M+Q"+T1)#IK1F8)L$;'++@[00"2><UZ3XXUFY\/\ @K5=4LPOVF"']T6&0K$A
M0Q'<#.?PK.;X9>'Y+$Z>[:BVGAM\-F;V3R8&SNRBYXP>F<X[5U5Y9VVHV,]E
M>0K-;3H8Y8W&0ZD8(- '$ZG#J/@O3[C5D\37-^T6GW$KV>H,K_:94CWAH\8*
M8P<@9&#T&,U2F.K^'=/\.:Z?$-]J$U_=VL%Y!.RF&99R ?+4 ;"I;(QV'.:Z
M;3O!&D:?<K<,UY>M'"UO"+^Y:=88V&&5 QP 0 ">3@8S3-/\!:+I]W:3(U]-
M%9-OL[:XNWDAMCC *(3C(!(&<X[8H X>ZN->;P?XG\3#Q)J,=UI6H7@M($91
M"$BF("NNWY\C(Y/ QCWO^*;S7(M;O[F>;7H]+6",VEQHACD6U;9ES/%]YN>>
MXV^G-=JWA/2GT+4=&,4GV+49)I;A?,.2TK%GP>W)JKJ/@?2M1OI[OSM0M)+F
M-8KH6=V\2W"J-HW@'DXXR,''>@"AHNMSZAXY@ABU$W>GR^'H+M&5=B2.TK R
M!>V0!QVKFH;^ZU4^%Y;NY>9QXIO85D)Y"*MPJ@?0 8KMKWP1H]W)92P_:]/D
MLK?[)$]A<O WD<?NR5/*\?44^R\%:)IUOI]O:V\D<5A>/>VZ^83MD<,#UZCY
MVX- 'GVB,VB^"[W;KVIP/=^(+BV411?:)Y<3R92$8^5W )+'(&">*'U_6=-C
M\7VD5QK<$5OH)O[4:L\;3Q29==RE22%.T<-SD=!7;R_#[1)!= -?1^=>?;T\
MN[<?9Y\L2\7/R$[VR!P<TJ^ -$SJ#R_;)YM1M&L[N:>Z=WEC/J2>".@QC H
MQ(4U;1_$7A0R:_J%XNM"6*]BG93'N$#2!HU"C9AE[=NM6?A98FTT35&-W=3[
MM5NTQ,X8#;,XR..IZGU-=3/H=C<76EW$B.9-+9FMB&/RDH8SGU^4FH]'\.V6
MA7.H2V+7"K?3&>2%YF>-'))8HIX7)))Q0!S%O#J7BW7_ !$&U[4--ATRZ%G:
M0V3JF"(U<R/D'?DOP#Q@?C6#I.K:YXUO?#=O+K=WIT=UI$]Q=M8%4,KQSK&&
M4D';D\\#H<=Z[C5/!6EZIJ$]\9;ZTFND$=U]BNWA%RH& '"GG XSP<<9J[:>
M&]*L+^SO+2V$+V=F;*!4)")$2IQCZJ.: ,[QSJ=[I'A<'3Y_)NKBYM[-+E@&
M\GS)%0O@\$@$]>^*YXZ1/HOQ/T<'6+Z_C;2;PH+R0.\;!HLD, #@\<'H0<5W
MNJ:79ZUID^G:A L]K.NV2,DC/<<CD$'!!'((K&T[P1I>G:JFJ>?J%W?) ]NL
M]Y=O*PC;'R\GH,?J?6@#AM#N]<\4/X3L9?$.H6D=WH+WEU+;,JR2NLB ')!P
M?F].F1WJ.76O$&KS:_=VW_"2B:RO)[6Q-CY M8_*.T>:'8%R2,MD=#Q7HVE^
M$]*T>:PELXI%>PLC8P;I"<1%E8@^IRHYJEJ'@+1M1N[N=GOH([X[KVWMKMXH
M;DXP2Z@XR0,'&,]Z ,.QN=7\8^()+&]U"]T>.RTNTN)(+"549YYE8L2^#E5V
MX '![YJD;*X/C[PI-<Z]-J,\.G7F^>U9528Q/'QM&1D]& /)7MTKL=1\':7J
M%Q!<QM=Z?<0P"V673[AH&,(Z1G;P5';T[8I!X*T6-M&:UCGM#H^X6IMYV3Y6
M(+*_/SABH)SG/XF@#AC?ZVGPV3X@?\)!>-J!07AL]R_9"A?'D[,?W>-V=V><
MUOZ9'J6L_$;Q 9M;OX;'2KBU-O90LJHQ>!&8/D$E<]LCDFM$?#W01.#B\^Q"
M?[0-.-T_V42;MV[RLX^]SM^[GM6Y9Z1:6.IZCJ$",+C4'1[@EB02B!%P.W %
M '/^+;N^F\0^'O#UK?36$.I-.]Q<08$NR) VQ"0=I);D]< XKA_&_P!N@T#Q
MGX<GU:]N[6RLK>^MY9'!E =F5HI& ^9<KN&>??BO4M;\/V&OP0QW@E62WD\V
MWG@E,<L+XQN5AR."1Z&L]? VB_V/J6FRK<SKJ>/MMQ/.SS38Z9<\X X & *
M-0Z<8]"DL/MMXY\ID^TM(#-SGG=CK^%>/Z!I4\^C?#"WAU2\@:X%S(9E92\2
M_9SE(\C"C (Z$C)->X$ C!Z5S>D^!]'T8Z?]E^ULNG2RR6B37#2"'S$V,JY_
MAQT';)- '$:GXAUOPW:^(]'MM0O;UX-2LK2TN90DD\27"J6P3@,1R%W=R,FM
MGPS=:W;>+8+,P:^=*N+:0R_VT\+/'*I&UD*,2002".@.,5T]WX2T:_\ [7^U
MVIE75C&;I6<\F-0J%<?=(P#D=QFF:1X2T_2-1;41-?7M\8O)6XOKEIGCCSG:
MN>@) SW/>@#>HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
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
MXF948*?ES@=<Y) Q^%10_$W1)X(;E+75!9M,MO/<M:%8[64MMV2$G@AB <9
MR.:NSZ9=O\3;'5! 391Z3/ TV1@2-+&0OKT4_E7-3^&]7;X;:WIBV+F]N-9D
MN(HMRY:,W@D#9SC[HS0!TFI^.+'3;R]MX]/U2^%@ ;R6SMMZ097=AB2,G:02
M%SC-+>^.M*M9M/A@AO;^;4;3[9:1V<!<RQ\<CIC@@\X%<IKFF>(=1U+7[:^L
M==O#,S+IBV=\+>R$10!?,VNK9#;MV0<]@:T/"FA:I9:OX5GNK)XH[+PS]BG+
M$?NY@T/R\'T1N1QQ0!MIX[T9_#QU@_:E07)L_LK0'[1]HSM\GR^N_/;\>E)'
MX\TA;349KZ.\TZ73U1I[:[@VRX<X0J%)W;CP-I//%<Q)X:UJ".XU"+3VFFL_
M%4NJ1VN]0UQ 4V$J2<;L,2,D=/>I_$UGXB\:Z/>+%HTEC;6TUM<6EO<2B&YN
MGC?<X+(Y$8Q@*<YW<Y H ZG2/%=IJNI'3I+*_P!/OO*\](+Z#RVECR 67!(.
M"1D9R,C(J;7/$=GH)M8IHKFYN[MBEM:6L?F2RE1EB!P  .220!7*>&M%:7Q9
M;:D-#UJUAM+>11<:SJ3S2!WP"D:>8XQ@<L?08K5\2V>H6GBO1O$EE82ZC#:P
M3VMS;0%?-59-A#H&(!P4P1G.#0!E^*_B 4\$:E>:+%?0:G!/':RQRVP\VS=V
M49=&XY5OE/()(KJ+.[_LCPC]NU"XO9EMK9[B:2\1%G*@%CN50%! XX]*X?5/
M#^N:UIGBO5/[+EMI]6FL%MK&1T\T1P2*2[X)4$@L<9X"BO2-3L(M5TJ\TZ?/
MDW<#P28Z[64J?T- '&:38^+/$>C6^N7/BF;29;R,3V]E:VL+10(PRJN74LYP
M1GD<YQBM&3Q9-X>T'2F\3VSG5;N1K<1:?&9A+* Q&T _Q!00.Q.#ZUSIBU.'
MPW:^&/$G@>YUT62I';W%K)$8)P@VH[;G4QG'7(/>FZ%X-U;2K?PI')811"VU
MBZO9X89 ZVL<D<NQ<\9P65>* .GF\<VJ2+#!H^M75T($N)[:"TS);*^=HD!8
M ,<'Y02>.E)-\0-%2VTB:W2]O#J\4DME%;6Y=Y-FW<N.,$;N_ P<GBL77K37
M+CQ;J"WEGKUYIC1Q#38M+O1;0D[?G$S!U8'=WY&.E5?!_AG6=.;P.+RP:(Z;
M:ZA%=?,"(V=UV<YYR <?K0!H:Y\11'X7.HZ397GVF/4HK&XMY[;$D#%T#*RY
MZE6^4@D$L*VK[QG9V=VMG%IVJ7MX(%N)[>TMM[VZ-T\SD $X/R@D\=*Y;6/#
MNLO8^*I(-.DF>;7+2^MXE90T\<?D%MN3C/R-UQTJ'4="NX_%NI:Y/H_B&XM=
M7AMY8TTS4#!);R)&$,<JK*H/0'<"0.: .PN/&^CII^FW5I]HU!M3!-G;V<1>
M64+]X[3C:%[[B,'CK48UB;Q-80OH4UQ:7-KJ,27L$\022-%8&2-U;.,H>"N<
MY&#CD<4_@F]T^/P[J!TB_P#*M[>XBO+'2]3D$\!ED\P,LA=3)SD,-W4Y&<5U
MW@72'L!JE[)I=U8&]G4HM[>/<7$B*H56D+,P!ZX /  S0!+)X]TR.\EC%GJ3
MVD-U]CEU!+;-NDN[:5+9SPQP3C&>]=37DNJ:'K<>J7\NAZ-JVEZY->&2.[LK
MM?[/N%+@^9,C-UVYW +DGIG->M4 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
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
MSCH1UQBH)HKE/A]H7BI?$>J'5-0N;)[DB]?RY?-E3=$(\[5"Y(^4 X4@Y!-
M'L5%>6JU^DOCGQ&=3U&:;1+FY^PV?VEO(&VW5L,@X89;.#P,<=3FEI#>(;5O
M#>IQPZHDEW<0+>76H:U%)!>1R#YML1DP&YW*$ /&.: /7Z*\5-YXCUJQUW6H
MX-76\@N[E+6[CU>.WMK,1,556B9PI V@L74YR?:MV&UO/%'BS5H-1U34+:&'
M2;*<6]C>M&BS.LF6#(><$=C@\$YP* /3:*\@T=]1CT'P)XDEUG4Y]1U.]@M[
MOS;EC%)$Z/\ +Y7W!C:.0,YY))JC'?>)=8T34_$,<.K)?I<SFWO!J\4%I:B.
M1E5&A9PNT;0&W+DY)STH ]MJK<:C:6M[9V<\ZI<7C,MO&<YD*J6;'T )K@X;
M&Y\4>.M7M=0U/4K>UATZRE%K97KQ(LL@DRP9#VV]C@\$YP*P=*CEUZY^&UYJ
M5[>RW3/?1/*MRZ%Q$L@4G:1R=HR?XAP<B@#U>+5+:;5[C3(BSW%O$DDQ ^5-
MQ.T$_P!XX)QZ<]Q5N1MD;.%9RH)VKU/L*\VTU[VX\#^+[VTU"&PU2ZU6[474
M\@C$9601(I8_=^5%4'L2*F\'7#V'BK^S+ZWU[3+JXM&=;*_OOML$Q1ANDCE+
M,0PW $<#!Z4 =UIFHVVKZ;;ZA9R;[>= Z$C!^A'8@Y!'8BK=<?X'8Q:AXLL4
MYM[;69#%Z+YD:2,H_P"!.Q_&N4NY]:\0>)/$O^B:U,FGW7V6U-AJJ6B6P$:M
MO*%UWL2V<L",<=C0!ZW17D.O^)/$&B^&_#OB&*^2;6KFS>WN;&.3SX)U"%C<
M*L9*Y0@,2O!!VYZ58U>:_CN/"GA^PN]4UBRNK.:\FGM]0$$U\1MQ^]9@0OSE
MMJD<8'04 >K45Y"=1\0V5A/HLUS=6-O<:W:644DE_'<7=K#*,NC.K,0<C"EN
M<..N*T/%UM_PBGA_7$TSQ)?B1K6"9+.:[>66']^JM*LC,7"MG!'3- 'IU5=.
MU&TU:PBOK"=9[68$QR+G# $C(S[BN9U^:6;X@^']+%W<1VUU8WWGQ0SM'NXB
M"M\I!!&6P>HYQ7G>BRW]GX*\"Z/IPU*:'5S<374=O?>5*_EKD1I([#RU/4A2
M,[3CJ: /=*HRZO:0ZW;:0[L+RXADGC7:<%$*AN?JPKRV?4O$6CZ?K&G&2[T^
MUEN[&"%KG4([JYL4FDV2$L&9@,8*ENA)QTK;MM#@T/XM:1%;W][/')I-T?*N
M[IYS&0\66#.2P#>F<97C'- ';WFKVEAJ.G6$[L)]0D>.W 4D%E0N<GMPIJ]7
M">/+)=1\4>#+1KN>T62]N 98)"CX^SOE0PY&1\N1SSQS7-Z]J^J^%AXET72K
MZ]GMXWL!!+-<>9+:?:'*.HDD)[*"I8_+NH ]>)"J6)P ,DU7T_4+75=/@O[&
M836LZ[XI%!PR^HS7F]A::O:Z_'ISVVJV&F7UE.MS#?ZVL\K,H!62(B0R*>H;
M;Q\P/%97AR_/@OPAX.UU[N[.ESZ?-%>12W#O&)/*\V,JI)"\Q,HQ_>]Z /9J
M*\>\.ZIK[MIWA#4M1NGU=M3BO+B;S6#_ &3R5G9<YSM\S]U].*J+>^)-9TG5
MM?C@U9+Z.ZN!;W:ZO%!:V@C<JJ-"SA=HVC=O7)R3Z4 >V45Y+<WNM^)/%VJ6
MLUAJMS#86]J(X=+U5;18WDB#M(3O4N<D@'E<+2V4FM:Y=^"]/U75KJ+[1;7X
MO#8WH_TD1L@3<\1QNQC)4YSN'&30!Z?J.G6FK:?-87\"SVLZ[9(VSAAZ<5GZ
MYXHTSP_);V]TT\MW<9\BTM86FFD ZD(H)P/4X%9/@1[B&;Q'I4MY<W4&G:F8
M;9[F4R2+&8HWVECR0"QQGFJ^ELD?QC\0K>D"YETZU-AOZF %_,"_\#P3^% &
MYHGBS3==NY[*%;JVOX%$DEG>V[02A"<!MK#E<]QD5N5P3:OJL'CW3K+6-'TB
M.XNK6Z^S7=K</)+'&@5B#N1< G;T)Z&N=T<26?PPTS6;[Q#X@EU'6%MX#Y,Y
MEDD+-Q'$K$*C%1C?UZG.: /7Z*\>CO-3TK6?$-A''JVFP'PU<7L=M>ZE]JD2
M56VB16WL4/)X#=1FK]M:W>D+X&U5=9U6XNM5FB@OA<7;O',LEN[GY"=JX*C&
MT#\: /2+'4;34EG:SG698)GMY"N?ED0X9?P/%6J\0A:[T'PO>PZ1-J+2ZEXL
METZ1EO3Y@C$LGW&D;".V-I?J2<DDXK6.I>(/"QUZ2"TO+:UBT66[BM-1U1+R
M5)T/#J-[/L()SGC('3- 'K-%>2:0/$%C>>'+Z.'5(_M<\27EQJ.M12PWB.IR
M5C,APW\2A . 1@UVGCN^2ST."(W>H027=W%;QIIRCS[@DD^6C$C9D*<MD8 -
M '3T5Y!;WNIZ7J7BK3T35-.@7PY)>Q6UYJ1NI(I 74.K[F*9QTW'D9J]:VUW
MH[>!M536=4N+K59HX+X7%V\D<P>W=_\ 5D[5P5&-H'XT >AZSJ]IH.DW&IW[
MLEK;@-(RJ6(!('0>YJU<7$5I;2W,\BQPQ(9)';HJ@9)/X5XKK-G+KGPAU+Q3
M?:OJ U&>1V>+[4P@11/L$'E9VX  &<;MW.:]1\:VZW/@;78G:11]AF;,<A0Y
M"$CD$'''([C(/!H LQ>(-.GU"PLHIF>6_M6O+<A#AHAMR<]OOKP:U*\AT_0(
MKO6O ]C]MU"*!O#\TLACNW$C@^22GF9W*N2. 1P,=.*CN]8UG3O#UWH]I>7]
MQ_Q5/]DQR_: +@6Y02;!*YX8GY0Q.1GZ4 >Q45Y_X2&L6'C":PEMKRTTR6Q\
MX6NH:JEW*DH<#>GSLX0@D'/&0.F:] H **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ K(UGPQI.O2P3WUO)]H@!6*>"=
MX)5!Z@.C!L'TSBM>N-U^]U+5?&=IX4T^_ETZ$637][=0!?-*;]B1H2"%).23
MC.!Q0!I3>"/#EQI-II<FEQ_8[.0S01J[+LD((+Y!R6^8G).<\]>:6'P7H$.E
M7FFBQ+V]ZRO=&6>1Y)B"""TC,7.,#'-5=.TG5_#NK/*^NS7V@&W9YAJ4FZ:W
MD7D,KA1E",Y#=,9'I4%K\0;><V-S/HVIVFDZA*L5IJ,RH(Y&;A"5#%T5N,%@
M.HZ9H N^(/#BW6G:N^FV-C-?ZB(A<QWNXQ7"IP%;'W?ER 0.#@\USWASP,T?
MB.75+[1;73[7[!)9?9?MCWCS[RI8N[#[H"[0O/4]*NWGQ+M+3^TI_P"Q=4EL
M-+NVM;^]18_+A96 ) +;F'()V@X!_"KEKXYBDOYK2\T?4;!Q927UN;@)_I$2
M8W8"L=K<CY6P>: )+;X?>&K62UD2QF=K.19+4S7<TOV<J<@1[G.T<#@<'O5F
M?P7H%Q=7US+8DO?O')<@32!9'1E96VAL Y1>0.<<UF:;\0K>_72[F71M2L]-
MU1TCM+VX6/8\C#Y5*ABRY/ )&#^(IVJ>.QIPU"X7P_JMSING.R7=[&L:JFW[
MQ56<,X7N0,<'&: +VI^"/#^L7TUY>63F:<!;CRKB2)9P. )%1@K\<?,#Q6G'
MH^GPZE%J$5JB745M]DC920%AR&V!>F,J.W:L.]\;I%K4FD:=HVH:I>):QW>+
M;RU0Q/NP=SL #\O3J<C&><2:7XXTW5I=%6&&Y1-8AF>W>5 H#Q'#Q-SD./F]
MOE/- %FZ\':#=VDMM+8_))=M?%DF='6=OO.KA@RD^Q%6]'T'3M!@EBT^!H_.
M?S)9))&DDE;&,L[DLQP .32:3K=OK,VHI;1RA+&Z:T:5@-LCJ 6V\] 3MYQR
M#4VJZ>^J6#VJ7]W8LQ!\^T=5D&#G )!'/TH S;_P9H.I:G-J%S:2&>X55N!'
M<RQI<!1@"1%8*^!Q\P/'%1R^!?#LEC96BV,D$=B'6U>WN98I(E8Y90ZL&VD]
MLXKE_#.CZE?^)/$%M<>+?$#1:5?1Q0KY\?SJ8T<A_P!WSR2.,<5M7/Q"MH!>
MW<.CZG<Z/8RM#=:E"J&-"IPY"EM[JISE@I'!ZXH Z32M)L=$T]+'3K=8+="2
M%!))).223R23R23DUDW'@/PY=W\MY-8,6FE$\T(N)!#+)P=SQ!MC'(')'-:U
M_?-#HL]_9Q-=%8#+$D17,G&1@D@?F:\TL?&^MRV_@.\N+._FFU&&X\ZVA$>;
MQA$I5P VU5R2?F*X .10!WE]X/T'4M0NKZ\L!+/=V_V:XS(X66/L&4':2.QQ
MD=C4-EX'T"POK6^BM)I+RT),%Q<7<LTD8*E=H9V)VX8_+T]JJQ>/K :3?W=[
M97MI=6-RMI-8.BO,9GV[$3:2&W;A@@_E5S2/%'V_5FTF^TN\TK4?)^T1PW)C
M82QY +*R,P."1D9R,B@!/^$&\.&SO;0Z<#;WD_VF6,S2867).]/F_=G))RF.
MM3Z;X3T32H+R*WL_,%ZNVZ>YE>=YEQC:S2$DC!(QG'-&O>(XM$EL[1+.YOM0
MO69;:TMMN]PHRS$L0JJ,C))[BLU_'MI#I%]?7.FW\,FFSI%J-JR*9;56P?,.
M&(9,$-E2>,^AH LZ;X$\.Z5J%M?VME)]JM<BWDEN99?)4J5*J&8@+@GY1Q6Q
M?:79ZD]H]W")6LYQ<P'<1LD (#<'GACP>.:X[Q/X]*>&?$EUX>@FN7TN''VZ
M,1M")2N3@LWS; 06P#U Y/%:+^,98S96,6AZA=ZQ/;?:9+*-H0T,>=NYW+[!
MD@X ))H UF\-:0VDW^E&S'V*_>62YBWM^\:0Y<YSD9)[$5HF&-K<P,@:(KL*
MGD%<8Q7*2_$/34L-.N8K'4)Y;Z[DLEM$B7SHYT#%HW!8 '*XSG'(.<<UE>(_
MB!>1>#?$4UCI=[8ZUI01989Q$QA#C*R9#%67&>F3GM0!U&F>#]#TC[#]BLV3
M[ 9#:[IY'\KS  P&YCQ@ 8Z#MBIKCPQHUW'J<=S81RIJ;*UXKDD2E5"J>O!
M48QCIGK5ZUN9)[&.XGM9;61EW-!*5+I[$J2,_0FN1TWXDVNH66GZFVBZI;:/
M?2)#'?SK&$61CM 90Y8+N^7=C&?;F@#=T;PKH^A74MU8V\OVJ5!&T]Q<23R;
M!R%#2,2%]AQ3]9\-:7KTEM+?PR^?:EC!/!/)!)'NX8!T8'!P,C-9-]X[BMKC
M4/LFC:E?V6F.8[Z\MA'LB8#+ !F#.5!YV@XI;_QW;0:O:Z9IVF7^K7%U9I?1
MFS5-I@9B-Y+,,=!]=P_  HZ_\/-.FT";3]&L((OM=[:SW:R2,5E6.12Q.2<L
M5!R>I/4UHR^"M-LM%UB'2;=A?7UE);":YN))FP5(5=[EB%!/0<5G7'Q.LK:*
M]NVT756TRPO7LKR^")LA=9-F=N[<PS@Y4' ([\5/+XT2=-6L+S3-5TBYATR6
M_C+B/>\(&"Z89@'!(^5L8R* )O#'@/2-"MM,G:SSJ-K;JF3/))'%(5 <QHQV
MIDYY4#.:U8O#&C0RP2QV05X+R6^C/F-\LT@8._7ON;CISTKDK/QAJI\56NGV
MVFZA>Z>= CO$), DE<X(D8EQU^YCCYB3C'-/\->/KJ;P5HEYJ6G7ESK&I$I;
MV\(B#71 W-(N&VJ@'4L1C'3D9 -\>!O#JZH-0&GD2B?[2(_/D\D39SYGE;MF
M[/.=N<\]:BN/A[X8NGNS/ISO%=LTDUN;F7R&=NK^5NV!N^X#.>>M-7QWI\6E
MZG=:A:WEC<Z8R)<V4BJTH9\>6%VDJ^\G"D'KZ8K,M_$^IWWQ&TC39].U#2HV
ML+F:6VN3&RR\Q[&!1F!(^88SD9]Q0!LWO@3P[?W/VF:SE6X\E+<S17<L;F-0
M0$+*P..>1WXSG K0B\/:3 ^F-#8QQ?V6K+9A"5$(9=K8 .#D>N:Y_P 9Z]>Z
M)XD\++:QW5Q'=3W$<EI; %ISY)VCD@ !L')( QFI?^$_LHK6XDOM/OK.>SNX
M+6]MY0A:W\T@)(2&*F,YZ@GOQQ0!:C\!>&H=02\33B&2;[0D/GR&!)<YWB'=
ML#9YR%K9U/3+/6--GT_4+=+BTG7;)$_1A_3US5<:W;MXF;0DCE>X2T%W)( -
MD:EMJJ3G.XX8@8Z*:K:SXADTV_AT^RTB^U.]EB:;R[?8BH@(&6=V51R>!DGV
MH BLO!.A6%_;ZA!;3/?VVX0W5Q=2S2("I4C<[$E<$_+T_&N)7X?:A?7=G#=:
M#I5DT5]'=7-_;7DC)($<.?)MR,1LY !/8$]:Z>3XBZ?%H5KJ9T[42\^H'3#9
MK&IFCN!N!0C=CJN,@]Q[X=)X^MK.RU>35-+OK"[TNV%W-:2>6SO$<@.C*Q5A
MD$=>"* .AM-)L;%KUK>W53?3&>YR2PD<J%)(/LH&!QQ63I_@3PYIE_!>6M@R
MO;L6MT>XD>* GJ8XV8JAY[ 4S3O&4=WJME8W>D:AIW]H(SV,MT$VS[1N(PK$
MHVWYMK ' /?BN?\ "?B.2XLO"KZGJ-ZUS=IJ#L<KY4BQR8S+GGY1C;CWS0!T
M=]X#\-ZC?S7=SI[,]PXDN(TN)$BG8=#)&K!'/ Z@YK6BTBQ@U&ZOXK<+=742
M0S.&/S(F=HQG QN/3UKG]/\ '<6H36,@T35(=,U"016>H2(GER$YVDJ&+JK8
MX+*,\=,U'<?$".UC-[)H.JKHRW MVU)EC" []F[87W[-W&=OX4 ;<?AG1XM.
MTW3TLP+73)4EM(_,;]TZ@A3G.3C)ZYJC=^ O#=[?S7<^GEFGE$T\2SR+#,X_
MB>(-L8\=2#GO6#%XNU*R\9>++)=*U/5H+.6!U2V\O;;QF!6(&]EW$G)VC)ZU
M;_X2J*Z\7:-=VVH$:'<Z)<WS9X4A6BPS#L0"WTYH ZN'2[*WU2ZU** +=W4<
M<<TFX_,J9VC&<#&YNGK6;)X+T"2PL+(V)6'3YFGM=DTBM$[$EB&#9Y+'()QS
M5"Q\>0W4VGO<:-J5EI^I2+'97UPJ;)6890%0Q9-W\.X#/'2IO'^H7>F>%C<V
M4[P3?;+1-Z==K7$:L/Q!(_&@!;7PRD5_K]E<V\5SH>K,+DQ/SME8;95(]#M5
M@?4M[59TOPII&@SR7MA:S27?E&)7N+J29PG78K2,=HR!P,#I5+5?&KZ?-J'V
M?P_JE]:Z;_Q]W,(C5$PH8A0[@O@'G:*F7QKI;&^)$RQ6NF1ZJ)64 2V[ACN7
MG.1M(.<=10!8\*Z-+HVD.+MD;4+R>2\O&0Y4S2') ]E&%'LHJ/5O!6@:U?27
MEY9R>?,@CG:&YEA\]1T60(P#CM\V>*BT[QMI^J6F@3VT%R3K32+#&5 :+RU8
MN7YXVE<'&>2*Z6@#-M_#^E6NH1W\%E&EQ':BSC()VQP@YV*N<*/H!G JC)X(
M\/2:5;Z;]@*6UK*TMMY<\B/ S$D^6X;<@Y/ ('M6'&^H^,M?UM?[:O-+T32+
MC[&JV+K')/,JAI&=R"0HW  #'J:FT[49_#=GKMQ=ZZFN:18VWVNW;S4>[4*K
M%T;: &' PQP><&@#:A\':!#HEQHXTY'LKE_,G65V=I7X.]G8EBW YSD8&*9:
M^"] M;.^M18F=+]!'=-=323O*@Z*7=BV!G@9XJC#XY,^G17:>'=8S=2K'8PF
M- UR&4L''S81<#)+D=OI4;_$*SM-+UFZU+3+^RGT<Q?:[5PCN%D.$92K%6!Y
M[]C0!HZ7X*T#1KZ&^L[.3[7"C1QSS7,LKJAP"N78_+QP.@YQU-1KX"\-II3:
M8FG%;0W'VE$$\F8I?[T;;LQ_\!(ZFH;7QHTVIG3KCP_JEG=RVLEU9Q3^4#=*
MF,JI#D*WS#AB,9YQ6/X8\?W4W@G1;W4]/O+G5]2=H[>WA$>ZZ(!8NN&VJ@'4
ML1C'N,@'36O@_0;32[W3DT]9+>^YN_M#M,\YQC+NY+'';GCM3-*\&:%HVHKJ
M-G:2_;5C:$7$US+,^PX^7+L>/E&!VYQU-5%\>:?#INI7&HVMW876FLB7-E*J
MM+NDXC";"0^\\ @]<YQBK.E^*OMFKII6H:3>Z3>RPM/;QW1C83(I ;:R,PW#
M(RIY&: +FM>&])\1"W&J6GGFV<O"1(R&-B,;@5((/H>W4<U#:^$="M-)N]+2
MP22UO"3="=VE:<GN[N2S'@<D\8XJ77-<&C+:QQZ?=W]W=R&."WM57+$ DDLQ
M"J !U)K(3Q_8QZ=JD^H6%]8W6F2QPSV3JKRL\F/+";&*MNR .?KB@#1TCPAH
MFAW;W=G;2&Y:/R?.N+B2=UCSG8ID9BJ^PP*@7P)X;70'T+^S0VEO,)_LSS2,
MJN""-N6RHX' P.O')JI!X[4:J=+U'0]2T^\^QRWH2;RV4QIC.&1R"3GIVQSC
MC,-I\1[6YT5=6;1=5AM;@PI8!XTWWKR9PL:ANO!Y.!CG.* .D&AZ:-?.NBT3
M^TS;_93<9.?*W;MN,XZ]\9K+O/ 7AN_OYKNXT\LT\@EGB6>189G'\3Q!@C'C
MJ0<TR#QO9QC4$UFSN='N;"V^US0W11LP\C>C(S!AD8P.<X&.:33_ !F+G4;*
MTO\ 1=1TH:@#]BENQ'MF(7=M.UB4;:"<-CH>_% %O5_!^B:W=K=WEK(+D1^2
M9;>XD@9H_P"XQC9=R^QS5FW\.Z1:2Z=);6,<+:=$\-H(R5$2/C<  <'.T=:Q
MM*\=)JTME+#H>IC2[Z4Q6NH;4:-R,\LJL713M."P';.*?\0]=U#P[X1FO],@
MDDN//ACW($/EAI%!)#$=<[1UY8'ID@ W[/2[/3[B\GM81'+>S>?<-N)WOM"Y
MY/'"@<>E5-<\,Z/XDBB35;)9S"VZ*0,R21GOM=2&7\#7*/XLU:V\>WMG'I&I
MWN[2K:X33XFB'D,6DWEF+A0?NC@G)''K6PGCBUN]&TN_TW3-0OI=3+K!:QHJ
MNI3(?>68*FT@@Y/7IF@"WHW@S0-!GEN+"P NI5V/<S2/-*R^F]R6Q[9J27PG
MHD_AZWT%[$?V=;[/(B$CAHBIRI5P=P(]0<UROB+X@7D?A#4[K3M+O;75;"]@
MM+F"81%H-[)\WWBK!E8 $$\L#@ $UVMQ=-_8,UW-%/:M]F:1X\J9(CMR1D$K
MN'U(S0!F6_@;P];2SS+8N\]Q;/:3SS7,LDDL3XW*SLQ)Z#&3QVQ6B^A:;)#I
ML+VP,>F.LEH-[?NF5"BGKSA21SGK7GD>MZEK/B?PEIULVNC3)=+2^::.:&.2
MXSY6'E.[)50Q#*!DD\ BNK\::QJ%C'I>EZ1*D.HZO>"UBN'0.($"EGDVG@D*
MIP#W(H M-X*\/.FJ(^G*T>J2"6[C:1RKN#G>%SA&R<Y7!S4NE>$]&T9[F2UM
M6>6Y01S2W,SW#N@Z*6D+';STZ5SMWI%]H-S;3V'C6YEO%E0SVFL7<9BGB)P_
M 4%#C)!7N,8K5?QG&?%=QX?M=(U"ZFM'B%U<1J@B@610RL26!(Y/ &>#QZ@$
MNF^!?#NDW\-Y:6+B2WS]G62XDDC@SU\M&8JG_ 0*TM9T/3M?LEM-2@,L22+*
MA5V1HW7HRLI!4CU!KGD\?INLIYM U6WTJ]N$MH+^58PI=VVJ2F_>JD]"5[BB
M^^($=M=ZO!:Z#JM\ND/MO98%C"QKL#[AN<%N#T'/!]L@&A;>"/#UH]U)'8NT
MUW;/:7$TMQ)))-$W4,S,2W3J3D=B*T'T+39(=-B>V!33'62T&]OW3*I0'KS\
MI(YS7,R>+[R?QWH5E8VD\VCW^FO=^:OE@,"8]LGS,& 4-R,9^88!QQ-'\0[2
M2.*_.DZBNA2S""/5F">226V!MN[>$+<!BN.1VYH M7OP]\+ZC<7$UUII<7+F
M66(7$JQ-(>K^6&"[_P#:QFNCG@BNK>6WG020RH4=&Z,I&"#^%<S?^-TM[V_A
ML=%U+4X=-.V^N+41[(6VABH#,"[ $$A0<9]>*Z&SOK?4=-@O[.42V]Q$)8I!
MT96&0?RH SM*\):+HKVCV-HT;VD3PP%YY)#&CD%E&YCQE5^F.,4Z;PMHES9:
MA9S6$<EOJ$YN;E&9COEPHW@YRI^5<8QC'%<7X*^($[>$-"N=:T_4S!<A+>35
MY0GEM,S;1D;MX4MA=VW&?;FN@B\>6LVKZC9KIE^+73))([[4&5!!!L3?DG=D
MC'H#CC/6@#4T;POI.@SS7%C;R?:9U"R3SSR3R,HZ+OD8G ],XK8KD[#QS'=7
M.GB[T74M/L]3<)8W=R(]DK$$J"%8LA8#(W 9^M1ZEX^73DO;LZ!JLNDV,K17
M-^JQA%*G#,J,X=E!ZD#L<9H ["BN:U+Q@MMJLVFZ;I%_J]S;PK/<BT\L"%&R
M5!+LN6(!(49.*P)/&MU)XXM!IEEJ.HVEYH:W4-E$JQE7,I!=]Y4+@<<GKQ0!
MZ)17)KX_T^71;.^@LKZ6[O+E[2'3E11.9D)#H<MM&W:26)P!2-X^L;73M2GU
M&PO;*\TYHEGL9 C2$RG;&4*L58,> <X&#G&* .MHK%T;7Y]2O;BRO-%O],NH
M463;<!'1U8D JZ,RDY'(SD5M4 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 5R/B'2=6M?%%GXHT*VBO;B.V:RN[*241&:$L'4HQX#*V>O!
M!/(KKJ* .):S\3^*KFY34[<Z%I#64UK]D\Y)I9WD7;O<KD*%'0 YR>:S&TCQ
M1JWAW2?"M]H\5I!:26PNM1%TC1R1P,K#RU'S[FV#[P&,GK7I-% 'G=[X3U>;
MP+XSTN.W0W>J:A<SVJ>8N'1RI4DYP.AZUH>*M(O)=<BU5(P;.VT6^@E?<,AW
M"%1CJ?NM7:4V2-)HGBE17C=2K*PR"#U!H \NT*U\0>)O!_A#3;C24M+"V6RN
MY;[[2K++'$%=%1!\P9L+G( '.">*J:YX/\1:O:>(+2]T>;4=0NI)_L=_-JFV
MUCB;/EA8=WRL!Q@IC/):O6;:WAL[6*VMHDB@A01QQH,*B@8  [ "I: .1\/:
M)J%EXJNM1NH!'!+I-G;*=X)\R/S-XP#VW#GH:YC4])O?#?PHM)YQ%#K.CW[W
MUJA<'>S7+D1Y'7>DFW [L*]'UG5K;0M&N]5O-_V:TB,LFQ<MM'H*2ZTG3-6G
ML;V\L8+B:T;S+626,,8F..5ST/ _(4 9.AZ=?^&/"FDV%M9B^NMZ?;6,PCPT
MC%II<D'=ABQQU-=+110!S7AO1[W3O$/BB[N8PL-_>I-;D,#N41(I.!TY!ZUS
M2Z-XHTSPOJGA"RT>*Y@N7N4MM3:Z18TBG9F)D0_/N7>> "#@<UZ510!0M=-%
MGX?ATN-]PAM5MU=N^$V@G\JX;PSX=UZ ^"1?Z:+7^PX;BVN#]H1PP,2JCK@]
M&(/'48YKTBB@#S/Q#X&U/5[CQ'.L$3^;JEG?VD4DVQ;@11*K(67E,_, ?7!J
M_P"%?#DEOXF_M(^&(]'@AMFC5KB]:XN'=B,[<.RJF!WY)QTKO:* .'\<^%I]
M6UG1]8AT[^TTLEEAGLA<F!W1]N&1\@9!7H2 0:S[+P]K=EHFL#2M L]+NM6E
MCMT5[DSO!" 5:69F<JY&6PJ^H!S7I%% 'FB>"=6TSP7XB\&6*+/IDMHYTNXD
M=0P9P=T4G?[V2&QC#8/2H=1\+:C>:Y;>(;SPQ)>^?8):W&GQZ@L<MO)&S;6#
M!U1U(/(SD<>]>BQZG9RZM/I:39O((4FDCP?E1B0ISTY*M^5+<ZG9VFH65A--
MMN;TN((\$[]B[F^F!ZT <)I?A#4;5_#<PTNTLO(U6>]NH+>9G\I'A=%W,[$N
M_*@D<9Z#O3_$?A+5M4_X3H6\4?\ Q-K.UCLRT@&]XP^X'TY('/K79Z1K-KK4
M-S+:;]MO=2VK[UQ\\;%6Q[9%:% %.TGN;G24FO+-K.X>,F2W:17,9]-R\'\*
M\J\,6OB#Q/\ "_P_H#:2D%@ZV[RZE]H4J8(Y X"I][>=H7D8ZG->PD @@\@U
M!9V=MI]I%:6<$=O;1+MCBB4*J#T '2@#RV[\#7EE?:Y&GAA=8-_=RW5K>?VB
M88X_-.2LR;P<*Q/*@Y'I75:-X;N]+\7VMWY$"6,&@0V ,)(42+(25522P7&,
M9)^M:FN^*=/T"6WMIUN;F^NL^19V<)EFD ZD*.@'J2!4>B^+K'6=1DTUK6^T
M_48X_.^R7\'E.T><;UY(89XX)Q0!S-UX3U>7X?>(M)6W0WE[JT]U GF+AHVN
M1(#G.!\HSBM#Q-X>U+4O$5Y=VL*O#+X=N[!6+@9FD92JX/; //2NUHH X/3-
M#UG3/$VAW1L!-;#08]-NG6=0;>13NR0?O#M\N:YR#P1K3>'O#"W^A+<3Z 9K
M:2R6^"?:XG"_O(W4C:00/E8C(STKU^J=AJ=GJ?VK['-YOV6X:VE."-LBXW+S
MUQF@#SM/ ]_<Z-JTMKHUIH]V]S:W%E!+<M-(Y@?>!,^YEP3D +TSR36U:P>(
MM6\=Z5J]_H8TVQL[.XA(>ZCDD,DAC/\  2-OR<=^#D#BNVHH Y+Q;8ZS)KWA
MS5=(L$O?[.FG>>)IEC)5XRF%)[\\=O4CK5&#PW<:R/%5_P"(K>/3H]:MH[1+
M9I5=H(HU8!V8?+NW.3P3C YKNZQ/%TFC0^&KF77[1;O35:,2Q-&'!)=0O!_V
MB* .?^%D%[<>'9/$.JL)-1U8HS..ABC41QX]CM9_^!TOBS2-7OO%$$S6%YJN
MABTV"SM-0^R[+C>27D&Y=ZE< <G&#QS7<111PQ)%$BQQHH5$48"@= !V%.H
M\9ET?6O"_A[1X6TVV2\;Q?\ :+>U2?,;(Z2$*'QD<94$CMDBKWC.PU6^T3Q7
MXEU2P_LU1HAL;:U:999"-^]G<H2HYP  3T-=C=>)=!NVB^TV[S&VUI=.BWP@
M[+O'##T #?>]S70W=G;7]I+:7D$<]O*NV2*10RN/0@]: .-CM/$'B/6] GU/
M24TVUTEVN9)/M*R?:)3&441A>0GS$DM@]!BLG2O ^K+:>&;2\A6)+6VU."[9
M9%)C\]ODQSSQZ=*]- "@ # ' %+0!PV@+XPL=/T70&TJWMH[ 1PW.HM.DD<T
M,8Q^[0'>&8 ?>  YZUQ^H>"O$VI^'IK6]T6:\U[SA))J=SJNZ&0"4-^YCW87
M*C !50!GFO::* .#$7BC1/%/B6\L= 34+;4I87M7%W'&49840EPQ^[D=LG@\
M<BLZW^'5]#;:9I3RJUO'X>O-.N+E2/EFF9#PO4C[WY5WMUK-K9ZSIVE2[_M-
M^LK0X7*XC +9/;@BM"@#RC1O!=ZDVBVL_A&WMY;*:)[K4)M1>:%_+YW0QA]V
MXD C< %]Z[3QOI-YK7ALV=C&))_M=K+M+!?E2='8Y/LIKHZ* /*];\*Z_JEW
MX@AO=(GU.6[DD&G74FI^7:6\3+A%,(;.Y3G/R')[BIM6\$ZQ?:-X3A@B2.6.
MRATS5U,@XMOW328.<-@QD#']\UZ=10!PGAGPEJ&F>.M6OKL)_9<1E.E ,#C[
M0XDFX_APR@#ZFNG\.ZM+K>AP:A/:"TDD:13")1(!M=E!#  ,"%R".QK4HZ4
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
MW5O+(L^=C(DJLP/!SE01B@#FKH6_@SQ?';V5]>1Z=/I%U=7R23O<>3Y6PK.
MY8ACN8'L<5SD+7>GWWA#4K:RU6T%]J$$+WM_JQDEO8Y%8G?"&91D8;MMXP*]
M0TSPGH6CK<K9:;$GVE/+F+DR%T_N$L2=O)^7I[55M? 7ABSD@DATF,/;R+)
MSR.YA*G(V;B=HR!P,#VH XNXOK^"6^\ K>7/VVYU9!;3^8WF+82YF9@V<_*$
MECSVXKK_ (AZA=:3X$U"YL9VMY1Y47GIUA1Y%1G'H0K$Y[8S2:?H%_/XXNO$
MFKPV4;PVQL;!;=B[>5O+%W) PQX&!G'//-=+<6\-W;2VUS$DT$JE)(Y%#*RG
M@@@]10!YM=Z+IGAGXB^%Y+6\NA$;6^>2.>ZDG VQJ3(-Y)!/?'7 ]*YR2>YM
M[+P_K]E;:O']JU.U U6_U7Y[N.20 C[.K%=K*3\N%P!7J.F^"?#FDW<=W9:7
M''<1JR)(SL[*I&"H+$_+CMT%01?#[PK!MV:/#A'#QJ7=A$P8,#&"<)R!]W%
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
MUDB^T:1>6\UT _ 5$<-@]^6%)KG@O4M6U#Q1-#)#"U[]@FL7<Y'FVY+8<#D
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
M6'1Y[Z!O/20,@!7<K(>&#$<4FCZW.;O3XT74;[43X<@NC;_:%6*4E@"WS?\
M+0G/S$XQ6);>!=275]4O;70K+2[:\T&YT](4N?-E,SE2K2-CG."."<8Z\\:?
M_"/^)M+GBU#2K>UEO8/#<.G1+++A?M"N"2?4 9/OC% &E8^.)IO$%QI-]H5Q
M8FUMC=7<[7$4B6Z8)&\H3@G!P.N.>E):>/#,=.NKO0KVSTG4I4BM+Z5T.YG_
M -670'<@;C!/J,XS6=H&A:S'H=UH%_H2P1ZE%,+_ %0ZBLLLDCH09"H09).
M!G@8]*RM'\!7EN^D6<WA3189+*6,W.J&<R"98_XHX^"'; //"\]: +_C#QU>
MOX5\1S:-I5^;2T2:V_M6&5%V3*"I95SN*JW!8>AZ@9KM;B:5?"\LXD82BR+A
M\\[MF<Y]:X6_\.>*K3PKKOA33-/L[FTO6N6MKZ2ZV;(YF9V1TQDL"S $''()
MQBN]FM)7\/R62@><UJ8@,\;MF/YT <5X2\<7B^&_#3ZSI5^EM?106RZI-(C>
M9.R@ NN=P5FSACUR,XS6XWCBS3PSJ&L/:3B2QNWLI+/(,AG$@14'8[BRD>S"
MN>L?#WBF]\/^'?#6J6%G;6FFO:R7-['<[_-6##*B)@$,2J@DG P<9S39M)6_
M^,)@M+F*73 L6K7T*'.RZC#Q1@XZ$_*V.N8LT =CXLUT^&O"&IZUY0>2TMRZ
M1D\%^B@^V2*Y>Y\.266DQ7>N>/-2LM9F3<+AK]8;=9<9VK"<(5![$$D=Z[+7
M]&M_$6@7VCW1(AO(6B9EZKD<$>X.#^%<A)%XS:PATO4?"VAZS- -D>HSW0$3
M<8WM&R%@?4#\#0!<G\:76F6N@67V)=<U?4[:1E.F3)Y,CQ!=Y#L0 OS$Y]L5
M/J'C'4+7[8]OX6U"X@L8P]W*TL<04[ [+'N/[S:#R1QG@$UG:!X)O]"NO!\9
MEBGATBSNX;B5?ER\I0C:#VX8?A6;K/@W6=3U/71>:1;:LUY(QL+V[OF$-I$4
M 5##@\J<G@?,3R10!T,_CM9;[3[+2-'N]2N+_3EU& (Z1J(F.,N6/R]1Z\D5
MCZOX\U&YT[P]=:/IMRCW&LFQO;9WC5U=-X:$DG')7.X'&%ZC.*O^%O#.IZ7J
M^BW5W'&J6GAR+39=K@GSE=2<>HP.M9]QX3UVWTQ9+6U@N+JW\42ZND#3[!+"
MS28&[! ;#@\^E &Y>>-)DOM0ATO0;S4X=,.V]GADC4(^T,40,078*02!Z@9S
M3IO&\-Q+86^@Z?-J]S>68OE2.18EC@)P&=G/!)R .3P>F*Y:_P# EU;ZSK5Q
M'X7T[61J<YNH)[BZ\IK9V4!D<8^9 PR"O/)%.OOAY):ZCIM^-"TW68X]-2QN
M+)9/LXC=6+!XLY&WYF!4GT- '>>']=@\0:<]S%#+!+%,]O<6\P&^&5#AD."1
M^(.""#61J_C*\TYM2EMO#5_=V&FY^TW7F)$#M7<QC5R"X /7@$\#-6?!>B2Z
M%HDD,]C86,L]P\[6]EDI&#@ %C]Y@ ,M@9]*XW6O!.M:I<>((KS2+;5)[V64
MV.H7=\WE6T3+A%$.#ADYQ@<GDF@#J+GQOOU"&QT72)]4G>QCOV59HX<1/G;C
M><LQP>!TXR>:Z33KT:CIMM>BWN+<3QA_)N(RDD>1]UE/0BO.]1\):A<66DP7
M_AC3]8CMM-@@4I=?9KBUF1<-B4<E#QC!!&#P<UVGA33M1TGPMI]AJMX;N^AB
MVRS%BV3DD#<>3@8&3R<9H Q;SQ[/8PMJ,_AO4(]%2X$#7LCHC#+^7O\ *)W;
M-Q^N.<5TNM:G'HNA:AJLL;21V5O)<,B]6"*6('OQ7DU]\/O$.H:!/9W6C6EU
MK?G>8^LW6H&3S0)-P\M"#L) "XX &>M>H>*=/N-7\(:SIMJ%-Q=V,T$08X&Y
MD(&3VY- &(GCR5M/MKA_#M_'/J$JQZ7;&2,R78*E]_WL1J%&3NQ@4Z7X@6]A
MI^JR:MIMS97VF"(RV9='+B5ML;(X.TJ6XR2,8.<53\4^#;C5M+\.2K9VU]<:
M1CS+&XD*).K1['4,!PP(!!Z<53L?".HPZ=K<UIX;T+3I+J..*"PFS.)44Y=9
MGZ?-R  #CJ<T ;W_  F%U:Z=JUUJOA^]LCI]DU[PZ2Q3( 3A9%.W=\OW3CJ#
MTJ_<>)(+>?08F@D)UERD1!'[O]TTGS?@N.*XK3O FH/'KMO;6"^']-U#2I;-
M; 7IN$,[YQ+CH@ XP.N>@J];:5XJU'5?"<FH:7:65MHLC>>RW8E:4F!HPR@
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
M7DS7YFO7MUNI1'N6,R ,54GH@Z[ /4T >N5FW&M6UMK]CHSI*;F]AEFC8 ;
ML>W=DYSGYQCCUKRB]EU;0M-\16*2P:78F2Q62VM=1>X?3UEE"RN&*J4#(<X[
M<D8KH8M"TG0?BQH$.E%HQ)IMVSV_GLZKS$ X#$X+<@GOM]J .VU'6K;3-1TN
MRG25I=2G:"$H 0&5&<[N>!A3TSS6E7!_$.SM;_7/!MI>S/%;RZFZN4D,9;]Q
M)A-P((W'"\=<XK$N]'G6^\6^'_#L\R0V5K:ZA9QB5F%M> NWEKDY <(N5Z?-
M[T >KUD:_P")+'P[! ]T)YI[F3RK:UMHS)-.^,X51[<DG '<US?A'6!XS\2S
M^(H'<:;:645K;IN^4S2*LLQ(]5!C3\&I?$$\6F_%7PY?ZBZQV,ME<VEO+(<)
M'<LR-@D\ LH('KC% &GI_C2&YU>WTO4=(U/2+JZ#?9A?1ILG(&2JLC,-V.<'
M!KIZX+Q+K>M:3XGT6*<^'[BQO-4B@MX6B<W4:L"#("6QD#(R!_%6%86VG6>C
M^,O%.IW6HK<6FHZA!%<6\[;X(MY7;&I.P'+'!(X)'I0!ZU17C^GVT^B>/O"2
MQZ2-'%\9XY5.JM<2W2"%FS*N-O#!3G)YJC#I<4'PKB\5K<79UN&_W171N7)1
M?MOE[ ,XV[<@C'.30![#;:M9WFIWVG02%KFQ\O[0NT@*77<HSWXYX]:NUXWK
MD9T*^^)NK:2K1:C#';;)5=LQB5%,C#KC'+9QQCBK>FV.HZ'XCT.6QLK'3EN5
ME$D:ZU)=-J*B,L#M9!E@<-OST)]: /6:*\'TU=9N/"%AXG6*S@U26>.5M9GU
MJ0,TAD ,31;,;3RGEYP/PKUKQIJ%OI?@W5;NZN+NWA2 J9;(@3*6(4;"> <D
M#)Z9S0!O45Y#86\^@_$3PW$NEIH:7L-TLT2ZFUS).JQ;@TBD;<@@'.22<U!X
M?A;0[[P_?:C;O<K>7:PP^(--U)I!?-(&"B>)^<'J<9VD<8Q0![+1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
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
M21R6.E6MNT<SW"&-,;)'7:S#T)7CZ5:?1].E>]:2Q@<WRJMUO0$3 #: P/4
M<5QT?C&\T[1?#=K9^1XHO]2\V".ZMYQ#'*\0)+$X(' .3Z@X':M"_P#$_B&V
M$GE>&80+:!)+F2[U 01EV7<8XFV$2;>A8[1F@#7T?POH?A^2232M+M[6210K
MO&OS%1T7)YQ[=*L:MHFF:]:I;:K8PW<*.)%25<[6'0CT/)_.N67X@3WYT*/1
MM$:[FUFP>]B$MR(EB"E<ASM/'S'D \@<<Y&5K?C76[S0[*6PTX6=]#XAATV]
M@-WQO$B_('"<HX89.!@'H: .RO?!_AW4=3_M&\T:SGN\J6E>,$L1T+#HQ';.
M:M76@Z5>ZI;ZG<Z?;RWULC)%.R995((*Y].3Q[FN<N_&]\=2OK/2]'M[LZ<%
M6\:;4%@_>E0QCBRIWD CD[1DXHE^(,-W'I":%:)>76IVIO$6YN!;I#$" 2[8
M;G<=N #R#Z4 :EMX&\+V<BO;Z%91NCK(C"/F-E;<-O\ =P0#@8Z5L6EC:V(F
M%K D/GRM/+L&-\C?>8^YK+\,>(T\16MT6M_LMY97!MKJ#S!($< $%6'WE(8$
M' ^E<3KVMZ^;[XBVK+Y=G9Z0KP.ET=T!,4I5E4*.6(R>>-HZ]@#N-4\)>'];
MO%N]3TBTNKA5"^9)&"64= W]X>QR*T/[.L_MD%W]FB%Q;QM%%(%Y1#C*CT!V
MC\JY'1/%NJ)/X?LM6T,VMOJL6RUN?M8D<NL6_$B;1M)4$\,WO4%G\2+J;1+G
M7+CP[)#I49:&"1;I7EN)Q+Y2QJFT<%C]XGL>.] '8:MHNF:[:K;:I91742.)
M$60?=8="#U!]Q52'PCX>M[:XMX='LXX;F$03HL8 E3).&]>23SZFLR#Q;J-K
MJL.G:_HB6$UW!+-:/!>>>DAC7<T;':I5@.>A!P>>*>OC16\+^'=:^P'&LSVL
M(A\W_5><0,YQ\V,^@S[4 =#!I]I;7=Q=PV\<=Q<!!-(HY<(,+GZ FN;U3P19
M:YXS?5]5MK6[L_[/2U2*0'>LBR.Q8'L,-C@^M4K_ ,>ZC#9ZQJFG>'?MNCZ6
M\L<MP;P1R2-'D.43:<JI!!)8'@D XYI/K^M2?$4?V3IQO/M/A^WN/L\UYY,,
M),LF23M;YCP.%YQV H [F/1=,A6Q6*PMXUL,_9%2, 0Y4J=H'3@D?C575_"N
M@Z_-'-JNE6UU+&NQ9)$^;;_=R.2/8\4>&->7Q)H46HBV>UD+R12P.P8QR(Y1
MER.#RIY]*\TU;Q%XA;POXTFND=!9ZW!' T%T6= )+?\ =*-J\$'.<\ER,=R
M>OP00VMO';V\210QJ$2.-0JJHZ  =!69=>%]"O;ZZO;G2;2:YNX/L]Q(\8)E
MCX^5O7H/R%9=EXMOH]>;2M?T>/3&>S>]AECNQ.IC0@.&^5=K#<#QD>]9MK\1
MY9(;'4[G2([?1+Z9(XKC[<K3H)#MC>2';\JDD=&)&>10!T%IX,\-V)5K;1[6
M.10P$@7Y\,I4C=UQM)'6KO\ 86E?9+&U&GVX@L'5[5 @ A91@%?0C)JOXFUW
M_A&]'.IO;&>WCFC6X(?:8HV8*TG0YVYR1QQGFJ&L>-;31=2U"">!FMM.T[[=
M=W"-G9N8K'&%QRS88CD=!ZT 7?%.EWNKZ*UI9&R9C(K207T(DAN$'6-^"0#Z
M@9! K"\+^!AINI7]_J%AI%LES:"R73]/C)A$>XLQ<L 79BV#P. !S4NG^-KL
MZKIUGK&DP6*:D2ML\%\MP5D"EMDBA1M) .,%AD8S4?A[QU?>(I+6YMM$B?2[
MF4Q^;!?+)/;]<--%M&P''/S$C(H V++P5X:TZ2*6TT6TBDA<21R!,LC#(&">
M0!D\=.:O0:%I5L]L\-A!&UM))+"57_5M)G>1[MDY^M>=6OB/59=*UN77+61H
MHO$D=M%]GOR&0F6-0@(0?(N0?]K)! ZUNWGCG5ENM>33?#8NX=$E*W,LE\(M
MZB-7^0;#EL$\' Z<\X !T]SH.DWB7R7.G6TRW^W[4)(PPFV@!=V>N !CTQ3=
M'\/:1H"2KI6GP6OFD&1D7YGQTR3R<=JPW\:7-_=V=IX=TD:A//81ZA*;BY^S
MI#%)]P$[6RYP>,=NM:7A/Q&WB?2IKU["2QDBNI;9X)'#,K1MM.2.,Y'3GZF@
M#5^PVO\ :/\ :'D)]L$7D>=CYO+SNVY],\UEWO@[PYJ6I?VC>:+9SW9*EI'C
M!WD="PZ,1[YK(N?&NIR2:K/H_A[[?INE2O#<3M=B*21T_P!8(DVG=MZ<E<D$
M"L2]OKCQ3\1O#JPV[3Z(^FG4(-M^\.X%XOWK(HY*[L!"2#D\CI0!VVI^%-!U
MF]2\U'2K6YN$39YDB9)7.=I_O#V.14UMH&D6;6S6VG6\1M7DD@V(!Y;2??*^
MF<G-,UW4[[38;==.TJ34;FXE\M5\SRXXQ@DO(^#M7CT))(&*Y=_B0]II'B"X
MOM)07FB- )H+6[$R2K*0%*/M'/7@J.GO0!N7/@7PM>+ MQH-C*L"%(@T0^12
MQ8@>VYB?QJ:/P=X<BTB724T6S%A+)YKV_EC:7P!N]CP.:RHO%VL1:O\ V7J/
MAQ;:ZN+.:ZL5CO1*)C'C,;D*-C?,O3<.>IJ>W\:V][I_AFXL[4S2ZZX"0^9@
MPJ$+2L3CG9C!'&3@<4 :MAX;T73-.GT^STRUBM+C/G1",$2Y&#OS][CCFH=+
M\(^']%N%N--TBUMIU#*LJ)\P!QD9ZXX''M4?BOQ&_AK3[6YBT^2_EN;R*TC@
MCD",6<D#D\=:RW\=MI$FI0>)=-&GSV=D;]1;W'VA)X@=IVDJIW!BHP1_$.:
M.CU31-+UN*.+5+""\2,ED69 P4D%21[X)JHNC#0=#GMO"MAI]M<,V]$FW+&[
M$C)<J"Q.._/05EVWBW5(-2TRWU[0!IL&J/Y5M-'>"8K+M+".5=J[20#C!89&
M*Y;7?'OB/4_A[K&L:9HGV"T2&18[XWX\P,LFQBJ!,]C@Y'0^QH [SPGX?3PS
MX=M]-#I),"TL\B+M#RNQ9R!V&3@#T K2O].LM5LY+/4+2&ZMI!AXID#J?P-<
M=>>*X=$UW4KO5[.>">TT6&YFCANC+&=TSJJ(NT L6&-W&<@=JO6GBO5(-7TZ
MQU_05TU=2+):RQ7@G D"EO+D^5=K$ XQN'&,T 7]'\&>&] N3<Z5HMG:W!&/
M-2/+@>@8\@>PK072-.2TNK064'V>[=Y+B(H"LK/]\L.^>]<5#\2-1DT>+7G\
M-&/0_M/V::X-Z#(O[WRMZQ[?F4-CN#UXXR>QU[6K;P[H5YJUX',%LF\J@RS'
M. H'J20!]: *EAX-\.:9-#-9Z-:0S0N'CE"9=" 0,,><88C'3DU<_L+2O[)_
MLK[!!]@W;OL^WY,[]^<?[W/UKGX_%NLVVH6=GK/AZ.Q?45=;)DOA*IF5"PBD
M.P;"0#R-PX-9WPJCN[K2K[6=1@<7=Y=3!IVOGF\P+-(NT(0%0+@*,=0,\=*
M.P?0-)DU:357TZW:_DA,$DY0;GC/\+>H^M5M*\)>']#NVNM,TBUM9V4IYD:<
MJO7:/[H]A@5Y_P"(]=\0,OQ)@D!AM;&T3[-)'='=#F/*E0%'+ EB<\'CGK75
M:9XLU/\ MG2=,U?0OL,>IQ.UG,+L2L2B;BLB[1M.W)X+#M0!J+X.\.)J_P#:
MJZ+9B^\SS?-$8_UG]_'3=[XS6M=VEM?VDMI=P1SV\RE)(I%#*X/4$&O/=-\<
MK9Z)H5KIUBK7&I/=F(:EJ6Q%$4Q5LRE268D\*%Z?2NXT6_NM2TU;B]TZ33[G
M<R26[N'P02,JP^\IZ@\<&@"II_@_P[I4\,]CI%K#/"VZ.54RZG:5^\><8)&.
MG-)9^#O#EAJ?]HVFC6<-V&++(D8&UCU*CHI/J,5N44 %%%% !1110 4444 %
M%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %%%% !7"^)_"=_JGBV'51IVE:S9+:"!++4YF1+>3<
M295 1U;((!R >!S7=5E^(M<A\.:)/J4T4DWEE42&/&^5V8*J+GN20* ,SP+X
M=O?#.BW5E?/:/)+?37*FT4K&%=MP 4CY<<C'.!CFHK7PC(^G^+K"_E3R-=NI
MI$:(DLD;PI'SD#Y@5)[CI6WH6LVWB#0K+5K7*PW48<*W5#T*GW!R#[BM'(SC
M/- 'FVC>!=0M;O28I]"\)VJ6$B/-J-K:J\]UL^[A6C'EL2 2P8D'I3-2\"ZU
MJNI1M<6FB)=1WBSIX@@9HKL1"3<%,:H 6V_+DMC'.,UZ4\D<:;W=57U)P*4L
MJKN+ #&<DT <!?>&/$\3>)[#2FTMK#7I'F^T7$KB2W9XEC<; I#?=&#D8[YZ
M4_\ X0;4)$N8WN+95G\+IHNX%B1*-^6QC[OS#W]J[LR(-N74;ON\]?I6;X;U
MR+Q)X>LM8@A>&*[3>L;D$KR1SCZ4 )X<M]0M?#ME::K';)=P1"%Q;2,Z$*,
M@D \@ XQ7&?\(=XF3PI)X*BETT:*VZ%=0,C^>ML6R4\K;M+X.W=NQWQ7I%<;
MXD\;:CX;E=I?"E]/9>?'!'=1W,(61G(5<*6W#)..10!I:/H,^F^*]<U(M%]E
MOHK6.!%)++Y2LIW<8_B&.346LZ-JDWC+0M;T_P"R/%:1S6]U'.[(WER&,EDP
M#EAL/!QG/6F)XMNX&TY-5\/W6G2W]\+*)))XI.2C/ORC$8^0CUKID=)%W(RL
MOJIR* .%;P5J1^%MQX8\ZU^VR3R2!]S>7AKHS#G;G[IQTZ_G574_ ES'XAU:
M_LM"\-ZO'J;B8-JT?[RUEVA3@^6V]#@';E><UZ(LB/G8ZMM.#@YP:4D*"6(
M'))[4 9VAZ8VD:!9Z<SPF2&(*SV\"PH6ZDJBC"C)/%<+'X%UJYUW3+R\L]$M
MKNRNUGGUJQ9H[B\13DHT2H%!88#98CKBNWL]=AO?$6H:/'&WF64$,S2Y!5Q+
MOQCZ;#^=::R(^[:ZMM.#@YP: /)=1^&FLWNF:U8-8Z#/>WLDSIKMT[R7!5F)
M5-I0["!A<AL <@&MW6? %UKKZ\MQ/;QQZC86<,1 +[)H'9\LI !7)7ZC/2NN
MT36K37]'AU2R+_9IMVTR#!PK%<D=NE7U='0.K*RGH0<B@#AM \)WMOX@L[^X
MT#POI$5HCACIENKRSR$8R&,:F-0"> 23G!.*V/%&AWVH7.DZKI,ENNI:5.TL
M4=R2(Y4="CH2 2N0>#@X(Z5T/F(02'7 SDYZ8ZTGFQX0^8N'^[S][Z4 <#J'
M@_7-?M_$=[J36%OJ6I:7_9MI;PRL\4"99LNY4%B6;LO '>NV^S2_V3]D2;RI
MO(\L2ISL;;C</H>:(;N634KJV>SDCAA5&2X9AME+9R .HVX&<^M65=&9E5E)
M7@@'I0!Y-;_#;6%L-+M_[+\/6]W8WEO<7&I+*\EQ?&.0,Q+&,%"<$GEN>.!S
M786OAF]@MO%\;20$ZS<22V^&/RAH$C&_C@Y4],\5U/F(9#&'7>!DKGG\JQ6\
M2Q31:P-/M)[VYTN8020)M4R.55L*2<='')QWH X/QAH[1Z'X0\.VVI01>(XX
MH].*1/N<V\D)BG<#@[ %+!B.J#O7J=K;0V5I#:VZ!(88UCC0=%4# 'Y"FO#:
MK=)<O'"+@KY:RLHWXZ[0>N/:IF94!+,  ,DDXQ0!YI/X%UJ_U>SGNK31(KNV
MO5N&UZU9HKJ:-7W;3&J ;B/E)+$8SQ6TGA._7PQXPTTRV_G:S<7DMNVYMJB5
M J[^.#D<XS^-=B"& (((/((I&D1,;W5<G R<9- 'G-UX'U,ZU%=S:;HNMPBP
MM[:%-2E<+9.BD,R)L8,&.#_">.HJ?PWX%U31AX56YN+.0:/-?O,T6Y?,6<L4
MVKCC[W(SQV)KH?$7B5]%O=-T^TTV74+_ %!I!#"DJ1@*B[F8LQP."/K5_6-:
MM-#M8;B\W[9KF*V0(,G?(X1?PR>: .+U7P+<IXCU;4K+0O#FL1ZFRR_\39,/
M:RA0I(/EON0X!V_+SFIK[P?JBZ7IEA_9_A_6K*"V,4]E=6ZVJ+,3DRQ%(VV]
M2-N!ZYSFNIL=?M[W6]7TP(8WTUX4>1V&V0R('&/P.*U6=44L[!5'4DX H P?
M!F@W/AOPQ;Z9=3K+*CR/A&9DB#,6$:%N2J@@#/I7":C\-=8O;'7+)K'0;B\O
MY)GCUR[=Y+@(Y)5-A0[,#"Y5L <@'I7K0((!!R#WIK.B%0SJI8X&3C)H XP:
M'XCT36KO4]%CTVZ.HVT"7,-W.\0BFB38'5E1MRD8R" >.O-,C\.^)M(U2VUF
MSNK+5=0EL5L]06[8VZR,K,RR(45L8WL,$<C'.:[C(SC/-5)[R6*_L[>.TDFB
MG+B2=6&V':,C<"<G)XXH \Q\/Z-K6IZ%'?6LEE)J^E^)KVY=)2R0SG?(CJ"
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
M<TD&EM&<QJTQ66XVGH0'PH(]Q7HX:.6/(971AZY!%,MX[:V@\FV2**&/C9&
MJIWZ#I0!Q_Q,^U_V7H?V%XDNSKEF(C*"4W;CC=CG'KBJVH>"]4\62ZG=>('M
M+*2?33I]K#9R-,(LN',C,RKD[E3@ <#KS7=E8;A$8JDJ@AU) 8 CH13ED1\[
M'5MIP<'.#0!QG]B^)]<U+1F\0+IEO:Z5<"[)LYGD:ZF52JG#*OEK\Q.,L>U1
M#P3?M\)KOPH]Q;+>S).%D!8Q@O*TBY.,]" >/7K7<>8A?9O7=C.,\X]:$=9%
MRC!ATR#F@#@M4\%:KXEN-2N-3EM+.2^TB&T_T9VD\J>.9Y0PRHRN2GOU'O5Q
M-&\2ZWK6CW/B!-,M;;2I3<!+*9Y3<S;"@;YE78H#,<?,?>NQ61'SL=6P<'!S
M@T>8A?8'7=C.W/./6@#A?^$*U+_A5I\,>=:_;?/\S?N;R\?:O.Z[<_=XZ=?S
MKI/%6A#Q+X9OM(\\P-<(-DH&=CJP93CN RCBI]/UJTU+4-2LK<N9=.F6&8L,
M#<45^/7AA5]Y$CQO=5R<#)QDT <<FC>)=;UO1[GQ FF6MMI,IN EE,\IN9MA
M0-\RKL4!B<?,<]ZU?!VBW/A_PY'IUV\3S+<7$I,1)7$DSN.H'.&&?>K%SKT%
MMXEM-$>-O,N;66Y$N0%58V0$'_OL?E6J&4KN!!4C.<\8H X#7_!VMZA=^+X[
M1[ V>OV<:(\LKJ\4J1[ " I!4]<YS[5OZEH-U>>(O#.H1O"(M+:<SAB=S;X2
M@V\<\GOCBM#6-7@TCP_?ZN1Y\-G;R7#+&PRP12Q /KQ572_$D&J:S<Z;'!(C
MP6EO=EV(P5EW8'U&P_G0!RD7@S6K+PQIFF/::)J\$#7)NK"]XC<R2LZ.DAC8
MJRAL$8QR?0&NA\#^';GPSH,EE<O$#)<R3I;P.SQ6J,>(D+<E1CT')/%7Y->@
MC\4KH3QLLAL6O?.) 4*'"8^N36KD!=V1CKF@!:*175U#(P93T(.0:6@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH *\^\8SZEJ_C?1=&TBUMKLZ6
M/[6NH[F<Q1[N4A!8*QSN+-C'\(KT&H8[2VBN9KF.WB2XF"B654 :0+]W<>IQ
MDXSTH \CBL=4^P^+O!][;P6M^ZG7=*CMYC*BG?O*JQ53Q*@XQ_'6;-XLN$U*
M7XAVOF&WU.*;2+2+J-XA5XOSF65?QKVYK.V>[CNWMH6N8U*),4!=5/4!NH!J
M!=(TQ;2&T73K06T,@EBA$"[(W!SN5<8!R2<CN: /,+C1K&#5K#PTNDZ;J-QI
M.CQ>;)K5SMM8PS'<Z1[&W.2"2W&.!FL;0;.UUW1O!&G7A2XL#K6H1;(W;RVB
M59BJ#)SLP ,'MQ7LNH:#H^K313:EI5C>2P_ZM[BW21D^A8'%2QZ7IT3H\=A:
MH\<K3(RPJ"LC##,..&()R>IS0!YS;Z+X9D\6>);/7X+2.#38+=-.CG8*MM:>
M4"7BS]WY]V6'(('-;?PPNK6#X<>&K=[F-9)X&$"2. \N"Q.T'DD#DXKJ+[1-
M*U2:&;4-,L[N6 YB>X@61HS_ +)(X_"GQZ7I\7V;R[&U3[+G[/MA4>3D8.SC
MY<CKB@"W7%_$_P#Y%:U_["ME_P"CTKM*AN;6WO(Q'=6\4\88.%E0, P.0<'N
M#R#0!QGQ'L+?4Y_"5E=(7MY=;19$!(W+Y,I(..QZ'VKD?$MNWAH>/+/PY$+"
MW^P6$QBMLHD6^1TE=0OW?W8.2!VS7L4UK;W#1-/!%*T+^9$70,4;!&Y<]#@D
M9'K2?9+83RS_ &>+SID"22;!N=1G )ZD#)X]S0!Y=H&FC3/&^@&R/AO3UG@F
M#V^D2RR&\A"9#/\ )M^5MI#L<GD9.<5T'C]8)]3\+V6J%?[#N=09;T2'$;L(
MF,2/ZJ7 X/!(%=-IV@:-H\LLNF:38V4DO^L:VMTC+_4J!FK5W9VNH6LEK>VT
M-S;R##Q3('1A[@\&@#Q;6DM=%D^(J>%&2!([/3Q(MJQ"6X,CB4+M^Z A)..F
M2:U=(T:"U\7Z+!#'X8L[:\MIXY[32Y)9?M]N8_\ EH-FT@'!W,><D9.<5Z;8
MZ-I>F1M'8:;9VJ,@C98(%0%1G .!T^8\>Y]:9IV@:-H\LLNF:38V4DO^L:VM
MTC+_ %*@9H \4LX(8_A[X/L[.+3DLKS4Y5U)9W,<,L@\SRTG* G!*@8(YPH/
M%6=9M)=.T#QO:P3:1;0"Q@>33])>1H[>4R<.,J%0LO51S\H.*]C&@Z.MM=6R
MZ58B"[;?<1"W3;,WJXQAC[FDM] T:TTZ33K;2;&&QD.7MH[=%C8^Z@8/04 <
M%K/@[0+7Q?X/T>'3HDT^9KV6>#DK.PB3E_[WW5)SUQS7/W7AC1T\'_$&X6QC
M\S2[RX73SS_H86-) (O[GSL3\N*]IDM;>6XAN)((GFAW>5(R M'D8.T]1D=<
M5&=.L6AN86LK<Q71+7"&)=LQ( )<8^8D #GTH \A\5R/):?$*0NV]M*TQBP/
M.3OYK?OM(TGPAX\\/3:5:"S2>ROA>&W'S3K&B."W]]@<G)YR:[V32M.F6=9;
M"U<7"JDP:%3YBK]T-QR!G@'I4TEK;RW$5Q)!$\\(812,@+)N^]M/49P,XZT
M>$.EM#8>$]9M--T?3_M>JVCP7/VPSZC.KR#=YC!1G()W E@,XJ]K.GZ79Z%\
M4#;6UK#>"[51L55<1E(6^NTL2?3)KUB'PMX>MGE>#0M,B:5@TC):1@N0=P)P
M.<$ _49J>;0])N+F>YGTNREGN(Q%-*]NC-*@P0K$C)' X/H* ."BT_P_K/BO
MQ>?%R6DT]K*B0+>L,06GE*0\>?NY8N2R\Y'6L3PS8)XFU3P='X@B:]3^P[J3
M9=9(F03H(RX/WOD*MSWP:]7U#0='U::*;4M)L;R6+_5O<VZ2,GT+ XJU]DMO
MM*7/V>+ST0QI+L&Y4)!*@]0.!Q["@#D?AQ#'9VGB'3[<;+2SUNXAMX@?EBCP
MC;5]!ECQ[UE"PT'6O'/BQ/%D=I.]J(5M([TC;#:F($O'GIE]^6'((ZUZ)!:V
M]L93!!%$97,DGEH%WN>K''4\#GVJIJ.@Z/K$D4FIZ58WKQ?ZMKFW20I]-P.*
M /)O#^G6VKW_ ,/+K5+2.\EDCOU2>ZC#22PQG,!8GDX7!!]\]ZZ_XJ65A=:!
MICW]O!+''J]F&:900J-,H?.>@(R#[5VC6ELTT$S6\)E@!$+E!NC!&"%/;( '
M%)>65KJ%J]K>VT-S;R##PS1AT;OR#P: /-K/PKH&M^,_&WV[3K>ZAA2TCMU<
M92)?LR\H.@.,<CG@8KG;>2_UF#P%:7JZ=>6DNBM+'%J\K"">X4J/FP#O<)R
MP[D]:]IM]/LK/?\ 9K.W@\Q55_*C"[@HVJ#@<@  #T'%0W&AZ1=Z:FG7.EV4
MUC'C9;26ZM&N.F%(P* .6^&T3VUOK5LMU82VD5^5BM[!I'AM3M4O&K.HR,\X
M7(&XBN4U*SDUCQOXK&J6OA^Y%J8TB76)W0V]OY8(>+"D*"2Q+ @Y'M7KEG96
MNGVJ6ME;0VUO&,)%#&$1?H!P*JZCH&C:Q+%+J>DV-[)%_JWN;=)"GT+ XH \
MFU.34H_"WA2ZT2_>_P#&36<B03VZ,?M%IM.YG$@4D ;"I8<OC&<FM:T&CQW?
MP^;1)I/[/:*_<3'F4L8"79^YDW9S[YKTU+*T2[^U):PK<^6(O.$8#[ <A<]<
M9[=*BBTK3H)4EAL+6.1'>172%05=_OL"!P6[GOWH \@\-6]GH=_X8N'M-'U*
M&\N/(M=9TR9HKJ<NK<W,;#+YY+9)P>PZ51FM;73O"FHV^F0V%M'-XNDM-1!;
MRD%J)9!&DK(,K'G:OT)'0U[/:^'M$LM0?4+31[""]?.^XBMD61L]<L!GFI!H
MNE![QQIMF'O0!=-Y"YGQ_?X^;J>N>M 'E0L7TRX\46\+:%91/X=G>?3=(:1D
MW8(24@H$5L;AUR1@X.,U;@T'3=$C^'>IZ?:I!J%U<117-TO^LG62V=F$C=6R
M0#STQQBO1[+0='TVTFM+#2;&UMIP1+#!;HB2 C!W #!XXYJRUC:,ENK6L!6V
M(: &,8B(& 5_NX!(X[&@#RG1K3PO/X2DUSQ$X37UU-_M-W&?]-BN!<%4C3JP
M&-H" 8VGI65=6<FJ2>,;S54\/_:;:^G0W>HW$BW5E$O^J,6U25&W#+M^\3WK
MV-M!T=]5&J/I-BVHKTNS;H91_P #QG]:;>>'M%U&]CO;W2+"YNX\;)YK9'=<
M=,,1D4 4!/J:?#KSXIOM.K#2MZ2HA'FS>5D, P!Y;G! //2O._L?A^R\'>%-
M7T%H/^$AN+JS"7,3YN+IW9?/64_>88+[@>!CM7LM9UOX?T:TU&34;;2;"&^D
MSON8[9%D;/7+ 9- ')_#O1M,L=7\736FGVT$J:S) KQQ!2(_*A;8"/X<DG'J
M:IZEIOA[5/C%>0Z]':S[=$A:&"[P8V_>R[FVG@D#'/;)KT2&UM[9I6@@BB,S
M^9*40+O? &YL=3@ 9/H*IZAH&C:LQ;4M)L;QB%!-Q;I(2%SCJ#TR<?4^M 'D
M>FZ?;:[-X0TV\#76BG5=4CM%D<D36J*QB!/5E^48]0!VJ:YTE;KQCXCL;G3_
M  [+:Z=%!#:0:O,Z"VM1$,-" I"C.[+#D$>U>OBQLPULPM8-UJ"+<^6,Q C!
MV_W>...U5M1T#1]8DCDU/2;&]>+_ %;7-NDA3Z%@<4 >66SKJMKX5TFZ@L?$
M-\FF2W*3:E</'9-%YFU7*/&6DDV@#)4<9/?-9NDRQ2>'$T^YFMAH)\7O;72V
MLC?9EA\L,L8)Z1&0CV.?>O9M0T+2-6CACU+2K&\2'_5+<6Z2"/\ W<@XZ=JD
M_LC3!;3VW]G6GV>X_P!=%Y*[9. /F&,'@ <^@H \N\8Z;X9M=%UW2]")@:2X
MTTW=M:';!"6N% *[>$<@<XYP%-;]EHVF^'?BM96VCV<5C!=:-.T\4"[5D9)8
M]K,.[#<W/7FNMMM!T>SL/L-MI-C#9EQ(8([=%CW @AMH&,@@'/L*N&UMVNEN
MF@B-PB&-92@WJI()4'K@D#CVH XOQTEM=>)O"EAJY7^P[B>?[1'*<12S+&#"
MC]B"=Q /!(%</XLT_2X],\?:?I=O;OHUG:6UPD**#%;7A+!O+'13LVY Z9]Z
M]IO;&SU*U>UOK6"ZMW^]%/&'1OJ#Q4,.B:5;Z8VF0Z991V#?>M4@41'ZKC%
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
MAT*C& 1ZBG_8[7SIIOLT/FSJ$E?8-TBC. Q[@9/!]30!Y7I6F_V7XNTP6?\
MPC>G)/97'FVNCRRN;N()E68; ORM@AV.3DC)K.TO0=-T[X?^!-<M;58]5>_T
M\/>C_6LLCA60MU*[3MV] ,5ZWI^@:-I#2MINDV%F9N)3;VZ1[_KM S4XTVQ%
MK!:BRMA;V[*T,7E+LC*G*E1C (/3'2@#B_!.GZ7:>.?&IM[:UAO!?(!L10XC
M:&)C[[2Y)^M9WC/2XM2\:SR(NAZK-#IR"72M9W1^7&6<^9!)@J">A..-HY%>
MBIIMA'J+ZBEE;+?2)Y;W(B42LG'REL9(X''M4.I:#H^LF,ZII5C?&+_5FYMT
MDV?3<#B@#S'3+72/%VN>"3<6$CZ?_8MTRVMY)YN=CQ* Y/\ K!W!/!P#5<FQ
ML-&U+0#8FXM7\5M:65BUSY%N!Y:R!)&P<19W': <G Q7KZV5HDT4RVL(EAC,
M43B,;D0XRJGL.!P/05!<:+I5W;3VUSIEG-!<2>;-%) K+(_'S,",$\#D\\4
M>-/&+"7XAZ?%!I-H@\-F26TTAB8$DQ*.<@?/M(S@#C%=KX0_Y'K5/^P)IO\
M*6NMAT#1K: PP:3811-"8"B6R*IB)R4P!]TD].E6HK.U@F::&VACE9%C9T0!
MBJYVJ2.PR<#MF@#@/$%AH>I?%_3[?7$MYHCHLAA@N<&.1Q,.JGAB!D@'TSVK
MC[AYFTZTTRT>VD\,MXFN+> 7DS+:O$L>8XV<9)C\W> .02H'2O9]0T32=6S_
M &EI=E>978?M$"R?+G..0>,\U(^EZ?)IW]G/8VS6.T)]F:%3%M';;C&/:@#A
M_ EI)I_BW6[2*71X+<00O+INE-(T4$I+8?E0JEEZJ.?E!Q7H=5-.TK3M'MOL
MVF6%K909W>7;0K&N?7"@<U;H **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "N5UGQ+JT'BR+P[H^E6UU<R6)O/.N;DQ1QJ'V$'"L3VQCU]JZJL,Z)
M-_PG8U_S8_(&F&R\OG=N\T/GTQB@#E[7XAZQ-I5GK<OA^"'27O$L;DF\W3+(
M9?*9D4)@H'XY()]!5WQ'XQUG13J-S'I>G1V%AD@W^H>1+=@+N)B4*1CL,GDB
MFCP1>CP(F@?:K?SUU+[9YG.W;]K\_'3.=O'UK-O?A[JL]WXA")H<W]K2RNFI
MW<3275NCKCRU&,87HI##'7!H VF\8:AJFH6]EX<TRWN93817]P]Y<&%(DESL
M3Y58ES@]L#%<UX=\9SZ1X4LXWMT.JZGJU\D4-[="*.$+,Y<R28. HP, ')P!
M6Y:>%=?T*XL[[1I]-DN3IEO87T-T7$;-""%D1E!/\3#!'(QR*H+\.=132-,>
M6YTV]U?3[ZZNL74)-O<+.Y+JR\E3R"",X([T ='X6\5G7;S4=-NH[5+^P\MI
M#9W/GPRHX.UD; /\)!!&1CWK%U2\UR+XM26^C6D%RSZ%$S?:KAHH8_W\G)VJ
MQ+'@# _'BMOPMH5]I<]]=WZ:7 ]R4$=KIMNJ1PJH/\>T,Y).3G@=AUJMJNB>
M(4\:MXAT6;3F1M.2R>UO"ZAB)'?=N4'&-P['//3@T 0V'CQKJ;2$N--^S"[O
M9],N]TN[[+=Q@D)G&&#;3@\=N.:V]$UQM:OM82.W"6EA=FTCFWY,SJH\SC'
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
M"QA8PFWYNN,=>_7C.*2_\,75YXCU?48[T6Z7VCKIT;QY\R)PTAWCZ;QCGJ*
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
M]I81E[6"2$[@Q5@-VX\,, 8%:VE^%]:746N[A="TC9;211#2;168RL,"4LZ
MC;V4<'/)(XH =X4\8ZEXCFLY?L.F2:?=Q&3S;#4!,]H<9"3*57!/3C.#^=:_
MB7Q!+HHL+:SLQ>:EJ-Q]GM8&D\M20I9F9L'"JJDG )]JYK3?!&JGQ/I6KZC%
MHEM/8%C+=Z;&R37Q*%<2# "@YW$?-R.,5T/BC0;O57TR_P!,N(8-3TNX,]N9
MU)C<,I1T;'(!5CR.10!R_B;Q7KL7AWQ-I-Q8VUGK5II;W:2P7;&-X"&4R1ML
M#!U(^Z0.<<]ZZ3P?ILND^"[:*"RM8+IHC+Y27+R1LY'!+LN[GC/''.,]\B[\
M':SK<7B"]U:YL8]2U'2FTRVBMMYA@C.XY9B 6)9@3P, =Z[6Q@:UL+:W8@M%
M$J$CH2 !0!X];:UXBF\$^#[ZXC6ZO)/$)6(+=MF<?OQB1BHV@'C^+Y5!]JZ'
M7/%EVN@>*M/\0Z1"+G3;..X:.SO7\NXBD) VOM5E(*D'BI],\$:Q:Z;HNG7%
MS8M!I&L&]ADCW[I(3YIPP(P&S)VXP*L>)O!-[KD_B62"ZMXQJNF0V46_/R,C
MNQ+8'3YATH ;J7CF_B\1W^CZ78:=--8)&S6]W?\ D3W6Y V(5VD' .,D]>..
MM=O$[20H[1M&S*"4;&5)[''&:X7Q3X0UG79KV!HM"U&QN8PMNVHPD36)VX/E
ME5^89^89*G)ZXKL=*L6TS1[*P:=[AK:!(3-)]Z0JH&X^YQF@"Y1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 5D^)-=C\.:'-J+P-<.K)'#;HP#32.
MP54'N216M7GOBV35-;\=:1H^C1V<QTA?[4NENY&6+><I""5!.1\[ 8["@#K_
M  ]K4'B+0++5K962.YC#&-NL;=&4^X8$'Z5<BO;6X.(;F&0[BN$D!Y'4<=Z\
M;O9==T+2/&?AJZ2**ZN8O[7M5L'9E$$D@%RJ$@'(^8XQ_%6KM\&K\1_!'_",
M?V<)"MSO%@5P8OL[;2^WOG.,\_>H ]0CN[:60QQW$3N%W%5<$@>N/2BWNK>[
M5FMIXIE4X)C<, ?3BO$(=&M['X'6FIV5K!'=7<J)J-X4.]K8W&'#LOS>6 %!
M /W0:T4M[FTUNY?0KSP_'J']B716UT"!\384>4SX)4$/C:3@G)'- 'KR7=M+
M.\$=Q$\T?WXU<%E^HZBD:\M4E2)KF%9'8JJEP"Q'4 =S7B6AVT M?!]Q:7_A
MNWN6NH#')90R->S$C]ZDA!).1N#EN >N*FU;1=.D\"_$/5Y+.)]1AU>Z,-TR
MYDAV.I78W5<$D\8ZF@#V=9;2ZF94DAFE@;Y@"&,;>_H:5+NVEG>".XB>:/[\
M:N"R_4=17F>NZ1%X>\51)X8LH[2\E\.7X06R!6ED3RS&3C[S;CU/.37/:';0
M"U\'W%I?^&[>Y:Z@,<EE#(U[,2/WJ2D$DY&X.6X!ZXH ]L>]M8Y$C>YA5W8H
MJF0 LPZ@#N:HKX@LG\42>'PQ^V1VJW3<C;M9BH YSGY2<8Z8KR^?P_I-WX+^
M(^IW-A!-?17VHM%<2(&>(H-R[&/*X;GCN:W-(CTU?BQ#<W4=HM]/X=MI8Y)%
M4222;I [*3R6V#!(YP/2@#TFBH+*]M=1LX[NRN(KFVE&8Y8G#*P]01P:GH *
M*** "BBB@!,#=NP,XQFEHHH **** &QQI$@2-%1!T51@"G444 %%%% $:00Q
MR/(D2*[_ 'F50"WU/>I*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@!  ,X &3DXI:** "D  )( R>
MI]:6B@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH *C2WACFDF2&-99<>8X4!GQTR>^*DHH S]6TM=2LY
MDBF:TO&B9(;V)1YL)/=2?H,CO7/Z3X.O8=>L]5U:_L9FL5D^SQ6%A]F4NXVM
M(_SMN;;QQ@#)KL** (H[:"&W%O%#&D(! C50%P>HQTJ&RTS3]-#BPL;:U#G+
MB"%4W'U.!S5NB@"G#I6G6][)>P:?:Q74GWYTA57;ZL!DU*;*T:&6%K6$Q3,6
ME0QC:Y/4L.Y^M3T4 1F")IUG,2&5%*K(5&Y0>H!].!^55X=*TZWO9+V#3[6*
MZD^_.D*J[?5@,FKE% $/V2V\J:+[/%Y<Q8RIL&)">I8=\]\TU["SDGAG>T@:
M6 $12&,%HP1@A3VX]*L44 1P00VT*PV\211(,*D:A57Z 5)110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !115:]U"RTR
MW-Q?WEO:0 X,D\@C7/IDG% %FBHX)X;F!)[>5)87&Y)(V#*P]01UJ2@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH *Q=<T2VO;BWU1]/74+VP23[
M+;RR!8RSX!)R" <#KCCGUK:K!USPV^J:A9ZI8ZE-INIVB/&D\:+(KQOC<CHW
M!&0".A!% &)\,CY6G:S930_8[V'5)GN+  ;+0OAE1"."A!# C&2QX%=S6-X>
M\/1:!#=,;J:\O;V8W%W=S8#2O@ <  *H   '0"MF@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
D@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** /__9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>18
<FILENAME>cgnx-20211231xexhibit10l004.jpg
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 cgnx-20211231xexhibit10l004.jpg
M_]C_X  02D9)1@ ! @   0 !  #_VP!#  @&!@<&!0@'!P<)"0@*#!0-# L+
M#!D2$P\4'1H?'AT:'!P@)"XG("(L(QP<*#<I+# Q-#0T'R<Y/3@R/"XS-#+_
MVP!# 0D)"0P+#!@-#1@R(1PA,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R
M,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C+_P  1" 55!!\# 2(  A$! Q$!_\0
M'P   04! 0$! 0$           $" P0%!@<("0H+_\0 M1   @$# P($ P4%
M! 0   %] 0(#  01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D*
M%A<8&1HE)B<H*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U
M=G=X>7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&
MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$  P$! 0$!
M 0$! 0        $" P0%!@<("0H+_\0 M1$  @$"! 0#! <%! 0  0)W  $"
M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF
M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$
MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4
MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,!  (1 Q$ /P#W^BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BO.[[XE:C<:SJ%AX4\*7.O)IKF.\N5N5A17'5$R
M#O(]OR[U;7XIZ*O@#_A+)X+J&/S/(^R,G[TS_P#/,=CZY]/RH [FBO,S\4M5
MTE[2X\5>"[S1M)NI%C2]^TK-Y9/3S$ !7\>?8UL^*O'W]B:Q::%I&D3ZWKES
M'YRVL$@14C_O.YR%'^>.,@'9T5Q?A;QW=:QK]SX?UOP_<Z+JT,(G$;R":.1,
MXRK@ ?\ ZCSP:J>"/BG8^--*U6XCLS:7FG*TCVC3;RZ $A@V!P2".G''K0!W
M]%>:7/Q9EC\)^&M9M/#SW5QKUPUO#9B["E7#%0-Q7!R1Z#K6UHOB?Q;J-^;>
M_P# TFFP^6[">74HW7<!\JD*N1D\9[4 =C17F?\ PN33XO"U]J%UIDL&LV=Y
M]A?1S+F5IB<* <=" 3G'\)'/&?0[":YN-/MYKRV%K<R1AI(!)O\ +8CE=V!G
M'TH LT5YI/\ %/4;V>_D\+^$+O6]+T^1HY[Y;E8@S+][RU()?'M^7-:=Y\4=
M&M? ]CXE2WNIOM[B&UL53$TDI)&S'U!Y^F,Y&0#N**\Y@^)NI:?J=A;>+?"5
MSH5MJ$@BM[O[4L\8<]%?:!M_'\L FGZI\1M7@\::EX:T7PA+J\U@D<DDB7R1
M?*ZJV<,O^UCK0!Z'17G=I\58Y_#GB._N-$N+34M Q]KT^649Y/&' ]CV[>]4
M4^+M_9V^F:AKO@R[TW1]0:-8K];M)E <94E0 0,<\\_RH ]2HKA-?^(=S:^)
MI/#?AOP_/KVJP1B2Z5)UAC@!Y 9V!&<$<>_X4[0_B1'J=MK<%]I-QINMZ/;M
M/<Z=.X)*A<@JX'(/'..XZYH [FBO*(/B[KTWAT>(CX NCHVPR-=1ZA&V$!(+
M;=H/&#^5=GJ/C73K#P _B]0TEE]E6XB1CM9RV-J=\$D@=\4 =)17(^#_ !PO
MC+PC<ZQ9Z:\=Y;M+$^GM*-PE49";B!C(*\D<9]JYEOBIXF7Q"N@-\/)QJCP?
M:5M_[4CR8\D;L[<=0>] 'JE%<;8>/#-XO/A[4-+-A+%I"ZG<2/<!A"?EW1G
MP=NX_-GMTK!C^*VL:E;3ZKH/@:^U'0868?;3<K&TBKU9(R"6'!Z?H: /4**\
M[U[XNZ7I7@?2_%=E9R7UG?W(MS'Y@C>(X8MG@\C:1COZXK7U/QY:6=SX66S@
M%[;>()A'#.LNT1J0"&Q@YZ].* .MHHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** /%? 7BG2/AT?$GA_Q3<FPO(]2ENXVDC8BXB8* RD Y^[^OUI/&
MVKZAXR^'.B^+8=#N8+?3M62\>U8[VDMTR/, P./Z9/3FO8KK3[*]*&[L[>X*
M<H98E?;],CBK(  P!QZ4 >+?$GQ]H'C3P3_PCWAJX;4]5U66%8;>*)MT>'5B
M6R./NX_'TS3Y9X_AU\7(]4U]G32]1TB*RCO]A9(Y4" JQ XSLS_P(>^/7+?3
M;&TF>:VLK:&5_O/'$JLWU('-33P0W,+0W$4<L3?>210P/U!H \;\'^*]8U/X
MK1:99>+9O$6B"WDEN)%L%BCB;#;5W 9./EYSSG%<3HFBWNE_#2S\=:&F;NT>
MZMM1A'2>U9B"3[KG/Z_PU],6UI;647E6MO%!'G.R) H_(4L=M!% 8(X(TB.<
MQJ@"G/7B@#YKOS;CX5?# WEY+96W]HR>;=0MM>%/-;+J0#@@<@^U>B>"M2\%
MV.NN]A\0M8U>9K>3-OJ-XTD2JHWL^"@ ("GG/3->F-I]D\*0O9V[1)]Q#$I5
M?H,<4U=*TY"2MA:J2"#B%1P>HZ4 ?.M]<7VI>*IOB];:-%)H5C?I&L)3$DT2
MC89\>H..>QQ_=-?1-G>VVLZ1%>6%P)+:ZA#Q2IW##@U.MO MO]G6&,0X*^6%
M&W![8Z4Z*&*"(10QI'&O144 #\!0!XI\.?&VB_#[PA>^'O$LS6&K:9<3%[=H
MVW3@G*E.,'/0?@>E2>--6O\ 5M%\#>/;C1;FVL]/OOM%W:9\QXXF*XDZ#CY,
MC@?>%>PW&G65W,DUS9V\TL?W'DB5BOT)'%6" 000"#P0: /%/B5XLT?XA:3I
M?A?PK<_VEJ-[>QR9BC;$"+G+L2!C&?P&<U%=>']2U_XU>,X=+UZ\TB[BLK=D
MEMVP';RD #]\9]*]HM=.L;%G:TL[>W9_O&*)4W?7 YJ58(4F>98HQ*X 9PHW
M,/<]Z /GS2Y;2+X4>/-/NX9XO%4(/]K-<S&22<AOE<$_P\G\\YY%=/X<^&5U
MXA\,^&Y]>\57U]I4=O;W46F")8XU^0%5+#D@ X]<>E>LO8VDDDDCVL#/(NUV
M,8)8>A/<<#\JE1%C1410J*,*JC  ]!0!X]I>MV/P^^+/BQ/$LAL[?6FBN;*]
MD0F-PN[*Y XQNQ_P'W&:,-XGB_QSXQ\5:2LC:+;Z!-8K=%"JSR;<\9ZXP?R'
MJ*]JNK.UO8O*N[:&XCSG9*@<9^AIZ6\,5N((X8TA VB-5 7'ICI0!\TIX=UN
M'X-:1KL&L:K>:+ACJ.CI/Y:^1YC ["!TXR00>I/:NG\;:C#XIMO!OA'P9:Q7
M=G)$FH-:M)L3R(QA8W;MT8'/.0.]>WI;PQP>0D,:PX(\L* N#U&*CAL+.V??
M!:01/C;NCC"G'IQ0!X]X.N]:\,?%Z\L_$&G0:;'XHC-Q%%!-YD8G3K@^I^;(
M]66MJX_Y.3M/^Q?/_HQJ]+DMX)I(Y)88W>,Y1F4$J?8]J/(A,XG\J/S@NT2;
M1NQZ9ZXH \?US3YM6^,_B;3K8XGNO"4L,9)Q\S%0/U-'@3XF^&O#'P]M]+UJ
M=['5=*1X9[&2)A(S!B1M&.<Y_ ]?6O8!!")S.(H_.*[3)M&['IGKBH9=-L)[
ME;F:RMI)T^[*\2EA]"1F@#YXCT*YLOAAX/BU6U\M=1\5Q7'V:5>D3@@ @]B!
MG'H:EGTO4?"7Q2\+^$Y=TFCPZK]LTN5CDK')]Z/_ ("P_7/>OHB6"&?;YT22
M;&#+O4':1W&>]$EO#+)'))#&[QG*,R@E3['M0!)1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 5Q?69E\H74!DSC;Y@SGTQ5BO!],L].GT77C-\.I];N3J-\!?110_,?-
M; #%O,&/89]*[?PMXBN+2Q\%V<EY#J&G:E8M;_;L,'^U1KD*2W8A9!@C.4Y]
M* /0:*Y;1-:UKQ#8?VC9)8)9MJ;QQ&57S)9H2A<8/WV8$KVQBNIH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** .$L/!?B;2$N[?3/%\%O:7%U-<A
M#I2NZ&1RQ 8R<XSZ?A6;XLT&TT?P%IGA#2FO7U5IT?39EB9V$PE#/*S@;5'S
ML3G'!.*]-HH R(=&FT_2=)TW2+P6=O8M$C@PB3SH4&"G)&TGCYNHK7HHH S]
M7UBWT6W2:YAO95=M@%I:27# XSR(U) ]S6/_ ,)YI?\ SX:__P""2[_^-UKZ
MRVLI9*=#BL);K>,K?2O&FS!SRBL<YQV]:Y7PUXB\9:]>W0DT[08K6QU![&Z9
M;J8OE"-Y0>7@\'C)'OB@#3_X3S2_^?#7_P#P27?_ ,;H_P"$\TO_ )\-?_\
M!)=__&ZJ_P#"P+*SN="L]2N=-6XU2:="\%XK11JA<*<GJ25"8X^8D=JO:/XM
MMKK1;_5-5EMM/M[2_N+0R22A4Q'(4!)/<XZ4 1_\)YI?_/AK_P#X)+O_ .-T
M?\)YI?\ SX:__P""2[_^-UKVVOZ/>:5)JEMJEG+I\8)DN4F4QICKN;.!CWJ_
M'(DL:R1NKHX#*RG((/0B@#F?^$\TO_GPU_\ \$EW_P#&Z/\ A/-+_P"?#7__
M  27?_QNNHHH Y?_ (3S2_\ GPU__P $EW_\;H_X3S2_^?#7_P#P27?_ ,;K
MJ** .7_X3S2_^?#7_P#P27?_ ,;H_P"$\TO_ )\-?_\ !)=__&ZZBB@#E_\
MA/-+_P"?#7__  27?_QNC_A/-+_Y\-?_ /!)=_\ QNNHHH Y?_A/-+_Y\-?_
M /!)=_\ QNC_ (3S2_\ GPU__P $EW_\;KJ** .7_P"$\TO_ )\-?_\ !)=_
M_&Z/^$\TO_GPU_\ \$EW_P#&ZZBB@#E_^$\TO_GPU_\ \$EW_P#&Z/\ A/-+
M_P"?#7__  27?_QNNHHH Y?_ (3S2_\ GPU__P $EW_\;H_X3S2_^?#7_P#P
M27?_ ,;KJ** .7_X3S2_^?#7_P#P27?_ ,;H_P"$\TO_ )\-?_\ !)=__&ZZ
MBB@#E_\ A/-+_P"?#7__  27?_QNC_A/-+_Y\-?_ /!)=_\ QNNHHH Y?_A/
M-+_Y\-?_ /!)=_\ QNC_ (3S2_\ GPU__P $EW_\;KJ** .7_P"$\TO_ )\-
M?_\ !)=__&Z/^$\TO_GPU_\ \$EW_P#&ZZBB@#E_^$\TO_GPU_\ \$EW_P#&
MZ/\ A/-+_P"?#7__  27?_QNNHHH Y?_ (3S2_\ GPU__P $EW_\;H_X3S2_
M^?#7_P#P27?_ ,;KJ** .7_X3S2_^?#7_P#P27?_ ,;H_P"$\TO_ )\-?_\
M!)=__&ZZBB@#E_\ A/-+_P"?#7__  27?_QNC_A/-+_Y\-?_ /!)=_\ QNNH
MHH Y?_A/-+_Y\-?_ /!)=_\ QNC_ (3S2_\ GPU__P $EW_\;KJ** .7_P"$
M\TO_ )\-?_\ !)=__&Z/^$\TO_GPU_\ \$EW_P#&ZZBB@#E_^$\TO_GPU_\
M\$EW_P#&Z/\ A/-+_P"?#7__  27?_QNNHHH Y?_ (3S2_\ GPU__P $EW_\
M;H_X3S2_^?#7_P#P27?_ ,;KJ** *.E:M!K%HUS;PW<2!RFVZM9('R #]UP#
MCGKC%7J** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "N,^'J
MLO\ PE6Y2,^(KLC(ZCY*[.B@#QG1)X-,L/ %]?GR;6+4M3CDE=3M5G:<(#Z9
M)XJG/#=0PZ9?O<_8].M/$FJ-<7,EKY\<#L[B*1TR.,[AN[%@:]RHH \T\*SZ
M:MYXJUNZU7^T]->&(7=RNG".UE**V2@#,9"%.&P/3K7HUL\4MK%)!CR60-'@
M8&TCCCMQ4O3I10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M7.^--;N_#^A1WMF(C*UY;0'S%)&V254;N.<$T =%117,:EXPAT[QUI7AQHV/
MVR"21I!%(VU@5" $#&#DY.>,#.,T =/17!>%?B7I6I:58#5KV.+4KB9X&$<$
M@B63S&5$+X*JQ 7@MGGWK>U7QIH&BWSV=]?%9XE#S"."240J>AD**0@_WB*
M-^BF1RQS0I-$ZO$ZAE=3D,#R"#Z5P^F:KXJ\8V\FJZ-?:=I6D-(ZV?GVC7$M
MRJL5WM\ZA%)!P!DXH [NBN9M/$\NE^'VO?&"0Z7-#<FU>1<F&4YPLB=2%;WZ
M<YIS>/?#BV=K<B\F=;H.T,4=I,TK!3M8^6$W@ \9(Q0!TE%8#^-?#D>BVVL/
MJL2V%S*88IBK<R ,2I&,@_*W! Y&.M9VI?$31X?"VM:OITK7,VF1$O;202QN
M'()0,K*&53_>QCKS0!V%%<V?&^B0:7IUW=7,BO?1EXH8[65Y7Q]XB,*7P#WQ
MCI5M_%>A)H*:X=2A_LYR%289.YLXVA0-Q;/&W&<]J -FBLO1O$6EZ^LYTZX+
MO P6:*2)XI(R1D;D<!AGMD<UJ4 %%<%X0^)>E:QHVD_VG>QQZI>8C81P2"'S
M23A ^"H8C'RELUN:KXW\/Z+>36E[>N)H%#3B*VEE$ (R#(R*0G'/S$<4 =#1
M5"TUO3;Z^:RM;M);A;>.YVJ#@Q/G:X/1@<'IFJ$_C/0+>PCO7O\ =#+.]O%Y
M<3N\LB$A@B*I9\$'D CB@#>HJAI&LZ?KME]KTVY$\(<QM\I5D<=592 5(]"
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
M&>!W% ':T5%;W$=U;17$)8QRH'0LI4X(R,@X(^AYJ6@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH *Y'XCVES>^&(8K6WEGD&HV;E(D+$*)T).!V !)KKJ* *$&K07&M
MWFE+'.MQ:11RNSIA&5]V-I[_ '2#7.:\9;3XD>&K]K2ZEM6MKFT:6"!I%CD=
MHMN_:#M!VGD\<5UJ6L$=S+<I$BSS!5DD ^9@N=H)]!D_F?6I: /*4T>^3X&0
M6 TZX%Z+M'-N(6\P?Z<&)VXS]WG/IS5>ZLKO1=?\3K?7?B:$7]VUS:KI5FL\
M5VC(H";C$^UA@J0Q Q@UZM>WUKIMJ;F]G2" ,J%W.!EF"J/Q) _&GW5S!96D
MUU<RK%;PHTDDCG 10,DGV % &5X5TS^R_"&EZ<\4\7DVJ1F*>42/&,?=9E !
M(Z<#M7#:;./#/A4^#?$6F:X([5C';WNF0RNMS$'W(5>'YD;& 5..GH:]/@FC
MN8(YX7#Q2*'1U/#*1D$5'8W]KJ=FEW93I/;R9V21G(."0?U!% 'DUOHFK2Z
MOFV&K&SF\3V=Q:V]^[33QVRL@)<$L5&0Q()X[UT/BN[U"#QI$C2:AIVG-8 +
M?Z9IGVF>:3><PE_+?8 ,$#'))YKT"B@#QW1M(U(Z1HJ7&FZB'C\8R74BW41,
MBQD2,)'(&/XERPXS6QXITC4+S5/'/V:RGD%WX=CAA*QG$L@\[Y5/=N1QUY%>
ME576^M7U"2P6=#=Q1K*\(/S*C$@$CT)!_*@#RJ[6X?Q'IOB)YO$6G:;<:.EF
M)K*Q+2PRQR,622-HG95;((('./I5>?P[?KH.G:K;Q>(8X(]>EU"XWK&][L="
M@G6(1X'/S;-I8!B>O3V6B@#SGPV8[;6M:\29\1W\$&GK$;J_@6-K@*6?;'"(
MD9BO/S'J6P*[^RNH[ZQM[R'=Y4\2RIN&#AAD9_.GSP175O);SHLD,JE'1NC*
M1@@T]55$5$4*JC  & !0!Y5;:/?1_!/0;$:=<+>17=J[P>2PD3%TK,2N,CC)
M)]*9K<VK7&H>)K*4ZQ9222.MG8Z5IB[+Y3& LDEP8V&2>#EEP!BO6:* /)KJ
MRUS2/!OA'6]&TZYDU>#2%TNXMA$1( \("E@1D!)54GT!:I-:\+S>'+_PK+!<
M:K#IFG6$ME+<Z7")I8I&V'S&0HY*OM;)"YSCM7JM% '%^ +'RWUK40NKE;ZY
M0K-J@5)+C8@7S!&J(4!Z<C)V@\54%Z?"OC#Q//J.F:A<Q:HT,UI+:V;W E"Q
M!#$=@.T@@XW8&&SFN[\^$W!MQ*GG!=YCW#<%SC..N,]ZDH \KGN]4@UFWBNK
M*^\-6C:;#Y4>B::MR\CY8M"91$P39QA< <DYJIX3T?48_P#A"EN],OHVM-5U
M.2<7$1+1;A*49R!CG(P>A)XKU^HYYXK:WDGF=8XHE+N['A5 R2?PH \MU*TN
MM&\<^(;R\OO$EI;ZB89K672;-;A9ML80QM^Z<JP(.,X!!^M6]"T*ZTV_\ 1I
M87T,-K;WYE6X(D:#S K*KLJA0>< 8'3':O1[>XAN[:*YMY%DAF021NIR&4C(
M(^HJ.TOK6_69K2=)A#*T$A0YVR*<,I]P: /'[J6^A^&M_P"$!HNK2:NE](2J
M64AC,9NS*)!)C:1M/0'.>U:?BG2M1N'\?>3874GVF33#!LA8^;M*;MN!\V,'
M..E>FQ7UK/>W%E%.CW-N$::('YD#9VDCWP?RJQ0!Y;XSTV\7QF-(LU;['XOC
MCANV4_ZOR"#*W_ H3M^H%=]X@@9_"NJ6]O$68V4J1QQKDD["  !_*JC:7I&G
M>*4U>ZO)FU"]S;6J7$Y9$R-S)$IX7(3)QZ5OT >7:WH>H'P#X(>"'4(AI1M9
M;N*RB!N(@(2A9493EE9LD8)Z]ZIO;WLL7B+6M)M=;UJ==,6UBDUFU14N/WFX
MJL'E(S[!DY/!)P,UZ[4;SPQS1PO*BRR9V(6 +8Y.!WQ0!Y/!#?ZIXV\-W,-[
MXAU&&-;I)KR]T_[-#;N\#!0JB-".>I.1T&<U!)+<+\.]&\)G0-3.K6%U:).J
MV3F.,1SH6F$F-K*P!/!)^8Y'!KUNQO[74K5;JRG2>!F91(AR"58J1^!!'X58
MH H6NK07>KZAIB1SI/8B(R-(F%<2 E2A_B'!!]P17'^+;O4+?QE;(9+_ $[3
MFL2!J&FZ9]JGEDW\PEMC[!@!AQR3UXKNH[6"&>:>.)%EG(,K@<O@8&3["I:
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
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH *YSQIJDFE:+$\6JQZ8TUS'$9S 9I"#G*Q1@-ND..!@CJ
M>U='6/XA\.V_B&"U66XN;6XL[@7-M<VS /%( 1D;@01@D$$$<T >=_\ "7ZW
M8VWBVWBU#4IA9:,+^RGU2Q2">-\NI^78H9<J"-R^HK;COO$&B>(?#C7^MOJ%
MOK"3"YMFMXT2)EA,H,14!L?*1AB<YK2;X>:?.VJ2W>I:I=7&J6)L;J:65,LF
M205 0*I&2!@ >V>:VKGP_:75]H]W(\PDTEG: !AAMT9C.[CG@GICF@#S#6'U
M_7?AM:>);O6RT-]=6DSZ<((Q#'$UPFQ48#?N'RY)8YYXZ5Z+XY_Y)_XC_P"P
M7<_^BFK)E^&FFRVXLAJFK1Z4EP+F'3TF00Q.'W_+\F[;G^$D@9X XQU6JZ=#
MK&D7NF7#.L%Y \$AC(#!74J<9!YP: *OAC_D4]&_Z\8/_0!7EGA^;7]"^&6G
M>(;?7'\B&\"?V;]GC\IXGNS&P+$;]WS$Y! '3%>P6-I'I^GVUE"6,5O$L2%C
MDD* !GWXK$'@K31X/C\,^;=?84D60/O7S,B;S1SMQ]X>G3\Z ..O_%6MZGKF
MNI9W>M6D>G7+6EK'I^D_:8Y'502TK%&SDG&U2N!@]ZM1:KXJ\1^(-)TY;^7P
M^9M$6_NX1:HTB3"385 D!P#GOV'OFNBU#P1;W>H7MW::MJFF?VAC[;%92HJ3
MD#;N^96*M@ $J03BKUAX6TW3-5MK^T$L;6VGC3HHMV4$08,.HR6R.N: /.I/
M&'B/4TU74M/FUM);>YFBL;*UT?SK641L5 DDV%B6*G)5AMS[5J1VNJZY\2;N
M:VU*XT3?H5G).L<*-,&9Y2$_>*0 #G/&>!TK=O/A]97,M\D.JZK9Z?J$K2WE
MA;3*L,K-]_JI9=W\05AG-37W@BUN=9.K66J:EIEY]E2S#6<B!1$I8A=K(P_B
MZ]1@8QSD Y_3/%FM!M#N-0N$>V&IW.B:B4B55DF#%89AW7+* 1G&7KI?!^J7
MNN6E_JT\VZRN+R1=/0* %@0[ V0,G<RLW/8BL7Q3X=%MX%3PCHFE7=S]L.Q+
MG>"+>3>',\KD@YW$OD DD8XKL],T^#2=*M-.M5VV]K"D,8_V5&!_*@#SOQ/X
MAU!-2UI;+Q%J"S6*_N+32=,%Q'$0@;_2)'C(R3V## QWJSINMZWXPO\ 3;*#
M5'TE!HEMJ5S);0QL\LLV<*/,5@$&TGIDYQFMFX\!6D]SJ?EZKJEM8ZI(TMY8
MP2HL4KLH5CG;O7( R%89K$UGP\VC76D1V5AK[P66G+91ZCI,\?VDJIXBE1@%
M9< $,!P<].M &='X@\67-EI]A_;<:7T_B.YTN6[2UC(\I$?E5(P"-N1[]<C(
MJ6^U[6QXEO- _M;7!'I-O"KW6FZ4EQ)<S.N_=)\C*J@8&T 9YYK6\'>!_LNB
MZ?)J:7%M<VVJ7&IPVYF$C1^9O54D;G<0K<D'KWK;U3PC#?ZN^JV>J:CI5[-$
M(9Y+%T'G(,[=RNK#(R<, ",]: .,NO&OB*33_#>GW4&HZ??W_P!I-Y+:Z<9+
MC9"0 4B8';OW*<D':,UTW@C5=8O9M4M-3BU&2WMGC-I>W]D;:2=&!RK+@ E2
M,9 &01Q4\O@32_[+TRSM)[RRFTQF>TO8)<SHSYWDE@0V[)W @@UH:%X=@T(W
M<HNKJ]O+R027-W=N&DD(&%'R@* !P  !0!Q&K75UH/Q%\4:X+V>5+'P_'="U
M*1[' ,VU"=NX ,-V0<\G)(P*MR7GB3P_;Z!K%[KS:BFHW=O;7EF]O&D:><0
M8BJAAM)'4MD9KIK[PG8W_B$ZQ+/<AI;,V5S:JR^3<Q?-@.I&>-[="*HV/@*S
MM+BP:?5=4OK73G$EC9W4RM% P&%/"AF*CIN)Q0!?\8:E)I7AR>YAU*WTZ0NB
M"YFB,NS<P!VH 2[XSM7')Q7!1^(-2DO=<T>6_P!6O=/E\/W-VCZK8+;2JZX4
M[<(A*D-W7J*]%\0:!:^(].2TN99X3%,EQ#/;L%DBE0Y5E)!&0?4$5DIX"M&U
M"?4;S5=4O;Z>QEL)9IY$YB?&0%5 JX(R, =3G- ',Z3-KWAGP[X.U";6VO+6
M]:SLIK!H(UCC250J&-@-V5XSDG=STI;?Q%K5_>QZ);7RV<U]K^H6YNT@C+10
M09;:H(VESP-S ]SS71Z9X L=.FTX/J>J7MIIA#6-G=3*T4+ 8#<*"Q )QN)
MSQCBI9O FF26LD<=S>P3G49=2ANXI%$L$TA.[8=N-N"1M(((/.: .'NM4U;P
M9J7CJ[:[.I7RQ:;%;3R0C<?,9T4NJ  E=QZ 9P/6MSP[K.O)XIL;)WU[4=/N
MHY!<S:EI/V86TBKN5E944;6P5VG.#CFMB#X?:4(=92^NK_47UA(EO)+J4;F,
M>=C+M5=I&>,<#:,#ULZ9X0CL=6AU*\U?4]5N;:-HK8WLB$0JV-V BKEB  6.
M30!D_$&WN[K5O!\-C=BTN'U5@LY0/L'D2Y(!X)QG&>,XZUG:CJWB?1W\0Z1;
MZH^H76G6<&JVL\L,8DDBWL)(7"J%)(C;! !^:NO\1>&+3Q*+$W%S>6TEC/\
M:()+60(RR;2H.2#TW9Q[<Y&0:MOH\7A2SU+5%34]<U&YV&=VV//,!PJJ/D0*
MN2<#'?J: (=*\0S>(?%Y73KC.C6NG132X4?O9I\/&,XR-L8SQ_?&:SO$=I<R
M_%CPC)'J4\"?9KL^4B1D87RBPR5)^<$ \\8&,').A\.O#)\,>%4MYH/(NKF5
M[F:+?N\HMPL>>^U B^GRUIZOX<M]7U;2M3-W=VMUIKLT3V[J-ZMMWHX(.5.T
M>A]Z /,-'FU_0_AK_P )'::XZ0VM_+LT[[/&8I(S>,K!V(W[CDG((QQQWK7U
M+Q1K&H^)=<MK6\UJRM]-F%M;KINDBZ5Y @9FE8HW&6 V@KQSGFNN/@K33X/D
M\,^;=?89)&D+[U\S)F\T\[<?>/IT_.H]1\%P7>IW=_9:OJFE27RJMXMC*@6?
M VAB&5MK8XW+@\4 <]'K7BC7=4\,Z>US-H4E_I<]Q?Q"V4R)(C(OR"0';R3U
M!X/3.",MM:\66_A/5-=E\1-))HNIR60@%I$$NTCG$9:7Y<AB#_"5 P.*] LO
M">F:??Z9=6BRQ?V;9O901!LKY;%2<Y&2?D'.>YJ"7P5ILV@:IHS2W0MM2NY+
MN9@Z[P[R"0A3MP!D=P>* .CHJG#8&'5+J^^V74@N%1?L\DF8HMN>47'!.>>>
M<"KE !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
M10 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !11
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
M;KXAN;ZXD29K06<?V!H68913]X84\/G)(YZT >S45Y-=^(==UC5_$#6LWB&
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
M224621:;)&\P0JFY0Q&#@,"22,Y] #V6HC=6ZW:VAGC%RZ&18MPW% 0"V.N
M2!GW%><SOK^JW7C2>/Q)>V46D7#"RBMXX\ B!'^?<I++D]..I]L5M/GN=2\=
MZ!KT][=*\WA;[;)!#L"$[HBR %2=I)SUSD#D=* /5**\:TWQ/XIO='L?$-NO
MB&YOKB1)FM!9QBP:%F&44_>&%/#YR2.>M7[WQ!K6KZ_KZ6\WB&WCTZY-I9KI
M5I%)%O5%):4N"6R6^[P N.YS0!ZM69<^(-*LS="XO$3[(\4<Y()"/(0$4D#J
M<KQVR,XR*3PW>WVH^&].N]3M3:W\L"M<0XQM?'/X9YKSZPU2\M?@]!KUO,8[
M_4M1CN9Y< DF6[52.?1"%]@* /5:*\RGDU_5&\:7<?B2]LDT>YD6RAMXXMN5
M@23Y]RDLN3TXZGVQ9L-4U;QCJUE8_P!JW.EVZ:+:ZA.;(())I9L_Q,K81=IX
M Y)YH [J;4;2#4;:PEG5;JZ5WAB.<N$QN(^FX?G5JO-KIK^W\5^%5O=1AO[V
M"RU16NH5"AROEX) X# 8R.F0:D3Q%JI^'W@G43>M]KU"]T^.YEVKF59&&\'C
M'/M0!WU[>6^G6-Q>W<HBMK>-I99#T55&2?P J&#5K"YOA90W*O<FW6Z$8!SY
M3$A6^A(/Y5YEK1UCQ-X'\8ZTVNW-K'!]NMH;!$C\GR8@R,'!7<68!CG(P2,=
M*FUKQ!JNF6^JQV=VT2VGA&&\@ 53LFWR#=R/11[<4 >J45P$4FM:'XJ\-+<Z
M[=ZA%K"3K=P31QA$=83(#$%4%1D$8)/!]>:P;G4O$D_PV7QO%XEN8;JY9)?L
M8CC-O'$\H41J"N[< 1\V<DY]: /7:*** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *R?$7AZS\3::
MEC>27$2),DZ26\FQU=#E2#VP:UJY;QSXENO#-AITUI:RSO<ZA!;OLBWX1G 8
M#D?,1D#WH =8^"TL;Z&Z'B+Q%.8G#>5<:BSQOCLRXY%#^!-(;3+6SB>[@>TN
M9;JVNH9MLT+R,S/M;'0[B,$$8K%B\?2V7BGQ-:7=GJEY!9-;R10VMGO-M$T"
MNQ<C'\1/!)/!P,"M>^^(&C69T]88K_4)-0M?M=K'8VS2M)'QSCMP<\_SXH D
MB\":,-+U"RN?M5X^HNLEU=7$Q:>1DQL.\8V[<#;C %)#X%TP1WXOKF_U*:^M
M&LI9[V?>ZP'JBD !1DYX&2<9-,O?B!I5E<7B_9=2N+>Q;9>W=O:EX;9@,L&8
M<DJ#SM!QWK7M=>L+W6)=,MY#)-':Q7>Y1E&CD+!2#W^Z: *ND^%++2+VVO$N
M;VYN;>S-DLMS+O8Q%]_)P,D' !]!5&\^'VDWD]X?M6HP6=](9;NP@N2D$[G[
MQ9<9&[OM(![U*_CO21IEG>0QWER][/+;VUK!#NFE:-F5\+GH-I))(&,>M8?B
M+XA0OX0UN]TA[JSO-*FMH[@7-MM:+?*@8%6!S\I;^8[&@#L+?0K*UUN75849
M+B2UCM"H.$$:%BH [?>-4;+P;I5A)ICP^?G39KF:#<^?FGW;\\<CYCCTI-)\
M86.K:N=+^QZC979A-Q$E[;&+SHP0"RY]"1D'!YZ5;UOQ%9Z$;6.:*YN+J[<I
M;VMK%YDLI RV!TP!R22 * ,JV^'VD6MS;E)[]K&VG^TV^FO<9MHI <@JN,X!
M.0"2 >@K6U_P_9^(K*&WNWGB:"=;B">WDV20R+G#*?7DCD$<UE_\)_HT>B:C
MJETEY:)ILR0WD%Q 5EA9RH7*]P=ZG()XJQI/C"QU;5VTO['J-E=F$W$27ML8
MO.C! ++GT)&0<'GI0!%:^!M*@U"YO[B6\O[F[LVLKE[R;S/.B8@[2, #IT4
M<GCFDTWP-INGWEM<276H7PM$:.TAO;CS8[=6&T[1CGY?ERV3CBM#7/$5EH M
MDG2XGN;MS';6MK$9)9B!DX'H!R22 /6LUOB!HD.C7FI7/VNV6QGCM[NWF@*S
M0.Y 7<GH=P.1D$=,T )8> =*L+JS=;G4)K2QD\VSL9[DO!;OS@JN,\9.,DX[
M5&_PYT9V:'[1J(TQY_M#:4+D_92^[=]S&=N[G;G;GM4D?C2VOUU*RBM=0T_4
MH+%[N*.^MO++H!C>N<@@'&0>>>16=H/BMVL],N]3U*:20^&DU.YMUMEVL>"T
MH88.[J-HXH CB\#2W_BSQ3?7ESJ5C;W\T(0V=T$%S$($4A@,D88,,\'D\XKH
M+GP?I<TVBRP?:+,Z."EJ+638/+.T&-ASN4A%R/:JFG>/])U*^L+=+;48(M1S
M]BNKBU*0W!V[L*Q[X!(R #CC-)/\0='@GG)AOWL+>8V\^I);$VT;@[2"_7 /
M!8 @'O0!5;X8Z,^F_P!EO?:LVFH^^"S-W^[@(;<-HQDX/0,6 KH8- LK>YU>
MX3S-^JLK7.6XR(Q&-OI\H%7[FZ@L[2:[N)5CMX8VDDD;HJ@9)/X5S=AX[TZ^
MO["V:QU2T34"197%U:E(ISM+  YR"5!(W 9H =)X%TP6NEQ6ES?V,^FVPM+>
MZM9MLODX'R,2"&' /(Z\C%(_@+1O[/LK>W>\M9[*1YH;Z"<BX#R?ZQBYSNW=
M\@@^G IDWQ!T>&YD!AOVL8KC[++J2VY-M'+NVX+^@8X+ 8![T[4?'VDZ==7D
M;6^H7$%@VR]N[>V+PVQP"0[>P()V@X[T :>A>';+P_'<_9WGGN+J3S;FZN9/
M,EF;& 6/L     /2JNJ^$+/4M4;4HKW4-.O9(A#-+83^69D&<!P00<9.#P1G
MK46H>-M.LKZ6T@M=0U&2"-9;@V%N95@1AE2QSU(Y &3CG%-N_'FCP2Z=#;+=
MZA+J5N;FS2RA\PRH,9],=<\XZ'OQ0!:M?".D67]BBUA>%-',C6J*YQEU*L6S
MRQ.XG/J<U;U[1+3Q%H\VF7IE6&4JVZ%]CJRL&5E/8@J#7*ZY\0TATC3+W2+6
MZE,^K1V-U$UL?,A.X!XV4D8D(.!USFM34/'5A8W%U"FGZK>&R56O&M+7>MME
M=V&.1SM() R10!IZ9X?M=+U">_CFN)KJXMX+>66>3<76(,%)X^\=QR>]4K+P
M5I%BNEK&LS+IJW"0+(^01.<R!N.?:HKOQWI-O/8P6\5[?SW]H+VUCL[<R&6(
M]^V.N><?GQ3E\=:*WAY-9!N?+>X-HMMY#?:#< E3%Y?7?D'CVSTH BL/ &EV
M$]D1>:E<6MA()+.RN+G?#;L 0I48R=H)QN)Q6QJFAVFL7.G37?F-_9]R+J%
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
M7'<'+'G/I573/!=EIVIV^HS7VI:C<6J-':F_N/,%N&&&VC Y(XR<G'>NDHH
MI:KI-CKFF3:=J5LEQ:3##QMW[@@CD$'D$<BN:/PVTN<)%J&J:YJ5DA!6RO;]
MGAXZ;AP6 ]&)KLJ* ,VWT.RMM5U+445C-J*11SJQRI6,$* .W#'-<\/AGHYT
M^+3WO]6DL+=UDM;5[O\ =VY5MR[1C)QT&XM@5V=% &3#X=L8!K 3S?\ B;R&
M2YRW<QB,[?3Y5%5(_!NG076BW-O->02Z3;"TA,<V/-A&WY)!CYA\H/:NAHH
MY%/AUHT;1PBXU$Z9'.+A-+-R3:JX;</EQG:&YVYVY[58U+P/I^H:A=WD5]J5
M@]ZH6\2RN?+2XP, L,'!QQE<''>NFHH KV%C;:986]C90K#:V\8CBC7HJ@8
MKE=,\)K_ &/J'AG4(I!ID-^+JREC<#=&91,J>Q5P5/J,>O'944 9$7ARPAAU
MF)?-VZO(\ESEN[1B,[?3A15"X\#Z=(FGFUN]0L+FQM%LH[FTGV2-"H&$?((8
M<9Y'!Z8KIJ* ,"R\&Z/I\NF26T4BG3HYXX@TA;?YQ!D9R>68D9S[FLVV^&NC
M6QLE%WJDEM87*7-E:R79:*W9&W#:N.G;G. 2!C-=C10!R6I_#S2-3?4 UUJ5
MO:ZB2]W9VUR4AE<C!<KC@]"<$ D<@U;OO!6DZ@+H3^?_ *5IJZ7)MDQ^Y4L1
MCC[V6/-=%10!FW&AV=UJ&E7LGF>=IA<V^&X^9"ASZ\&O+[_P9J>J6[:.N@ZE
M8F2]65V745.FP@2AVECCW[B2 <(5P"W;&:]BHH **** "BBB@ HHHH ****
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
M9S2+N>WE(+1GT)''Y5:HHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH *RO$'B&R\-:<E[?+.\<DR0(EO
M$9'=W.% 4<DDUJUQ?Q)_Y!V@_P#8?L/_ $:* +NG^.](OM3@TZ:'4M.N[@D6
MZ:C8R6_G$<D*6 !/MG-=/7#_ !29&\/:?;1D?VC-JMH+$#[WFB522/HH;)]*
MYOQ-/)J4GB>]LDUZ];3S)&+R/4OL5M8O'&"510X+D'DDJ<DXH ]2;4K-=632
MS,/MKP-<+%@Y\M6"EO3JP%6J\FL-]WXPT379GNIKYO"/VXJMQ(JR2@Q<;0<8
M.3E<8)YQD5EZ5/XCD\/Z/XDCCOEO[B2":74+K6T%M.KL-T9A+[5!!*JH 8''
M>@#V34+Z'3--NK^Y)$%K"\TA49(502<#Z"GVEU%>V4%W"28IXUD0D8.UAD?S
MKRK4;(^(_"_CC6-0U6_AN[.:^M8$CNW2*"*)2%0Q@[6W#DY!)W<=J[OP]IZR
M:9H6H&XN5>+38XA"LI$3!D4Y9.A88X/;)H Z"BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH *SM;T+3?$5@+'5;;[1;"19 F]DPR]#E2#Q6C10!SVD^!_#>AWXOK#
M2HTNU!59Y'>5U!Z[2Y)'X4EUX%\.7M]<W=QIV][IM]Q'YT@BE;&-S1AMC'@<
MD9KHJ* ,4>$]$6?2IELMLNE1B*S=97!C08 4G/S#@<-GI5:#P'X:MM1COHM,
M59(YC/''YKF&.3KO6(ML5O<"NCHH Y[4_ WAO5[V>[OM-$DMP )P)71)L# +
MHK!6([$@D<>E:,6AZ;#>VEY';!9[.W-K ^]ODB./EQG!^Z.3SQ6A10 4444
M%0W1N!:3&T6)[D(?*69BJ%L<!B 2!GT!J:B@#F//\=_] [PY_P"!\_\ \9H\
M_P =_P#0.\.?^!\__P 9KIZ* .8\_P =_P#0.\.?^!\__P 9H\_QW_T#O#G_
M ('S_P#QFNGHH YCS_'?_0.\.?\ @?/_ /&://\ '?\ T#O#G_@?/_\ &:Z>
MB@#F//\ '?\ T#O#G_@?/_\ &://\=_] [PY_P"!\_\ \9KIZ* .8\_QW_T#
MO#G_ ('S_P#QFCS_ !W_ - [PY_X'S__ !FNGHH YCS_ !W_ - [PY_X'S__
M !FCS_'?_0.\.?\ @?/_ /&:Z>B@#F//\=_] [PY_P"!\_\ \9H\_P =_P#0
M.\.?^!\__P 9KIZ* .8\_P =_P#0.\.?^!\__P 9H\_QW_T#O#G_ ('S_P#Q
MFNGHH YCS_'?_0.\.?\ @?/_ /&://\ '?\ T#O#G_@?/_\ &:Z>B@#F//\
M'?\ T#O#G_@?/_\ &://\=_] [PY_P"!\_\ \9KIZ* .8\_QW_T#O#G_ ('S
M_P#QFCS_ !W_ - [PY_X'S__ !FNGHH YCS_ !W_ - [PY_X'S__ !FCS_'?
M_0.\.?\ @?/_ /&:Z>B@#F//\=_] [PY_P"!\_\ \9H\_P =_P#0.\.?^!\_
M_P 9KIZ* .8\_P =_P#0.\.?^!\__P 9H\_QW_T#O#G_ ('S_P#QFNGHH YC
MS_'?_0.\.?\ @?/_ /&://\ '?\ T#O#G_@?/_\ &:Z>B@#F//\ '?\ T#O#
MG_@?/_\ &://\=_] [PY_P"!\_\ \9KIZ* (+(W;6<1ODA2Z*_O5@<L@/L2
M2/J!4]%% !1110 4444 %-E\P1/Y04R;3L#' )[9/I3J* .8\_QW_P! [PY_
MX'S_ /QFCS_'?_0.\.?^!\__ ,9K"TP7?C2&_P!>U#Q#?Z7I"7,L%E!97 MU
M6.-BADD?&22RGC. *MVOB)O"OAC5;[5=8CUVRL;B-8)[9UDN#$[*H$H7 +!F
M/(Z@>M &EY_CO_H'>'/_  /G_P#C-'G^._\ H'>'/_ ^?_XS3#XOOO)M4'A7
M5?[0N6D\NS+1 JBX^=WW[%!W  9SG/%5V^(ME#HS7UQI>H1SQ:DNES605&E2
M<X( PV&!RN"#SF@"WY_CO_H'>'/_  /G_P#C-'G^._\ H'>'/_ ^?_XS6;J'
MCF\32O$$ T2]L-:T_3S>1V\SQ/NC.X"0,&*D*021G/&!FI+#QI=?V/H<#:/>
MWFN7UF+@VD;Q [% !E=MVQ5)(QSGG&.N "]Y_CO_ *!WAS_P/G_^,T>?X[_Z
M!WAS_P #Y_\ XS49\?6 T<W9LKT7PO?[/_LW:OG_ &G&?+Z[>GS;LXV\YI/[
M;N?$%KJ^@_9;O1==6T+QQR3*#M?(61)$W# 88)Z@CI0!+Y_CO_H'>'/_  /G
M_P#C-'G^._\ H'>'/_ ^?_XS4-WXMETZ^GTFSTB_UBXTVWCDOI('C4J&4D8#
ML"[$*3@?GFNGM;A;NS@N421%FC60+*A1@",X*GD'V- '/>?X[_Z!WAS_ ,#Y
M_P#XS1Y_CO\ Z!WAS_P/G_\ C-<#;ZO]L-S'KOC;4] \6>;*([6XD\BTC(8^
M6%5EV2(1MYR2<UW$FMKINN:>FLWLL=PFC375UY##[)\ACWO@C<2"?E]B: )O
M/\=_] [PY_X'S_\ QFCS_'?_ $#O#G_@?/\ _&:IP_$',^DB[\.ZI9VVKSI#
M97$OEE7W D%@&)0X&<$9Q]*@F^)<,5M?7RZ!J<FEZ?=26M[>CRPL3(^PD*6W
M..A) X!]<@ &GY_CO_H'>'/_  /G_P#C-'G^._\ H'>'/_ ^?_XS4VJ>);JU
MU)[#3- O]4FBB6:5XFCCC0-G #2, S'!X&?>N?N/'=W?ZMX-ET:PNI=.U8SM
M,A\I6.U&!0[FX*$;CCKC )Z4 ;7G^._^@=X<_P# ^?\ ^,T>?X[_ .@=X<_\
M#Y__ (S2R>-;&/PIJGB$VUQ]GTZ:>&2/Y=[&)RA(YQR1Q39?&8_X2J70+31K
MZ[FM_):YGCV".".09#DLPSCG@<\'TH 7S_'?_0.\.?\ @?/_ /&://\ '?\
MT#O#G_@?/_\ &:IQ?$.WDABU$Z/?IH$LPACU5O+\LDML#E-V\(6X#$=QVKLZ
M .8\_P =_P#0.\.?^!\__P 9H\_QW_T#O#G_ ('S_P#QFNGHH YCS_'?_0.\
M.?\ @?/_ /&://\ '?\ T#O#G_@?/_\ &:Z>B@#F//\ '?\ T#O#G_@?/_\
M&://\=_] [PY_P"!\_\ \9KIZ* .8\_QW_T#O#G_ ('S_P#QFCS_ !W_ - [
MPY_X'S__ !FNGHH YCS_ !W_ - [PY_X'S__ !FCS_'?_0.\.?\ @?/_ /&:
MZ>B@#F//\=_] [PY_P"!\_\ \9H\_P =_P#0.\.?^!\__P 9KIZ* .8\_P =
M_P#0.\.?^!\__P 9H\_QW_T#O#G_ ('S_P#QFNGHH YCS_'?_0.\.?\ @?/_
M /&://\ '?\ T#O#G_@?/_\ &:Z>B@#F//\ '?\ T#O#G_@?/_\ &://\=_]
M [PY_P"!\_\ \9KIZ* .8\_QW_T#O#G_ ('S_P#QFCS_ !W_ - [PY_X'S__
M !FNGHH YCS_ !W_ - [PY_X'S__ !FCS_'?_0.\.?\ @?/_ /&:Z>B@#F//
M\=_] [PY_P"!\_\ \9H\_P =_P#0.\.?^!\__P 9KIZ* .8\_P =_P#0.\.?
M^!\__P 9H\_QW_T#O#G_ ('S_P#QFNGHH YCS_'?_0.\.?\ @?/_ /&://\
M'?\ T#O#G_@?/_\ &:Z>B@#F//\ '?\ T#O#G_@?/_\ &://\=_] [PY_P"!
M\_\ \9KIZ* *.E/JKVC'6(;**YWG"V<K2)MP,'+*ISG/;TJ]110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 >?1:1KWA==0TNST&U\0:!=SR3PP-<)$\'F-
MN:-E<;73<20<YYY%9?\ P@>KR:!XC==-T[3[G5[FRDBTVS8>7 D,BDY;"J6(
M!)P,9^M>JT4 <3XRT?5M1UW3YDL[C4]%C@D2:PM[[[*WG$C;(QW+O4 $8SQG
M.#6!I?@?6K2R: Z=:VJGQ/;ZHD,$X9$@4)N&3@EAM.>.3R*]5HH XS7?#6H:
MEXDUFYA6,6]YX=;3HW9_^6Q=S@CKC##FN<G\'ZI=-H6K7_AM+R6TTT:;=:=]
MN".-I!25'!"G/.5)'!'I7JU% 'E-Q\/;RYT"&9=#TZWN8=5^W#2TN'Q+%L*;
M'ER?WF#G<.. />M_P?X=DL-=N]3;P[:Z-"UNL$2&X,]P_P VYBS!BH7A< 9/
M&<CI7;T4 >=^,/#=YJFNSW#>&(-1S"JV-_9WOV2YMV .1(^X%ESR",XY&#78
MZ#9W]GX;L+/5+PW-_%;)'/< Y+N!@G)Z\]SUK3HH \[EC\9_V+)H.J>&K#7S
MM:)-1FNT2*53G:\D97<"!C(4'IP:JW/@6XMM.LK2^O =/L_#%SIUU>D_<9MA
MW!>I4!6/T KTZD(# @@$'@@T >37FI:Y>OX$LKNTT](AJ4#K/;7@F^U!(G/F
M1J%!"8R23R,@5L3>$]6?X;>)]%6%/MNH75[+;IY@PRR2LR9/0<$5U>F^%M T
M>\>\TW1;"TN7!#2P6ZHV#U&0.!6O0!YUK?AW6+SQ1=S7FDR:UITD$26,7]I&
M"&V8+A_,3(W9;G< QQQBJFC>%/$.AZ1X+(T^&XN=&N+H7,$<ZH-DN]0ZD\$
M,#CKVKU"B@#RK4_#GBP>%?$?A:STBWFBO[JXG@OVNU52DLADVE/O;^2OIWS7
M7:9H5U#XK\37ER@6TU&"UBB96&3L1U?CM]X5T]% 'CVG_#N\M--M=#D\*:?/
M+#(L;ZM->,87B#9W^2&#;RO&W@9YSBO8:** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
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
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %-D
MD2&)Y9&"1HI9F)X '4TZB@#F/^%C>#/^AGTO_P "%H_X6-X,_P"AGTO_ ,"%
MKIL#T%&!Z"@#F?\ A8W@S_H9]+_\"%H_X6-X,_Z&?2__  (6NFP/048'H* .
M9_X6-X,_Z&?2_P#P(6C_ (6-X,_Z&?2__ A:Z; ]!1@>@H YG_A8W@S_ *&?
M2_\ P(6C_A8W@S_H9]+_ / A:Z; ]!1@>@H YG_A8W@S_H9]+_\  A:/^%C>
M#/\ H9]+_P# A:Z; ]!1@>@H YG_ (6-X,_Z&?2__ A:/^%C>#/^AGTO_P "
M%KIL#T%&!Z"@#F?^%C>#/^AGTO\ \"%H_P"%C>#/^AGTO_P(6NFP/048'H*
M.9_X6-X,_P"AGTO_ ,"%H_X6-X,_Z&?2_P#P(6NFP/048'H* .9_X6-X,_Z&
M?2__  (6C_A8W@S_ *&?2_\ P(6NFP/048'H* .9_P"%C>#/^AGTO_P(6C_A
M8W@S_H9]+_\  A:Z; ]!1@>@H YG_A8W@S_H9]+_ / A:/\ A8W@S_H9]+_\
M"%KIL#T%&!Z"@#F?^%C>#/\ H9]+_P# A:/^%C>#/^AGTO\ \"%KIL#T%&!Z
M"@#F?^%C>#/^AGTO_P "%H_X6-X,_P"AGTO_ ,"%KIL#T%&!Z"@#F?\ A8W@
MS_H9]+_\"%H_X6-X,_Z&?2__  (6NFP/048'H* .9_X6-X,_Z&?2_P#P(6C_
M (6-X,_Z&?2__ A:Z; ]!1@>@H YG_A8W@S_ *&?2_\ P(6C_A8W@S_H9]+_
M / A:Z; ]!1@>@H YG_A8W@S_H9]+_\  A:/^%C>#/\ H9]+_P# A:Z; ]!1
M@>@H YG_ (6-X,_Z&?2__ A:/^%C>#/^AGTO_P "%KIL#T%&!Z"@#F?^%C>#
M/^AGTO\ \"%H_P"%C>#/^AGTO_P(6NFP/048'H* .9_X6-X,_P"AGTO_ ,"%
MH_X6-X,_Z&?2_P#P(6NFP/048'H* .9_X6-X,_Z&?2__  (6C_A8W@S_ *&?
M2_\ P(6NFP/048'H* .9_P"%C>#/^AGTO_P(6C_A8W@S_H9]+_\  A:Z; ]!
M1@>@H YG_A8W@S_H9]+_ / A:/\ A8W@S_H9]+_\"%KIL#T%&!Z"@#F?^%C>
M#/\ H9]+_P# A:/^%C>#/^AGTO\ \"%KIL#T%&!Z"@#F?^%C>#/^AGTO_P "
M%H_X6-X,_P"AGTO_ ,"%KIL#T%&!Z"@"EI6LZ;KEHUUI5]!>6ZN8S) X90P
M)&1WY'YU>HHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "B
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ***
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH ***;+(D,3RR-M1%+,?0#K0 ZBN7
M_P"%B>$_^@Q'_P!^I/\ XFC_ (6)X3_Z#$?_ 'ZD_P#B: .HHKE_^%B>$_\
MH,1_]^I/_B:/^%B>$_\ H,1_]^I/_B: .HHKE_\ A8GA/_H,1_\ ?J3_ .)H
M_P"%B>$_^@Q'_P!^I/\ XF@#J**Y?_A8GA/_ *#$?_?J3_XFC_A8GA/_ *#$
M?_?J3_XF@#J**Y?_ (6)X3_Z#$?_ 'ZD_P#B:/\ A8GA/_H,1_\ ?J3_ .)H
M ZBBN7_X6)X3_P"@Q'_WZD_^)H_X6)X3_P"@Q'_WZD_^)H ZBBN7_P"%B>$_
M^@Q'_P!^I/\ XFC_ (6)X3_Z#$?_ 'ZD_P#B: .HHKE_^%B>$_\ H,1_]^I/
M_B:/^%B>$_\ H,1_]^I/_B: .HHKE_\ A8GA/_H,1_\ ?J3_ .)H_P"%B>$_
M^@Q'_P!^I/\ XF@#J**Y?_A8GA/_ *#$?_?J3_XFC_A8GA/_ *#$?_?J3_XF
M@#J**Y?_ (6)X3_Z#$?_ 'ZD_P#B:/\ A8GA/_H,1_\ ?J3_ .)H ZBBN7_X
M6)X3_P"@Q'_WZD_^)H_X6)X3_P"@Q'_WZD_^)H ZBBN7_P"%B>$_^@Q'_P!^
MI/\ XFC_ (6)X3_Z#$?_ 'ZD_P#B: .HHKE_^%B>$_\ H,1_]^I/_B:/^%B>
M$_\ H,1_]^I/_B: .HHKE_\ A8GA/_H,1_\ ?J3_ .)H_P"%B>$_^@Q'_P!^
MI/\ XF@#J**Y?_A8GA/_ *#$?_?J3_XFC_A8GA/_ *#$?_?J3_XF@#J**Y?_
M (6)X3_Z#$?_ 'ZD_P#B:/\ A8GA/_H,1_\ ?J3_ .)H ZBBN7_X6)X3_P"@
MQ'_WZD_^)H_X6)X3_P"@Q'_WZD_^)H ZBBN7_P"%B>$_^@Q'_P!^I/\ XFC_
M (6)X3_Z#$?_ 'ZD_P#B: .HHKE_^%B>$_\ H,1_]^I/_B:/^%B>$_\ H,1_
M]^I/_B: .HHKE_\ A8GA/_H,1_\ ?J3_ .)H_P"%B>$_^@Q'_P!^I/\ XF@#
MJ**Y?_A8GA/_ *#$?_?J3_XFC_A8GA/_ *#$?_?J3_XF@#J**Y?_ (6)X3_Z
M#$?_ 'ZD_P#B:/\ A8GA/_H,1_\ ?J3_ .)H ZBBN7_X6)X3_P"@Q'_WZD_^
M)H_X6)X3_P"@Q'_WZD_^)H ZBBN7_P"%B>$_^@Q'_P!^I/\ XFC_ (6)X3_Z
M#$?_ 'ZD_P#B: .HHJCI.LZ?KEHUUIMR+B!7*%PI'S  XY ]15Z@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ ILLBQ1/(V[:BECM4DX'H!R:=10!R_\ PG^B?\\=9_\ !+=__&J/^$_T
M3_GCK/\ X);O_P"-5U%% '+_ /"?Z)_SQUG_ ,$MW_\ &J/^$_T3_GCK/_@E
MN_\ XU7444 <O_PG^B?\\=9_\$MW_P#&J/\ A/\ 1/\ GCK/_@EN_P#XU744
M4 <O_P )_HG_ #QUG_P2W?\ \:H_X3_1/^>.L_\ @EN__C5=110!R_\ PG^B
M?\\=9_\ !+=__&J/^$_T3_GCK/\ X);O_P"-5U%% '+_ /"?Z)_SQUG_ ,$M
MW_\ &J/^$_T3_GCK/_@EN_\ XU7444 <O_PG^B?\\=9_\$MW_P#&J/\ A/\
M1/\ GCK/_@EN_P#XU7444 <O_P )_HG_ #QUG_P2W?\ \:H_X3_1/^>.L_\
M@EN__C5=110!R_\ PG^B?\\=9_\ !+=__&J/^$_T3_GCK/\ X);O_P"-5U%%
M '+_ /"?Z)_SQUG_ ,$MW_\ &J/^$_T3_GCK/_@EN_\ XU7444 <O_PG^B?\
M\=9_\$MW_P#&J/\ A/\ 1/\ GCK/_@EN_P#XU7444 <O_P )_HG_ #QUG_P2
MW?\ \:H_X3_1/^>.L_\ @EN__C5=110!R_\ PG^B?\\=9_\ !+=__&J/^$_T
M3_GCK/\ X);O_P"-5U%% '+_ /"?Z)_SQUG_ ,$MW_\ &J/^$_T3_GCK/_@E
MN_\ XU7444 <O_PG^B?\\=9_\$MW_P#&J/\ A/\ 1/\ GCK/_@EN_P#XU744
M4 <O_P )_HG_ #QUG_P2W?\ \:H_X3_1/^>.L_\ @EN__C5=110!R_\ PG^B
M?\\=9_\ !+=__&J/^$_T3_GCK/\ X);O_P"-5U%% '+_ /"?Z)_SQUG_ ,$M
MW_\ &J/^$_T3_GCK/_@EN_\ XU7444 <O_PG^B?\\=9_\$MW_P#&J/\ A/\
M1/\ GCK/_@EN_P#XU7444 <O_P )_HG_ #QUG_P2W?\ \:H_X3_1/^>.L_\
M@EN__C5=110!R_\ PG^B?\\=9_\ !+=__&J/^$_T3_GCK/\ X);O_P"-5U%%
M '+_ /"?Z)_SQUG_ ,$MW_\ &J/^$_T3_GCK/_@EN_\ XU7444 <O_PG^B?\
M\=9_\$MW_P#&J/\ A/\ 1/\ GCK/_@EN_P#XU7444 <O_P )_HG_ #QUG_P2
MW?\ \:H_X3_1/^>.L_\ @EN__C5=110!R_\ PG^B?\\=9_\ !+=__&J/^$_T
M3_GCK/\ X);O_P"-5U%% %'2=7M=9M&N;1;E8U<H1<6TD#9 !^[(H..>N,5>
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BH
MK:ZM[R!9[6>*>%L[9(G#*<'!P1QU!%2T %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !7%>-O$5G'>VWA=M6MM-DOHS+=W,TZQ&&VS@["Q'SN<J,=
M/F/85VM5;G3+"\D$EU8VT[@;0TL2L0/3)% '(?"*YLI?ASIUO:7$,GV=I4=(
MY QC_>N0#@\<8//:NYK&\,>'+3PMH<6F6F&5"S&0H%9RS%N<>F<?05LT %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110!
"_]D!

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>19
<FILENAME>cgnx-20211231xexhibit10l005.jpg
<DESCRIPTION>GRAPHIC
<TEXT>
begin 644 cgnx-20211231xexhibit10l005.jpg
M_]C_X  02D9)1@ ! @   0 !  #_VP!#  @&!@<&!0@'!P<)"0@*#!0-# L+
M#!D2$P\4'1H?'AT:'!P@)"XG("(L(QP<*#<I+# Q-#0T'R<Y/3@R/"XS-#+_
MVP!# 0D)"0P+#!@-#1@R(1PA,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R
M,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C+_P  1" 55!!\# 2(  A$! Q$!_\0
M'P   04! 0$! 0$           $" P0%!@<("0H+_\0 M1   @$# P($ P4%
M! 0   %] 0(#  01!1(A,4$&$U%A!R)Q%#*!D:$((T*QP152T? D,V)R@@D*
M%A<8&1HE)B<H*2HT-38W.#DZ0T1%1D=(24I35%565UA96F-D969G:&EJ<W1U
M=G=X>7J#A(6&AXB)BI*3E)66EYB9FJ*CI*6FIZBIJK*SM+6VM[BYNL+#Q,7&
MQ\C)RM+3U-76U]C9VN'BX^3EYN?HZ>KQ\O/T]?;W^/GZ_\0 'P$  P$! 0$!
M 0$! 0        $" P0%!@<("0H+_\0 M1$  @$"! 0#! <%! 0  0)W  $"
M Q$$!2$Q!A)!40=A<1,B,H$(%$*1H;'!"2,S4O 58G+1"A8D-.$E\1<8&1HF
M)R@I*C4V-S@Y.D-$149'2$E*4U155E=865IC9&5F9VAI:G-T=79W>'EZ@H.$
MA8:'B(F*DI.4E9:7F)F:HJ.DI::GJ*FJLK.TM;:WN+FZPL/$Q<;'R,G*TM/4
MU=;7V-G:XN/DY>;GZ.GJ\O/T]?;W^/GZ_]H # ,!  (1 Q$ /P#W^BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BD) &20![TGF(3]]?SH =12
M!@<X(./2DWI_>'7'6@!U%(2 0"0,]*-R\_,..O/2@!:*:'5CA6!^AI2R@X+
M$<]: %HIOFQ_WU_.G4 %%)N&<9&?2EH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH X3XS?\DE
MU[_<B_\ 1R5Y_P"$- \*RW>AO_PK'Q%#<EH&_M"1IO)5^#YI_>8VYYZ8QVKU
MSQMX<;Q;X/U#0DN1;-=J@$S)O"[75NF1G[N*YO3?"?Q!T];2#_A.[5K2W")Y
M7]DQ@E%P-N<YZ#&: .&^)]]<_#3Q?<:CX>O(8#XDMG2ZMF)_<R@X$X Z=3SZ
M[NO:7QWX?L_!7PT\(6EB#=E-:M[B62'YFNI"CDL/7/ 'MBNYA^&<%_X@U[6/
M$UTFJ3:G$;:&,1;%M8/[JY)^;I\W'()[FL[_ (5;J<GA/1] NO$*3QZ3J<=Y
M;S-;'=Y2@XB/S>_![#C'% '.>*/%4_B/Q[X#2;PYK.D"'5,AM1@\L29*<+SS
MC'/UK+U?_CQ^,_\ U\6O_H;5ZYXJ\(/XCU[PUJ2WBP#1KLW+1F/=YN=O .1C
M[OO6%>?"^:ZM_&T0U5%_X262)T/D$_9]C$X/S?-G/M0!Y!>6NCV&A:%>Z5X7
MUWPYJ EMC+K]UYPMUR!N?[S @GD8 _I7I4^G6.O?'O5;"]C%Q8W7AP+(@<@.
MID3NI!_(U-<_##Q7J^B0:!K'CE9=$01H]O!IJ(S(F-J[\Y[#GGIWKJ+'P2+#
MXB-XFBNU%O\ V6NGI:;#E0I4AMV?1<8Q0!YEI'PT\(W7QD\0Z!-I);3+2QAE
M@@^TRC8[!,G<&W'J>IKW5W@L+)G=A%;V\>2S'A44=3] *YO3_"#V/Q'U?Q6;
MQ734+6.W%OY>"FT*,[L\_=].]7O&.B7?B3PI?Z-97RV4EXGE-.R%\(3\PQD=
M1D?C0!X)I'B-[/QG8_$FXU"(0ZMJDMG<6GFKOBM2 L;,N<X&TG_@"^M?2]>=
MW_P9\)W/A632K;3K:WO?LPB2_$>9 X PYYYR1SZY-=IH5E=:;H-C8WUT+NYM
MX5B>X"[?,*C&[&3R0.?>@#0HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
M**** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH
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
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HH
MHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBJ
MUYJ%EIT2RWUY;VL;-M#SR! 3Z9)ZT 6:*KV=_9ZC"9;&[@NHE;:7@D#@'KC(
M/7D?G5B@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *XKQMH.KZW
MKF@-8Z?IUW:6AGEG746S"'9 J90 EN"_XXYKM:P=<\-OJFH6>J6.I3Z;J5HK
MQI/&BR*\;8W(Z-P1D CH010!2\$7Z2)JFDR:19:7?Z;<B.ZAL5 AD+(&61>!
MU7'49&*ZNL;P]X>BT&&Z8W4UY>WLQGN[N8 -*^ !P  %    Z 5LT %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110!__9

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>20
<FILENAME>R1.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253606568">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cover Page - USD ($)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Jan. 30, 2022</div></th>
<th class="th"><div>Jul. 04, 2021</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_CoverAbstract', window );"><strong>Cover [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentType', window );">Document Type</a></td>
<td class="text">10-K<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentAnnualReport', window );">Document Annual Report</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentPeriodEndDate', window );">Document Period End Date</a></td>
<td class="text">Dec. 31,  2021<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentTransitionReport', window );">Document Transition Report</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityFileNumber', window );">Entity File Number</a></td>
<td class="text">001-34218<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityRegistrantName', window );">Entity Registrant Name</a></td>
<td class="text">COGNEX CORP<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityIncorporationStateCountryCode', window );">Entity Incorporation, State or Country Code</a></td>
<td class="text">MA<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityTaxIdentificationNumber', window );">Entity Tax Identification Number</a></td>
<td class="text">04-2713778<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressAddressLine1', window );">Entity Address, Address Line One</a></td>
<td class="text">One Vision Drive<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressCityOrTown', window );">Entity Address, City or Town</a></td>
<td class="text">Natick<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressStateOrProvince', window );">Entity Address, State or Province</a></td>
<td class="text">MA<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityAddressPostalZipCode', window );">Entity Address, Postal Zip Code</a></td>
<td class="text">01760<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_CityAreaCode', window );">City Area Code</a></td>
<td class="text">508<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_LocalPhoneNumber', window );">Local Phone Number</a></td>
<td class="text">650-3000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_Security12bTitle', window );">Title of 12(b) Security</a></td>
<td class="text">Common Stock, par value $.002 per share<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_TradingSymbol', window );">Trading Symbol</a></td>
<td class="text">CGNX<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_SecurityExchangeName', window );">Security Exchange Name</a></td>
<td class="text">NASDAQ<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityWellKnownSeasonedIssuer', window );">Entity Well-known Seasoned Issuer</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityVoluntaryFilers', window );">Entity Voluntary Filers</a></td>
<td class="text">No<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityCurrentReportingStatus', window );">Entity Current Reporting Status</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityInteractiveDataCurrent', window );">Entity Interactive Data Current</a></td>
<td class="text">Yes<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityFilerCategory', window );">Entity Filer Category</a></td>
<td class="text">Large Accelerated Filer<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntitySmallBusiness', window );">Entity Small Business</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityEmergingGrowthCompany', window );">Entity Small Business</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_IcfrAuditorAttestationFlag', window );">ICFR Auditor Attestation Flag</a></td>
<td class="text">true<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityShellCompany', window );">Entity Shell Company</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityPublicFloat', window );">Entity Public Float</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 14,919,879,186<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityCommonStockSharesOutstanding', window );">Entity Common Stock, Shares Outstanding</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">173,915,951<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_EntityCentralIndexKey', window );">Entity Central Index Key</a></td>
<td class="text">0000851205<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_CurrentFiscalYearEndDate', window );">Current Fiscal Year End Date</a></td>
<td class="text">--12-31<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentFiscalYearFocus', window );">Document Fiscal Year Focus</a></td>
<td class="text">2021<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_DocumentFiscalPeriodFocus', window );">Document Fiscal Period Focus</a></td>
<td class="text">FY<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_AmendmentFlag', window );">Amendment Flag</a></td>
<td class="text">false<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AmendmentFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AmendmentFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CityAreaCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Area code of city</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CityAreaCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CoverAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Cover page.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CoverAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_CurrentFiscalYearEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>End date of current fiscal year in the format --MM-DD.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_CurrentFiscalYearEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gMonthDayItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentAnnualReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as an annual report.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentAnnualReport</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentFiscalPeriodFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentFiscalPeriodFocus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fiscalPeriodItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentFiscalYearFocus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentFiscalYearFocus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:gYearItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentPeriodEndDate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentPeriodEndDate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentTransitionReport">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true only for a form used as a transition report.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Forms 10-K, 10-Q, 20-F<br> -Number 240<br> -Section 13<br> -Subsection a-1<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentTransitionReport</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_DocumentType">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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'.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_DocumentType</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:submissionTypeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressAddressLine1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Address Line 1 such as Attn, Building Name, Street Name</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressAddressLine1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressCityOrTown">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Name of the City or Town</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressCityOrTown</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressPostalZipCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Code for the postal or zip code</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressPostalZipCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityAddressStateOrProvince">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Name of the state or province.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityAddressStateOrProvince</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:stateOrProvinceItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCentralIndexKey">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCentralIndexKey</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:centralIndexKeyItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityCurrentReportingStatus">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityCurrentReportingStatus</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityEmergingGrowthCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate if registrant meets the emerging growth company criteria.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityEmergingGrowthCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFileNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFileNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:fileNumberItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityFilerCategory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityFilerCategory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:filerCategoryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityIncorporationStateCountryCode">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Two-character EDGAR code representing the state or country of incorporation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityIncorporationStateCountryCode</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarStateCountryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityInteractiveDataCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Regulation S-T<br> -Number 232<br> -Section 405<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityInteractiveDataCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityPublicFloat">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityPublicFloat</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityRegistrantName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityRegistrantName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityShellCompany">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityShellCompany</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntitySmallBusiness">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicates that the company is a Smaller Reporting Company (SRC).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntitySmallBusiness</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityTaxIdentificationNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b-2<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityTaxIdentificationNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:employerIdItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityVoluntaryFilers">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityVoluntaryFilers</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_EntityWellKnownSeasonedIssuer">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Securities Act<br> -Number 230<br> -Section 405<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_EntityWellKnownSeasonedIssuer</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:yesNoItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_IcfrAuditorAttestationFlag">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_IcfrAuditorAttestationFlag</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:booleanItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_LocalPhoneNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Local phone number for entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_LocalPhoneNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:normalizedStringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_Security12bTitle">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Title of a 12(b) registered security.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection b<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_Security12bTitle</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:securityTitleItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_SecurityExchangeName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Name of the Exchange on which a security is registered.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Exchange Act<br> -Number 240<br> -Section 12<br> -Subsection d1-1<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_SecurityExchangeName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:edgarExchangeCodeItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_TradingSymbol">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Trading symbol of an instrument as listed on an exchange.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_TradingSymbol</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:tradingSymbolItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>21
<FILENAME>R2.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253735064">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Audit Information<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_AuditorLineItems', window );"><strong>Auditor [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_AuditorName', window );">Auditor Name</a></td>
<td class="text">GRANT THORNTON LLP<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_AuditorLocation', window );">Auditor Location</a></td>
<td class="text">Boston, Massachusetts<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_dei_AuditorFirmId', window );">Auditor Firm ID</a></td>
<td class="text">248<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AuditorFirmId">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>PCAOB issued Audit Firm Identifier</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AuditorFirmId</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:nonemptySequenceNumberItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AuditorLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AuditorLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AuditorLocation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AuditorLocation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:internationalNameItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_dei_AuditorName">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>Reference 1: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 10-K<br> -Number 249<br> -Section 310<br><br>Reference 2: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 20-F<br> -Number 249<br> -Section 220<br> -Subsection f<br><br>Reference 3: http://www.xbrl.org/2003/role/presentationRef<br> -Publisher SEC<br> -Name Form 40-F<br> -Number 249<br> -Section 240<br> -Subsection f<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">dei_AuditorName</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>dei_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dei:internationalNameItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>22
<FILENAME>R3.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254343400">
<tr>
<th class="tl" colspan="2" rowspan="2"><div style="width: 200px;"><strong>CONSOLIDATED STATEMENTS OF OPERATIONS - USD ($)<br> shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementAbstract', window );"><strong>Income Statement [Abstract]</strong></a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 1,037,098<span></span>
</td>
<td class="nump">$ 811,020<span></span>
</td>
<td class="nump">$ 725,625<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CostOfGoodsAndServicesSold', window );">Cost of revenue</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">277,271<span></span>
</td>
<td class="nump">206,421<span></span>
</td>
<td class="nump">189,754<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GrossProfit', window );">Gross margin</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">759,827<span></span>
</td>
<td class="nump">604,599<span></span>
</td>
<td class="nump">535,871<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ResearchAndDevelopmentExpense', window );">Research, development, and engineering expenses</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">135,372<span></span>
</td>
<td class="nump">130,982<span></span>
</td>
<td class="nump">119,427<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SellingGeneralAndAdministrativeExpense', window );">Selling, general, and administrative expenses</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">309,354<span></span>
</td>
<td class="nump">267,593<span></span>
</td>
<td class="nump">273,842<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">0<span></span>
</td>
<td class="nump">15,924<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">0<span></span>
</td>
<td class="nump">19,571<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingIncomeLoss', window );">Operating income</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">315,101<span></span>
</td>
<td class="nump">170,529<span></span>
</td>
<td class="nump">142,602<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax', window );">Foreign currency gain (loss)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(2,270)<span></span>
</td>
<td class="nump">3,697<span></span>
</td>
<td class="num">(509)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InvestmentIncomeNonoperating', window );">Investment income</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">6,660<span></span>
</td>
<td class="nump">12,994<span></span>
</td>
<td class="nump">19,689<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherNonoperatingIncomeExpense', window );">Other income (expense)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(591)<span></span>
</td>
<td class="num">(309)<span></span>
</td>
<td class="nump">1,212<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income tax expense (benefit)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">318,900<span></span>
</td>
<td class="nump">186,911<span></span>
</td>
<td class="nump">162,994<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income tax expense on continuing operations</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">39,019<span></span>
</td>
<td class="nump">10,725<span></span>
</td>
<td class="num">(40,871)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 279,881<span></span>
</td>
<td class="nump">$ 176,186<span></span>
</td>
<td class="nump">$ 203,865<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasicAbstract', window );"><strong>Net Income per weighted-average common and common-equivalent share:</strong></a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Net income (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 1.59<span></span>
</td>
<td class="nump">$ 1.02<span></span>
</td>
<td class="nump">$ 1.19<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDilutedAbstract', window );"><strong>Diluted earnings per weighted-average common and common-equivalent share (1):</strong></a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Net income (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 1.56<span></span>
</td>
<td class="nump">$ 1.00<span></span>
</td>
<td class="nump">$ 1.16<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract', window );"><strong>Weighted-average common and common-equivalent shares outstanding:</strong></a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">176,463<span></span>
</td>
<td class="nump">173,489<span></span>
</td>
<td class="nump">171,194<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted (in shares)</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">179,916<span></span>
</td>
<td class="nump">176,592<span></span>
</td>
<td class="nump">175,269<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockDividendsPerShareCashPaid', window );">Cash dividends per common share (in dollars per share)</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">$ 0.245<span></span>
</td>
<td class="nump">$ 2.225<span></span>
</td>
<td class="nump">$ 0.205<span></span>
</td>
</tr>
<tr><td colspan="4"></td></tr>
<tr><td colspan="4"><table class="outerFootnotes" width="100%"><tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[1]</td>
<td style="vertical-align: top;" valign="top">170,820&#160;</td>
</tr></table></td></tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockDividendsPerShareCashPaid">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate dividends paid during the period for each share of common stock outstanding.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockDividendsPerShareCashPaid</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostOfGoodsAndServicesSold">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI http://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.2(a),(d))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CostOfGoodsAndServicesSold</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1448-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1337-109256<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e4984-109258<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e3842-109258<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1252-109256<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasicAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasicAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e4984-109258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e3842-109258<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1252-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1337-109256<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDilutedAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDilutedAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before tax of foreign currency transaction realized and unrealized gain (loss) recognized in the income statement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=125521441&amp;loc=d3e30690-110894<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 20<br> -Section 35<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123602790&amp;loc=d3e30226-110892<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17<br> -URI http://asc.fasb.org/extlink&amp;oid=120253306&amp;loc=d3e28228-110885<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124440516&amp;loc=d3e30840-110895<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ForeignCurrencyTransactionGainLossBeforeTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GrossProfit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 18: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.1,2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GrossProfit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of impairment loss recognized in the period resulting from the write-down of the carrying amount of an intangible asset (excluding goodwill) to fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16373-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 940<br> -SubTopic 20<br> -Section 25<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123384075&amp;loc=d3e41242-110953<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 235<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399901&amp;loc=d3e537907-122884<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32672-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123586238&amp;loc=d3e38679-109324<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentIncomeNonoperating">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate amount of income from investments (for example, dividends) not considered a component of the entity's core operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentIncomeNonoperating</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The net result for the period of deducting operating expenses from operating revenues.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherNonoperatingIncomeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of income (expense) related to nonoperating activities, classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.9)<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherNonoperatingIncomeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ResearchAndDevelopmentExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 912<br> -SubTopic 730<br> -Section 25<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6472174&amp;loc=d3e58812-109433<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 985<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6501960&amp;loc=d3e128462-111756<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 730<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6420194&amp;loc=d3e21568-108373<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ResearchAndDevelopmentExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCharges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses associated with exit or disposal activities pursuant to an authorized plan. Excludes expenses related to a discontinued operation or an asset retirement obligation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109237686&amp;loc=d3e17752-110868<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 5.P.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCharges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, excluding 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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9031-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130543-203045<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130545-203045<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI http://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SellingGeneralAndAdministrativeExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The aggregate total costs related to selling a firm's product and services, as well as all other general and administrative expenses. Direct selling expenses (for example, credit, warranty, and advertising) are expenses that can be directly linked to the sale of specific products. Indirect selling expenses are expenses that cannot be directly linked to the sale of specific products, for example telephone expenses, Internet, and postal charges. General and administrative expenses include salaries of non-sales personnel, rent, utilities, communication, etc.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SellingGeneralAndAdministrativeExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 16<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1505-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1448-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>23
<FILENAME>R4.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254116584">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract', window );"><strong>Statement of Comprehensive Income [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 279,881<span></span>
</td>
<td class="nump">$ 176,186<span></span>
</td>
<td class="nump">$ 203,865<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract', window );"><strong>Available-for-sale investments:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gain (loss), net of tax of $(2,206), $981, and $515 in 2021, 2020, and 2019, respectively</a></td>
<td class="num">(7,152)<span></span>
</td>
<td class="nump">6,478<span></span>
</td>
<td class="nump">5,219<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax', window );">Reclassification of net realized (gain) loss into current operations</a></td>
<td class="num">(236)<span></span>
</td>
<td class="num">(4,119)<span></span>
</td>
<td class="num">(1,452)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent', window );">Net change related to available-for-sale investments</a></td>
<td class="num">(7,388)<span></span>
</td>
<td class="nump">2,359<span></span>
</td>
<td class="nump">3,767<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CurrencytranslationadjustmentAbstract', window );"><strong>Foreign currency translation adjustments:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustments</a></td>
<td class="num">(6,753)<span></span>
</td>
<td class="nump">1,115<span></span>
</td>
<td class="num">(541)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent', window );">Net change related to foreign currency translation adjustments</a></td>
<td class="num">(6,753)<span></span>
</td>
<td class="nump">1,115<span></span>
</td>
<td class="num">(541)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent', window );">Other comprehensive income (loss), net of tax</a></td>
<td class="num">(14,141)<span></span>
</td>
<td class="nump">3,474<span></span>
</td>
<td class="nump">3,226<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomeNetOfTax', window );">Total comprehensive income</a></td>
<td class="nump">$ 265,740<span></span>
</td>
<td class="nump">$ 179,660<span></span>
</td>
<td class="nump">$ 207,091<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_CurrencytranslationadjustmentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Currency translation adjustment [Abstract]</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_CurrencytranslationadjustmentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomeNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(24))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e557-108580<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(26))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomeNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax and reclassification adjustments, of appreciation (loss) in value of unsold available-for-sale securities, attributable to parent entity. Excludes amounts related to other than temporary impairment (OTTI) loss.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4573702-111684<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 19<br> -URI http://asc.fasb.org/extlink&amp;oid=123454820&amp;loc=SL4569616-111683<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=123454820&amp;loc=SL4569643-111683<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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, attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=123454820&amp;loc=SL4569643-111683<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4573702-111684<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 19<br> -URI http://asc.fasb.org/extlink&amp;oid=123454820&amp;loc=SL4569616-111683<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of other comprehensive income (loss) attributable to parent entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (c)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=SL4573702-111684<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=123454820&amp;loc=SL4569643-111683<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 19<br> -URI http://asc.fasb.org/extlink&amp;oid=123454820&amp;loc=SL4569616-111683<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of reclassification adjustment from accumulated other comprehensive income for unrealized gain (loss) realized upon the sale of available-for-sale securities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e689-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27357-111563<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17A<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL34724391-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>24
<FILENAME>R5.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029257754888">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Parenthetical) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract', window );"><strong>Statement of Comprehensive Income [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax', window );">Tax effect of unrealized gain (loss) on available-for-sale investments</a></td>
<td class="num">$ (2,206)<span></span>
</td>
<td class="nump">$ 981<span></span>
</td>
<td class="nump">$ 515<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, before adjustment, of tax expense (benefit) for 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 tax expense (benefit) for unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e640-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>25
<FILENAME>R6.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254367016">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>CONSOLIDATED BALANCE SHEETS - USD ($)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsCurrentAbstract', window );"><strong>Current assets:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">$ 186,161,000<span></span>
</td>
<td class="nump">$ 269,073,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent', window );">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">137,455,000<span></span>
</td>
<td class="nump">103,240,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountsReceivableNetCurrent', window );">Accounts receivable, allowance for credit losses of $776 and $831 in 2021 and 2020, respectively</a></td>
<td class="nump">130,348,000<span></span>
</td>
<td class="nump">125,696,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnbilledReceivablesCurrent', window );">Unbilled revenue</a></td>
<td class="nump">3,990,000<span></span>
</td>
<td class="nump">5,632,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventories</a></td>
<td class="nump">113,102,000<span></span>
</td>
<td class="nump">60,830,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent', window );">Prepaid expenses and other current assets</a></td>
<td class="nump">68,742,000<span></span>
</td>
<td class="nump">37,220,000<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsCurrent', window );">Total current assets</a></td>
<td class="nump">639,798,000<span></span>
</td>
<td class="nump">601,691,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LongTermInvestments', window );">Non-current investments, amortized cost of $587,981 and $390,417 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">583,748,000<span></span>
</td>
<td class="nump">395,125,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property, plant, and equipment, net</a></td>
<td class="nump">77,546,000<span></span>
</td>
<td class="nump">79,173,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseRightOfUseAsset', window );">Operating lease assets</a></td>
<td class="nump">23,157,000<span></span>
</td>
<td class="nump">22,582,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill</a></td>
<td class="nump">241,713,000<span></span>
</td>
<td class="nump">244,078,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IntangibleAssetsNetExcludingGoodwill', window );">Intangible Assets, Net (Excluding Goodwill)</a></td>
<td class="nump">11,888,000<span></span>
</td>
<td class="nump">15,555,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxAssetsNet', window );">Deferred income taxes</a></td>
<td class="nump">418,570,000<span></span>
</td>
<td class="nump">434,704,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherAssetsNoncurrent', window );">Other assets</a></td>
<td class="nump">7,242,000<span></span>
</td>
<td class="nump">7,794,000<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Assets', window );">Total assets</a></td>
<td class="nump">2,003,662,000<span></span>
</td>
<td class="nump">1,800,702,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrentAbstract', window );"><strong>Current liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountsPayableCurrent', window );">Accounts payable</a></td>
<td class="nump">44,051,000<span></span>
</td>
<td class="nump">16,270,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrent', window );">Accrued expenses</a></td>
<td class="nump">92,432,000<span></span>
</td>
<td class="nump">77,264,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedIncomeTaxesCurrent', window );">Accrued income taxes</a></td>
<td class="nump">8,577,000<span></span>
</td>
<td class="nump">9,379,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiabilityCurrent', window );">Deferred revenue and customer deposits</a></td>
<td class="nump">35,743,000<span></span>
</td>
<td class="nump">21,274,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityCurrent', window );">Operating lease liabilities</a></td>
<td class="nump">7,786,000<span></span>
</td>
<td class="nump">8,110,000<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesCurrent', window );">Total current liabilities</a></td>
<td class="nump">188,589,000<span></span>
</td>
<td class="nump">132,297,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiabilityNoncurrent', window );">Non-current operating lease liabilities</a></td>
<td class="nump">17,795,000<span></span>
</td>
<td class="nump">18,120,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilitiesNet', window );">Deferred income taxes</a></td>
<td class="nump">293,769,000<span></span>
</td>
<td class="nump">314,952,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent', window );">Reserve for income taxes</a></td>
<td class="nump">14,780,000<span></span>
</td>
<td class="nump">14,257,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedIncomeTaxesNoncurrent', window );">Non-current accrued income taxes</a></td>
<td class="nump">43,160,000<span></span>
</td>
<td class="nump">48,915,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherLiabilitiesNoncurrent', window );">Other liabilities</a></td>
<td class="nump">15,476,000<span></span>
</td>
<td class="nump">9,959,000<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Liabilities', window );">Total liabilities</a></td>
<td class="nump">573,569,000<span></span>
</td>
<td class="nump">538,500,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingencies', window );">Commitments and contingencies (Note 11)</a></td>
<td class="text"> <span></span>
</td>
<td class="text"> <span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquityAbstract', window );"><strong>Shareholders&#8217; equity:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockValueOutstanding', window );">Preferred stock, $.01 par value - Authorized: 400 shares in 2021 and 2020, respectively, no shares issued and outstanding</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockValueOutstanding', window );">Common stock, $.002 par value &#8211; Authorized: 300,000 shares in 2021 and 2020, respectively, issued and outstanding: 175,481 and 175,790 shares in 2021 and 2020, respectively</a></td>
<td class="nump">351,000<span></span>
</td>
<td class="nump">352,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdditionalPaidInCapitalCommonStock', window );">Additional paid-in capital</a></td>
<td class="nump">914,802,000<span></span>
</td>
<td class="nump">807,739,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Retained earnings</a></td>
<td class="nump">562,882,000<span></span>
</td>
<td class="nump">487,912,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax', window );">Accumulated other comprehensive loss, net of tax</a></td>
<td class="num">(47,942,000)<span></span>
</td>
<td class="num">(33,801,000)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Total shareholders&#8217; equity</a></td>
<td class="nump">1,430,093,000<span></span>
</td>
<td class="nump">1,262,202,000<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesAndStockholdersEquity', window );">Total liabilities and shareholders' equity</a></td>
<td class="nump">$ 2,003,662,000<span></span>
</td>
<td class="nump">$ 1,800,702,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsPayableCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsPayableCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsReceivableNetCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4428-111522<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 45<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124259787&amp;loc=d3e4531-111522<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsReceivableNetCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedIncomeTaxesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(15)(b)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedIncomeTaxesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedIncomeTaxesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount as of the balance sheet date of the unpaid sum of the known and estimated amounts payable to satisfy all domestic and foreign income tax obligations due beyond one year or the operating cycle, whichever is longer. Alternate captions include income taxes payable, noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(15)(b)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(24))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedIncomeTaxesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669686-108580<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e681-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdditionalPaidInCapitalCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdditionalPaidInCapitalCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Assets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(11))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(12))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 9: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 14: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Assets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6801-107765<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.9)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 15: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 20: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26626-111562<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3044-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingencies">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.25)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03.(a),19)<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03.17)<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 450<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=121557415&amp;loc=d3e14326-108349<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingencies</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockValueOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value of all classes of common stock held by shareholders. May be all or portion of the number of common shares authorized. These shares exclude common shares repurchased by the entity and held as treasury shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockValueOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123360276&amp;loc=SL49130531-203044<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123360276&amp;loc=SL49130532-203044<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130549-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e31931-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e31917-109318<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilitiesNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences with jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e31931-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e31917-109318<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120320667&amp;loc=SL49117168-202975<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IntangibleAssetsNetExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Sum of the carrying amounts of all intangible assets, excluding goodwill, as of the balance sheet date, net of accumulated amortization and impairment charges.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph ((a)(1),(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6388964&amp;loc=d3e16212-109274<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IntangibleAssetsNetExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Liabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19-26)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 20: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Liabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesAndStockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 5: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(32))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesAndStockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 4: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124433192&amp;loc=SL2890621-112765<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116870748&amp;loc=SL6758485-165988<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (bb)<br> -URI http://asc.fasb.org/extlink&amp;oid=123419778&amp;loc=d3e5710-111685<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 20: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.21)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount recognized for uncertainty in income taxes classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilityForUncertainTaxPositionsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LongTermInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The total amount of investments that are intended to be held for an extended period of time (longer than one operating cycle).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.12)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LongTermInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiabilityNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseRightOfUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's right to use underlying asset under operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseRightOfUseAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAssetsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncurrent assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.17)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherAssetsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherLiabilitiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherLiabilitiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockValueOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value of all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by shareholders, which is net of related treasury stock. May be all or a portion of the number of preferred shares authorized. These shares represent the ownership interest of the preferred shareholders.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockValueOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PrepaidExpenseAndOtherAssetsCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(7))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PrepaidExpenseAndOtherAssetsCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124429447&amp;loc=SL124453093-239630<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetainedEarningsAccumulatedDeficit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cumulative amount of the reporting entity's undistributed earnings or deficit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 65<br> -Paragraph 15<br> -Subparagraph (g)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121322162&amp;loc=SL121327923-165333<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetainedEarningsAccumulatedDeficit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI http://asc.fasb.org/extlink&amp;oid=122038336&amp;loc=d3e74512-122707<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnbilledReceivablesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount received for services rendered and products shipped, but not yet billed, for non-contractual agreements due within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnbilledReceivablesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>26
<FILENAME>R7.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253586216">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>CONSOLIDATED BALANCE SHEETS (Parenthetical) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementOfFinancialPositionAbstract', window );"><strong>Statement of Financial Position [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">SEC Schedule, 12-09, Valuation Allowances and Reserves, Amount</a></td>
<td class="nump">$ 776<span></span>
</td>
<td class="nump">$ 831<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent', window );">Debt Securities, Available-for-sale, Amortized Cost</a></td>
<td class="nump">137,124<span></span>
</td>
<td class="nump">102,258<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent', window );">Debt Securities, Available-for-sale, Amortized Cost, Noncurrent</a></td>
<td class="nump">$ 587,981<span></span>
</td>
<td class="nump">$ 390,417<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockParOrStatedValuePerShare', window );">Preferred stock par value, in dollars per share</a></td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="nump">$ 0.01<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesAuthorized', window );">Preferred stock, shares authorized</a></td>
<td class="nump">400,000<span></span>
</td>
<td class="nump">400,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesIssued', window );">Preferred stock, shares issued</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesOutstanding', window );">Preferred stock, shares outstanding</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock par value, in dollars per share</a></td>
<td class="nump">$ 0.002<span></span>
</td>
<td class="nump">$ 0.002<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesAuthorized', window );">Common stock, shares authorized</a></td>
<td class="nump">300,000,000<span></span>
</td>
<td class="nump">300,000,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Common stock, shares issued</a></td>
<td class="nump">175,481,000<span></span>
</td>
<td class="nump">175,790,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesOutstanding', window );">Common stock, shares outstanding</a></td>
<td class="nump">175,481,000<span></span>
</td>
<td class="nump">175,790,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent', window );">Debt Securities, Available-for-sale, Allowance for Credit Loss, Current</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent', window );">Debt Securities, Available-for-sale, Allowance for Credit Loss, Noncurrent</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The maximum number of common shares permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares of common stock outstanding. Common stock represent the ownership interest in a corporation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amortized cost of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amortized cost of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementOfFinancialPositionAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementOfFinancialPositionAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesBalance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of valuation and qualifying accounts and reserves.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column B))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column E))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesBalance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>27
<FILENAME>R8.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254380968">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>CONSOLIDATED STATEMENTS OF CASH FLOWS - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Cash flows from operating activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 279,881<span></span>
</td>
<td class="nump">$ 176,186<span></span>
</td>
<td class="nump">$ 203,865<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract', window );"><strong>Adjustments to reconcile net income to net cash provided by operating activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockOptionPlanExpense', window );">Stock-based compensation expense</a></td>
<td class="nump">43,774<span></span>
</td>
<td class="nump">42,661<span></span>
</td>
<td class="nump">45,589<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Depreciation', window );">Depreciation of property, plant, and equipment</a></td>
<td class="nump">16,616<span></span>
</td>
<td class="nump">22,139<span></span>
</td>
<td class="nump">21,527<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GainLossOnSaleOfPropertyPlantEquipment', window );">Gain (Loss) on Disposition of Property Plant Equipment</a></td>
<td class="nump">33<span></span>
</td>
<td class="nump">1,817<span></span>
</td>
<td class="nump">324<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AmortizationOfIntangibleAssets', window );">Amortization of intangible assets</a></td>
<td class="nump">3,667<span></span>
</td>
<td class="nump">4,364<span></span>
</td>
<td class="nump">3,373<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">19,571<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ExcessAndObsoleteInventoryCharges', window );">Excess and Obsolete Inventory Charges</a></td>
<td class="nump">2,573<span></span>
</td>
<td class="nump">9,908<span></span>
</td>
<td class="nump">5,296<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseImpairmentLoss', window );">Operating Lease, Impairment Loss</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,427<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments', window );">Amortization of discounts or premiums on investments</a></td>
<td class="nump">4,887<span></span>
</td>
<td class="nump">1,274<span></span>
</td>
<td class="num">(618)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GainLossOnSaleOfInvestments', window );">Realized gain on sale of investments</a></td>
<td class="num">(236)<span></span>
</td>
<td class="num">(4,119)<span></span>
</td>
<td class="num">(1,452)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1', window );">Revaluation of contingent consideration</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(114)<span></span>
</td>
<td class="num">(1,401)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes', window );">Change in deferred income taxes</a></td>
<td class="num">(3,118)<span></span>
</td>
<td class="num">(3,353)<span></span>
</td>
<td class="num">(94,866)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsReceivable', window );">Accounts receivable</a></td>
<td class="num">(4,503)<span></span>
</td>
<td class="num">(21,285)<span></span>
</td>
<td class="nump">16,807<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInContractWithCustomerAsset', window );">Unbilled revenue</a></td>
<td class="nump">1,637<span></span>
</td>
<td class="num">(848)<span></span>
</td>
<td class="nump">3,530<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInInventories', window );">Inventories</a></td>
<td class="num">(54,920)<span></span>
</td>
<td class="num">(10,319)<span></span>
</td>
<td class="nump">17,841<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets', window );">Prepaid expenses and other current assets</a></td>
<td class="num">(32,342)<span></span>
</td>
<td class="num">(9,909)<span></span>
</td>
<td class="nump">7,405<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccountsPayable', window );">Accounts payable</a></td>
<td class="nump">27,828<span></span>
</td>
<td class="num">(1,688)<span></span>
</td>
<td class="nump">1,633<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccruedLiabilities', window );">Accrued expenses</a></td>
<td class="nump">16,861<span></span>
</td>
<td class="nump">24,542<span></span>
</td>
<td class="num">(8,938)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable', window );">Accrued income taxes</a></td>
<td class="num">(6,401)<span></span>
</td>
<td class="num">(22,973)<span></span>
</td>
<td class="nump">25,266<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInContractWithCustomerLiability', window );">Deferred revenue and customer deposits</a></td>
<td class="nump">14,417<span></span>
</td>
<td class="nump">6,571<span></span>
</td>
<td class="nump">3,875<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet', window );">Other</a></td>
<td class="nump">3,411<span></span>
</td>
<td class="nump">4,548<span></span>
</td>
<td class="nump">4,255<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivities', window );">Net cash provided by operating activities</a></td>
<td class="nump">314,065<span></span>
</td>
<td class="nump">242,400<span></span>
</td>
<td class="nump">253,311<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract', window );"><strong>Cash flows from investing activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireInvestments', window );">Purchases of investments</a></td>
<td class="num">(668,053)<span></span>
</td>
<td class="num">(922,867)<span></span>
</td>
<td class="num">(1,031,642)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments', window );">Maturities and sales of investments</a></td>
<td class="nump">430,969<span></span>
</td>
<td class="nump">1,104,605<span></span>
</td>
<td class="nump">1,062,962<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment', window );">Purchases of property, plant, and equipment</a></td>
<td class="num">(15,455)<span></span>
</td>
<td class="num">(13,303)<span></span>
</td>
<td class="num">(21,745)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired', window );">Business acquisitions</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,004<span></span>
</td>
<td class="num">(166,911)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInInvestingActivities', window );">Net cash provided by (used in) investing activities</a></td>
<td class="num">(252,539)<span></span>
</td>
<td class="nump">169,439<span></span>
</td>
<td class="num">(157,336)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract', window );"><strong>Cash flows from financing activities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions', window );">Net proceeds from issuance of common stock under stock plans</a></td>
<td class="nump">63,292<span></span>
</td>
<td class="nump">125,715<span></span>
</td>
<td class="nump">64,581<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsForRepurchaseOfCommonStock', window );">Repurchase of common stock</a></td>
<td class="num">(161,652)<span></span>
</td>
<td class="num">(51,036)<span></span>
</td>
<td class="num">(61,690)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsOfDividendsCommonStock', window );">Payment of dividends</a></td>
<td class="num">(43,263)<span></span>
</td>
<td class="num">(390,508)<span></span>
</td>
<td class="num">(35,124)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities', window );">Payment of Chiaro contingent consideration</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,039)<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivities', window );">Net cash used in financing activities</a></td>
<td class="num">(141,623)<span></span>
</td>
<td class="num">(316,868)<span></span>
</td>
<td class="num">(32,233)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents', window );">Effect of foreign exchange rate changes on cash and cash equivalents</a></td>
<td class="num">(2,815)<span></span>
</td>
<td class="nump">2,671<span></span>
</td>
<td class="num">(523)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect', window );">Net change in cash and cash equivalents</a></td>
<td class="num">(82,912)<span></span>
</td>
<td class="nump">97,642<span></span>
</td>
<td class="nump">63,219<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents', window );">Cash and cash equivalents at beginning of year</a></td>
<td class="nump">269,073<span></span>
</td>
<td class="nump">171,431<span></span>
</td>
<td class="nump">108,212<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents', window );">Cash and cash equivalents at end of year</a></td>
<td class="nump">$ 186,161<span></span>
</td>
<td class="nump">$ 269,073<span></span>
</td>
<td class="nump">$ 171,431<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ExcessAndObsoleteInventoryCharges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Excess and Obsolete Inventory Charges</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ExcessAndObsoleteInventoryCharges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The sum of the periodic adjustments of the differences between securities' face values and purchase prices that are charged against earnings. This is called accretion if the security was purchased at a discount and amortization if it was purchased at premium. As a noncash item, this element is an adjustment to net income when calculating cash provided by or used in operations using the indirect method.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AmortizationOfIntangibleAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=6388964&amp;loc=d3e16225-109274<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AmortizationOfIntangibleAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in the value of a contingent consideration liability, including, but not limited to, differences arising upon settlement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e7008-128479<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage. Excludes amount for 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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3044-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=123431023&amp;loc=SL98516268-108586<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 230<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123444420&amp;loc=d3e33268-110906<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Depreciation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Depreciation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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. Excludes amounts for 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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 230<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123444420&amp;loc=d3e33268-110906<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GainLossOnSaleOfInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The net realized gain (loss) on investments sold during the period, not including gains (losses) on securities separately or otherwise categorized as trading, available-for-sale, or held-to-maturity, which, for cash flow reporting, is a component of proceeds from investing activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GainLossOnSaleOfInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GainLossOnSaleOfPropertyPlantEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of gain (loss) on sale or disposal of property, plant and equipment assets, including oil and gas property and timber property.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GainLossOnSaleOfPropertyPlantEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of impairment loss recognized in the period resulting from the write-down of the carrying amount of an intangible asset (excluding goodwill) to fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16373-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInAccruedLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the aggregate amount of expenses incurred but not yet paid.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInAccruedLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInContractWithCustomerAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInContractWithCustomerAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInContractWithCustomerLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in obligation to transfer good or service to customer for which consideration has been received or is receivable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 912<br> -SubTopic 310<br> -Section 45<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123371682&amp;loc=d3e55415-109406<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInContractWithCustomerLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The increase (decrease) during the reporting period in the account that represents the temporary difference that results from Income or Loss that is recognized for accounting purposes but not for tax purposes and vice versa.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInDeferredIncomeTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInInventories">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInInventories</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in operating assets after deduction of operating liabilities classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in prepaid expenses, and assets classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInInvestingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInInvestingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3536-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseImpairmentLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of loss from impairment of right-of-use asset from operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 25<br> -Paragraph 6<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123399704&amp;loc=SL77918431-209957<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseImpairmentLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow, not made soon after acquisition date of business combination, to settle contingent consideration liability up to amount recognized at acquisition date, including, but not limited to, measurement period adjustment and less amount paid soon after acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsForRepurchaseOfCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow to reacquire common stock during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsForRepurchaseOfCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsOfDividendsCommonStock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow in the form of ordinary dividends to common shareholders of the parent entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsOfDividendsCommonStock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the purchase of all investments (debt, security, other) during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquirePropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash inflow from issuance of shares under share-based payment arrangement. Includes, but is not limited to, option exercised.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=SL79508275-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3255-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash inflow associated with the sale, maturity and collection of all investments such as debt, security and so forth during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3179-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockOptionPlanExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for option under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockOptionPlanExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>28
<FILENAME>R9.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255582424">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY - USD ($)<br> shares in Thousands</strong></div></th>
<th class="th"><div>Total</div></th>
<th class="th"><div>Common Stock [Member]</div></th>
<th class="th"><div>Additional Paid-in Capital [Member]</div></th>
<th class="th"><div>Retained Earnings [Member]</div></th>
<th class="th"><div>Accumulated Other Comprehensive Loss [Member]</div></th>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Beginning Balance at Dec. 31, 2018</a></td>
<td class="nump">$ 1,135,263,000<span></span>
</td>
<td class="nump">$ 342,000<span></span>
</td>
<td class="nump">$ 529,208,000<span></span>
</td>
<td class="nump">$ 646,214,000<span></span>
</td>
<td class="num">$ (40,501,000)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Beginning Balance, shares at Dec. 31, 2018</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">170,820<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Issuance of common stock under stock option plans</a></td>
<td class="nump">64,581,000<span></span>
</td>
<td class="nump">$ 6,000<span></span>
</td>
<td class="nump">64,575,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Issuance of common stock under stock option plans, shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,018<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodValue', window );">Repurchase of common stock</a></td>
<td class="num">(61,690,000)<span></span>
</td>
<td class="num">$ (3,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(61,687,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodShares', window );">Repurchase of common stock, shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,398)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">45,589,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">45,589,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DividendsCommonStockCash', window );">Payment of dividends ($0.245 per common share)</a></td>
<td class="num">(35,124,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(35,124,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">203,865,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">203,865,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gain (loss), net of tax of $(2,206), $981, and $515 in 2021, 2020, and 2019, respectively</a></td>
<td class="nump">5,219,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,219,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax', window );">Net unrealized gain (loss) on available-for-sale investments, net of tax</a></td>
<td class="nump">5,219,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax', window );">Reclassification of net realized (gain) loss on the sale of available-for-sale investments</a></td>
<td class="num">(1,452,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,452,000)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustments, net of tax</a></td>
<td class="num">(541,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(541,000)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2019</a></td>
<td class="nump">1,355,710,000<span></span>
</td>
<td class="nump">$ 345,000<span></span>
</td>
<td class="nump">639,372,000<span></span>
</td>
<td class="nump">753,268,000<span></span>
</td>
<td class="num">(37,275,000)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Balance, shares at Dec. 31, 2019</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">172,440<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Issuance of common stock under stock option plans</a></td>
<td class="nump">125,715,000<span></span>
</td>
<td class="nump">$ 9,000<span></span>
</td>
<td class="nump">125,706,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Issuance of common stock under stock option plans, shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,565<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodValue', window );">Repurchase of common stock</a></td>
<td class="num">(51,036,000)<span></span>
</td>
<td class="num">$ (2,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(51,034,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodShares', window );">Repurchase of common stock, shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,215)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">42,661,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">42,661,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DividendsCommonStockCash', window );">Payment of dividends ($0.245 per common share)</a></td>
<td class="num">(390,508,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(390,508,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">176,186,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">176,186,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gain (loss), net of tax of $(2,206), $981, and $515 in 2021, 2020, and 2019, respectively</a></td>
<td class="nump">6,478,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6,478,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax', window );">Net unrealized gain (loss) on available-for-sale investments, net of tax</a></td>
<td class="nump">6,478,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax', window );">Reclassification of net realized (gain) loss on the sale of available-for-sale investments</a></td>
<td class="num">(4,119,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(4,119,000)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustments, net of tax</a></td>
<td class="nump">1,115,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,115,000<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2020</a></td>
<td class="nump">$ 1,262,202,000<span></span>
</td>
<td class="nump">$ 352,000<span></span>
</td>
<td class="nump">807,739,000<span></span>
</td>
<td class="nump">487,912,000<span></span>
</td>
<td class="num">(33,801,000)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Balance, shares at Dec. 31, 2020</a></td>
<td class="nump">175,790<span></span>
</td>
<td class="nump">175,790<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward', window );"><strong>Increase (Decrease) in Stockholders' Equity [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised', window );">Issuance of common stock under stock option plans</a></td>
<td class="nump">$ 63,292,000<span></span>
</td>
<td class="nump">$ 3,000<span></span>
</td>
<td class="nump">63,289,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Issuance of common stock under stock option plans, shares</a></td>
<td class="nump">1,694<span></span>
</td>
<td class="nump">1,703<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodValue', window );">Repurchase of common stock</a></td>
<td class="num">$ (161,652,000)<span></span>
</td>
<td class="num">$ (4,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(161,648,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodShares', window );">Repurchase of common stock, shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(2,012)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue', window );">Stock-based compensation expense</a></td>
<td class="nump">43,774,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">43,774,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DividendsCommonStockCash', window );">Payment of dividends ($0.245 per common share)</a></td>
<td class="num">(43,263,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(43,263,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">279,881,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">279,881,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gain (loss), net of tax of $(2,206), $981, and $515 in 2021, 2020, and 2019, respectively</a></td>
<td class="num">(7,152,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(7,152,000)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax', window );">Net unrealized gain (loss) on available-for-sale investments, net of tax</a></td>
<td class="num">(7,152,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax', window );">Reclassification of net realized (gain) loss on the sale of available-for-sale investments</a></td>
<td class="num">(236,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(236,000)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax', window );">Foreign currency translation adjustments, net of tax</a></td>
<td class="num">(6,753,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(6,753,000)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquity', window );">Balance at Dec. 31, 2021</a></td>
<td class="nump">$ 1,430,093,000<span></span>
</td>
<td class="nump">$ 351,000<span></span>
</td>
<td class="nump">$ 914,802,000<span></span>
</td>
<td class="nump">$ 562,882,000<span></span>
</td>
<td class="num">$ (47,942,000)<span></span>
</td>
</tr>
<tr class="rc">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesIssued', window );">Balance, shares at Dec. 31, 2021</a></td>
<td class="nump">175,481<span></span>
</td>
<td class="nump">175,481<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase to additional paid-in capital (APIC) for recognition of cost for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=122142933&amp;loc=d3e11149-113907<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5047-113901<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 20<br> -Section 55<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=122142933&amp;loc=d3e11178-113907<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123468992&amp;loc=d3e4534-113899<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DividendsCommonStockCash">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of paid and unpaid common stock dividends declared with the form of settlement in cash.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DividendsCommonStockCash</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncreaseDecreaseInStockholdersEquityRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after tax and adjustment, of 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) and unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of reclassification adjustment from accumulated other comprehensive income for unrealized gain (loss) realized upon the sale of available-for-sale securities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e689-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27357-111563<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17A<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL34724391-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of share options (or share units) exercised during the current period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Value of stock issued as a result of the exercise of stock options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.29-31)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedDuringPeriodShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares that have been repurchased during the period and have not been retired and are not held in treasury. Some state laws may govern the circumstances under which an entity may acquire its own stock and prescribe the accounting treatment therefore. This element is used when state law does not recognize treasury stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchasedDuringPeriodShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedDuringPeriodValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Equity impact of the value of stock that has been repurchased during the period and has not been retired and is not held in treasury. Some state laws may mandate the circumstances under which an entity may acquire its own stock and prescribe the accounting treatment therefore. This element is used when state law does not recognize treasury stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchasedDuringPeriodValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquity">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 4.E)<br> -URI http://asc.fasb.org/extlink&amp;oid=122038336&amp;loc=d3e74512-122707<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(31))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 8: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquity</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>29
<FILENAME>R10.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254343688">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY (Parenthetical) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementOfStockholdersEquityAbstract', window );"><strong>Statement of Stockholders' Equity [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax', window );">Tax effect of unrealized gain on available-for-sale investments</a></td>
<td class="num">$ (2,206)<span></span>
</td>
<td class="nump">$ 981<span></span>
</td>
<td class="nump">$ 515<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax', window );">Tax benefit of foreign currency translation adjustment</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of tax expense (benefit), 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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 21<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32262-110900<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e640-108580<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=125521441&amp;loc=d3e30755-110894<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, before adjustment, of tax expense (benefit) for 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 tax expense (benefit) for unrealized gain (loss) on investment in debt security measured at amortized cost (held-to-maturity) from transfer to available-for-sale.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e640-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementOfStockholdersEquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementOfStockholdersEquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>30
<FILENAME>R11.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259236264">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Summary of Significant Accounting Policies<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SignificantAccountingPoliciesTextBlock', window );">Summary of Significant Accounting Policies</a></td>
<td class="text">Summary of Significant Accounting Policies<div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The accompanying consolidated financial statements reflect the application of the significant accounting policies described below.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Nature of Operations</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex Corporation is a leading provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required.</span></div><div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Use of Estimates in the Preparation of Financial Statements</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S.&#160;GAAP) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and the disclosure of contingent liabilities as of the balance sheet date, and the reported amounts of revenues and expenses during the year. Actual results could differ from those estimates. Significant estimates and judgments include those related to revenue recognition, investments, inventories, intangible assets, stock-based compensation, income taxes, business acquisitions, and restructuring charges.</span></div><div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Basis of Consolidation</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The consolidated financial statements include the accounts of Cognex Corporation and its subsidiaries, all of which are wholly-owned. All intercompany accounts and transactions have been eliminated.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Foreign Currency Translation</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The financial statements of the Company&#8217;s foreign subsidiaries, where the local currency is the functional currency, are translated using exchange rates in effect at the end of the year for assets and liabilities and average exchange rates during the year for results of operations. The resulting foreign currency translation adjustment, net of tax, is included in shareholders&#8217; equity as accumulated other comprehensive loss.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Fair Value Measurements</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company applies a three-level valuation hierarchy for fair value measurements. The categorization of assets and liabilities within the valuation hierarchy is based on the lowest level of input that is significant to the measurement of fair value. Level&#160;1 inputs to the valuation methodology utilize unadjusted quoted market prices in active markets for identical assets and liabilities. Level 2 inputs to the valuation methodology are other observable inputs, including quoted market prices for similar assets and liabilities, quoted prices for identical and similar assets and liabilities in markets that are not active, or other inputs that are observable or can be corroborated by observable market data. Level 3 inputs to the valuation methodology are unobservable inputs based on management&#8217;s best estimate of the inputs that market participants would use in pricing the asset or liability at the measurement date, including assumptions about risk. A change to the level of an asset or liability within the fair value hierarchy is determined at the end of a reporting period.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Cash, Cash Equivalents, and Investments</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#8217;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#8217; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#8220;Other income (expense)&#8221; on the Consolidated Statements of </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounts Receivable</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company extends credit with various payment terms to customers based on an evaluation of their financial condition. Accounts that are outstanding longer than the payment terms are considered to be past due. The Company establishes an allowance against accounts receivable for credit losses when it determines receivables are at risk for collection based on the length of time the receivable has been outstanding, the customer&#8217;s current ability to pay its obligations to the Company, and general economic and industry conditions, as well as various other factors. Receivables are written off against this allowance in the period they are determined to be uncollectible and payments subsequently received on previously written-off receivables are recorded as a recovery of the credit loss. Credit losses and recoveries related to accounts receivable are included in "Selling, general, and administrative expenses" on the Consolidated Statements of Operations.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Inventories</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventories are stated at the lower of cost and net realizable value. Cost is determined using standard costs, which approximates actual costs under the first-in, first-out (FIFO) method. Net realizable value is the estimated selling price in the ordinary course of business, less reasonably predictable costs of completion, disposal, and transportation.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Purchase price variances are incurred when actual costs are different than standard costs due to favorable or unfavorable market prices. Management applies judgment to recognize purchase price variances in the same period that the associated standard costs of the finished goods that consume these components are sold.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s inventory is subject to technological change or obsolescence. The Company reviews inventory quantities on hand and estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and general economic and industry conditions, and records reserves to reduce the carrying value of inventories to their net realizable value. If actual future demand is less than estimated, additional inventory write-downs would be required.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company generally disposes of obsolete inventory upon determination of obsolescence. The Company does not dispose of excess inventory immediately, due to the possibility that some of this inventory could be sold to customers as a result of differences between actual and forecasted demand. When inventory has been written down below cost, such reduced amount is considered the new cost basis for subsequent accounting purposes. As a result, the Company could recognize a higher than normal gross margin if the reserved inventory were subsequently sold.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Property, Plant, and Equipment</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property, plant, and equipment are stated at cost and depreciated using the straight-line method over the assets&#8217; estimated useful lives. Buildings&#8217; useful lives are 39 years, building improvements&#8217; useful lives are ten years, and the useful lives of computer hardware and software, manufacturing test equipment, and furniture and fixtures range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad">two</span> to ten years. Leasehold improvements are depreciated over the shorter of the estimated useful lives or the remaining terms of the leases. Maintenance and repairs are expensed when incurred; additions and improvements are capitalized. Upon retirement or disposition, the cost and related accumulated depreciation of the disposed assets are removed from the accounts, with any resulting gain or loss included in current operations.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Internal-use Software</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Internal-use software is software acquired, internally developed, or modified solely to meet the Company's internal needs, and during the software's development, no substantive plan exists to sell the software. The accounting treatment for computer software developed for internal use depends on the nature of activities performed at each stage of development. The preliminary project stage includes conceptual formulation of design alternatives, determination of system requirements, vendor demonstrations, and final selection of vendors, and during this stage costs are expensed as incurred. The application development stage includes software configuration, coding, hardware installation, and testing. During this stage, certain costs are capitalized, including external direct costs of materials and services, as well as payroll and payroll-related costs for employees who are directly associated with the project, while certain costs are expensed as incurred, including training and data conversion costs. The post-implementation stage includes support and maintenance, and during this stage costs are expensed as incurred.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Capitalization begins when both the preliminary project stage is completed and management commits to funding the project. Capitalization ceases at the point the project is substantially complete and ready for its intended use, that is, after all substantial testing is completed. Costs of specified upgrades and enhancements to internal-use software are capitalized if it is probable that those expenditures result in additional functionality. Capitalized costs are amortized on a straight-line basis over the estimated useful life.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Leases</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At inception of a contract, the Company determines whether that contract is or contains a lease by assessing whether there is an identified asset and whether the contract conveys the right to control the use of the identified asset for a period of time in exchange for consideration. The Company has control of the asset if it has the right to direct the use of the asset and obtains substantially all of the economic benefits from the use of the asset throughout the period of use.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a practical expedient, the Company does not recognize a lease asset or lease liability for leases with a lease term of 12 months or less. In the determination of the lease term, the Company considers the existence of extension or termination options and the probability of those options being exercised.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Lease contracts may include lease components and non-lease components, such as common area maintenance and utilities for property leases. As a practical expedient, the Company accounts for the non-lease components together with the lease components as a single lease component for all of its leases.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company classifies a lease as a finance lease when it meets any of the following criteria at the lease commencement date: (1) the lease transfers ownership of the underlying asset to the Company by the end of the lease term; (2) the lease grants the Company an option to purchase the underlying asset that the Company is reasonably certain to exercise; (3) the lease term is for the major part of the remaining economic life of the underlying asset (the Company considers a major part to be 75% or more of the remaining economic life of the underlying asset); (4) the present value of the sum of the lease payments and any residual value guaranteed by the Company equals or exceeds substantially all of the fair value of the underlying asset (the Company considers substantially all the fair value to be 90% or more of the fair value of the underlying asset amount); or (5) the underlying asset is of such a specialized nature that it is expected to have no alternative use to the lessor at the end of the lease term. When none of the criteria above are met, the Company classifies the lease as an operating lease.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On the lease commencement date, the Company records a lease asset and lease liability on the balance sheet. The lease asset consists of: (1) the amount of the initial lease liability; (2) any lease payments made to the lessor at or before the lease commencement date, minus any lease incentives received; and (3) any initial direct cost incurred by the Company. Initial direct costs are incremental costs of a lease that would not have been incurred if the lease had not been obtained and are capitalized as part of the lease asset. The lease liability equals the present value of the future cash payments discounted using the Company's incremental borrowing rate. The Company&#8217;s incremental borrowing rate is the rate of interest that the Company would have to pay to borrow an amount equal to the lease payments over a similar term, which is the three-month London Interbank Offered Rate (LIBOR) plus a 2% credit risk spread.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Operating lease expense equals the total cash payments recognized on a straight-line basis over the lease term. The amortization of the lease asset is calculated as the straight-line lease expense less the accretion of the interest on the lease liability each period. The lease liability is reduced by the cash payment less the interest each period.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Goodwill</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Goodwill is stated at cost. The Company evaluates the potential impairment of goodwill annually each fourth quarter and whenever events or circumstances indicate the carrying value of the goodwill may not be recoverable. The Company performs a qualitative assessment of goodwill to determine whether further impairment testing is necessary. Factors that management considers in this assessment include general economic and industry conditions, overall financial performance (both current and projected), changes in strategy, changes in the composition or carrying amount of net assets, and market capitalization. If this qualitative assessment indicates that it is more likely than not that the fair value of a reporting unit is less than its carrying value, the Company would proceed to perform a quantitative impairment test. Under this quantitative analysis, the fair value of the reporting unit is compared with its carrying value, including goodwill. If the carrying value exceeds the fair value of the reporting unit, the Company recognizes an impairment charge. The Company estimates the fair value of its reporting unit using the income approach based on a discounted cash flow model. In addition, the Company uses the market approach, which compares the reporting unit to publicly-traded companies and transactions involving </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">similar businesses, to support the conclusions based on the income approach. </span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Intangible Assets</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets are stated at cost and amortized over the assets&#8217; estimated useful lives. Intangible assets are either amortized in relation to the relative cash flows anticipated from the intangible asset or using the straight-line method, depending on facts and circumstances. The useful lives of distribution networks range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e">eleven</span> to twelve years, completed technologies from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c">five</span> to eight years, customer relationships from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467">five</span> to eight years, non-compete agreements from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3">three</span> to seven years, and trademarks two years. In-process technology is an indefinite-lived intangible asset until the technology is completed, at which point it is amortized over its estimated useful life. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company evaluates the potential impairment of intangible assets whenever events or circumstances indicate the carrying value of the assets may not be recoverable. For finite-lived intangible assets that are subject to amortization, the Company follows a two-step process for impairment testing. In step one, known as the recoverability test, the carrying value of the asset is compared to the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset. If the sum of the undiscounted future cash flows is less than the carrying value, the asset is not recoverable and step two is performed. In step two, the impairment charge is measured as the amount by which the carrying value of the asset exceeds its fair value. For indefinite-lived intangible assets that are not subject to amortization, the fair value of the asset is measured and an impairment charge is recorded as the amount by which the carrying value of the asset exceeds its fair value.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Warranty Obligations</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company warrants its products to be free from defects in material and workmanship for periods primarily ranging from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79">one</span> to three years from the time of sale based on the product being purchased and the terms of the customer arrangement. Warranty obligations are evaluated and recorded at the time of sale since it is probable that customers will make claims under warranties related to products that have been sold and the amount of these claims can be reasonably estimated based on historical costs to fulfill claims. Obligations may also be recorded subsequent to the time of sale whenever specific events or circumstances impacting product quality become known that would not have been taken into account using historical data.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Contingencies</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Loss contingencies are accrued if the loss is probable and the amount of the loss can be reasonably estimated. Legal costs associated with potential loss contingencies are expensed as incurred.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Derivative Instruments</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Derivative instruments are recorded on the Consolidated Balance Sheets at fair value. Changes in the fair value of the Company&#8217;s economic hedges utilizing foreign currency forward contracts are included in "Foreign currency gain (loss)" on the Consolidated Statements of Operations. The Company recognizes all derivative instruments as either current assets or current liabilities at fair value on the Consolidated Balance Sheets. When the Company is engaged in more than one outstanding derivative contract with the same counterparty and also has a legally enforceable master netting agreement with that counterparty, the &#8220;net&#8221; mark-to-market exposure represents the netting of the positive and negative exposures with that counterparty. The cash flows from derivative instruments are presented in the same category on the Consolidated Statements of Cash Flows as the category for the cash flows from the hedged item. Generally, this accounting policy election results in cash flows related to derivative instruments being classified as an operating activity on the Consolidated Statements of Cash Flows. </span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Revenue Recognition</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes revenue in accordance with Accounting Standards Codification (ASC) 606, &#8220;Revenue from Contracts with Customers.&#8221; The core principle of ASC 606 is to recognize revenue in a manner that depicts the transfer of promised goods or services to customers in an amount that reflects the consideration to which the Company expects to be entitled in exchange for those goods or services. The framework in support of this core principle includes: (1) identifying the contract with the customer; (2) identifying the performance obligations in the contract; (3) determining the transaction price; (4) allocating the transaction price to the performance obligations; and (5) recognizing revenue when (or as) the performance obligations are satisfied. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Identifying the Contract with the Customer</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company identifies contracts with customers as agreements that create enforceable rights and obligations, which typically take the form of customer contracts or purchase orders. The Company accounts for a contract when it has approval and commitment from both parties, the rights of the parties are identified, payment terms are identified, the contract has commercial substance, and collectability of consideration is probable.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Identifying the Performance Obligations in the Contract</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company identifies performance obligations as promises in contracts to transfer distinct goods or services. Standard products and services that the Company regularly sells separately, which customers can benefit from either on their own or with other readily available resources and are distinct within the context of the customer contract, are accounted for as distinct performance obligations. Application-specific customer solutions that are comprised of a combination of products and services are accounted for as one performance obligation to deliver a total solution to the customer. On-site support services that are provided to the customer after the solution is deployed are accounted for as a separate performance obligation. These solutions are provided to customers in a variety of industries, including the consumer electronics and logistics industries. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Shipping and handling activities for which the Company is responsible under the terms and conditions of the sale are not accounted for as performance obligations but as fulfillment costs. These activities are required to fulfill the Company&#8217;s promise to transfer the goods and are expensed when revenue is recognized.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company does not assess whether promised goods or services are performance obligations if they are immaterial in the context of the contract. If revenue is recognized before immaterial promises have been completed, then the costs related to such immaterial promises are accrued at the time of sale.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Determining the Transaction Price</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company determines the transaction price as the amount of consideration it expects to receive in exchange for transferring promised goods or services to the customer. Amounts collected from customers for sales taxes are excluded from the transaction price. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">If a contract includes a variable amount, such as a rebate, then the Company estimates the transaction price using either the expected value or the most likely amount of consideration to be received, depending on the specific facts and circumstances. The Company includes estimated variable consideration in the transaction price only to the extent it is probable that a significant reversal of revenue will not occur when the uncertainty is resolved. The Company updates its estimate of variable consideration at the end of each reporting period to reflect changes in facts and circumstances.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company does not grant customers the explicit right to return product. However, from time to time, the Company may allow a customer to return a product. As a practical expedient, the Company estimates the transaction price using the expected value based on its history of return experience using a portfolio approach in which the Company&#8217;s total revenue is reduced by an estimate of total customer returns. Management reasonably expects that the effect of applying a portfolio approach to a group of contracts would not differ materially from considering each contract separately.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Allocating the Transaction Price to the Performance Obligations</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company allocates the transaction price to each performance obligation at contract inception based on a relative stand-alone selling price basis, or the price at which the Company would sell the good or service separately to similar customers in similar circumstances.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Recognizing Revenue When (or As) the Performance Obligations are Satisfied</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes revenue when it transfers the promised goods or services to the customer. Revenue for standard products is recognized at the point in time when the customer obtains control of the goods, which is typically upon delivery when the customer has legal title, physical possession, the risks and rewards of ownership, and an enforceable obligation to pay for the products. Revenue for services, which are not material, is typically recognized over the time the service is provided. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue for application-specific customer solutions is recognized at the point in time when the solution is validated, which is the point in time when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligations in the arrangement. Although the customer may have taken legal title and physical possession of the goods when they arrived at the customer&#8217;s </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">designated site, the significant risks and rewards of ownership transfer to the customer only upon validation. Revenue for on-site support services related to these solutions is recognized over the time the service is provided. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In certain instances, an arrangement may include customer-specified acceptance provisions or performance guarantees that allow the customer to accept or reject delivered products that do not meet the customer&#8217;s specifications. If the Company can objectively determine that control of a good or service has been transferred to the customer in accordance with the agreed-upon specifications in the contract, then customer acceptance is a formality. If acceptance provisions are presumed to be substantive, then revenue is deferred until customer acceptance. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For the Company&#8217;s standard products and services, revenue recognition and billing typically occur at the same time. For application-specific customer solutions, however, the agreement with the customer may provide for billing terms which differ from revenue recognition criteria, resulting in either deferred revenue or unbilled revenue. Credit assessments are performed to determine payment terms, which vary by region, industry, and customer. Prepayment terms result in contract liabilities for customer deposits. When credit is granted to customers, payment is typically due 30 to 90 days from billing. The Company's contracts have an original expected duration of less than one year, and therefore as a practical expedient, the Company has elected to ignore the impact of the time value of money on a contract and to expense sales commissions. The Company recognizes an asset for costs to fulfill a contract if the costs relate directly to the contract and to future performance, and the costs are expected to be recovered. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management exercises judgment when determining the amount of revenue to be recognized each period. Such judgments include, but are not limited to, assessing the customer&#8217;s ability and intention to pay substantially all of the contract consideration when due, determining when two or more contracts should be combined and accounted for as a single contract, determining whether a contract modification has occurred, assessing whether promises are immaterial in the context of the contract, determining whether material promises in a contract represent distinct performance obligations, estimating the transaction price for a contract that contains variable consideration, determining the stand-alone selling price of each performance obligation, determining whether control is transferred over time or at a point in time for performance obligations, and assessing whether formal customer acceptance provisions are substantive.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Research and Development</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Research and development costs primarily include personnel-related costs, prototyping materials, and outside services. Research and development costs are expensed when incurred until technological feasibility has been established for the product. Thereafter, all software costs may be capitalized until the product is available for general release to customers. The Company determines technological feasibility at the time the product reaches beta in its stage of development. Historically, the time incurred between beta and general release to customers has been short, and therefore, the costs have been insignificant. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Advertising Costs</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Advertising costs are expensed as incurred and totaled $1,965,000 in 2021, $1,443,000 in 2020, and $1,385,000 in 2019.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock-Based Compensation</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). The Company has reserved a specific number of shares of its authorized but unissued shares for issuance upon the exercise of stock options or the settlement of RSUs. When a stock option is exercised or an RSU is settled, the Company issues new shares from this pool. The fair values of stock options are estimated on the grant date using a binomial lattice model. Management is responsible for determining the appropriate valuation model and estimating these fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor and the observable market price of the Company's common stock on the grant date. The fair value of RSUs is determined based on the observable market price of the Company's common stock on the grant date less the present value of expected future dividends. When determining the grant-date fair value of stock-based awards, management further considers whether an adjustment is required to the observable market price or volatility of the Company's common stock that is used in the valuation as a result of material non-public information, if that information is expected to result in a material increase in share price.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes compensation expense related to stock-based awards using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting </span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">portion of the stock option or RSU as if the award was, in substance, multiple awards. The amount of compensation expense recognized at the end of the vesting period is based on the number of awards for which the requisite service has been completed. No compensation expense is recognized for awards that are forfeited for which the employee does not render the requisite service. The term &#8220;forfeitures&#8221; is distinct from &#8220;expirations&#8221; and represents only the unvested portion of the surrendered award. The Company applies estimated forfeiture rates to its unvested awards to arrive at the amount of compensation expense that is expected to be recognized over the requisite service period. At the end of each separately vesting portion of an award, the expense that was recognized by applying the estimated forfeiture rate is compared to the expense that should be recognized based on the employee&#8217;s service, and an increase or decrease to compensation expense is recorded to true up the final expense.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Taxes</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes a tax position in its financial statements when that tax position, based solely upon its technical merits, is more likely than not to be sustained upon examination by the relevant taxing authority. Those tax positions failing to qualify for initial recognition are recognized in the first interim period in which they meet the more likely than not standard, or are resolved through negotiation or litigation with the taxing authority, or upon expiration of the statutes of limitations. Derecognition of a tax position that was previously recognized occurs when an entity subsequently determines that a tax position no longer meets the more likely than not threshold of being sustained.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Only the portion of the liability that is expected to be paid within one year is classified as a current liability. As a result, liabilities expected to be resolved without the payment of cash (e.g., resolution due to the expiration of the statutes of limitations) or are not expected to be paid within one year are not classified as current. It is the Company&#8217;s policy to record estimated interest and penalties as income tax expense and tax credits as a reduction in income tax expense.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred tax assets and liabilities are determined based on the differences between the financial statement and tax bases of assets and liabilities as measured by the enacted tax rates that will be in effect when these differences reverse. Valuation allowances are provided if, based on the weight of available evidence, it is more likely than not that some or all of the deferred tax assets will not be realized.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Tax Cuts and Jobs Act of 2017 imposed a minimum tax on foreign earnings related to intangible assets, known as the Global Intangible Low-Taxed Income (GILTI) tax. In 2019, the Company elected to account for the impact of the GILTI minimum tax in deferred taxes, a change from the Company&#8217;s initial election made in 2018 whereby the GILTI minimum tax was included in income tax expense as incurred on an annual basis. The change is considered preferable, as it appropriately matches the Company&#8217;s current and deferred income tax implications.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sales tax in the United States and similar taxes in other jurisdictions that are collected from customers and remitted to government authorities are presented on a gross basis (i.e., a receivable from the customer with a corresponding payable to the government). Amounts collected from customers and retained by the Company during tax holidays are recognized as non-operating income when earned.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Net Income Per Share</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Basic net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period. Diluted net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period plus potential dilutive common shares. Dilutive common equivalent shares consist of stock options and restricted stock units and are calculated using the treasury stock method. Common equivalent shares do not qualify as participating securities. In periods where the Company records a net loss, potential common stock equivalents are not included in the calculation of diluted net loss per share as their effect would be anti-dilutive.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Comprehensive Income</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Comprehensive income is defined as the change in equity of a company during a period from transactions and other events and circumstances, excluding transactions resulting from investments by owners and distributions to owners. Accumulated other comprehensive loss, net of tax, consists of foreign currency translation adjustment losses of $43,665,000 and $36,912,000, as of December 31, 2021 and December 31, 2020, respectively; net unrealized losses on available-for-sale investments of $3,006,000 as of December 31, 2021, and net unrealized gains on available-for-sale investments of $4,382,000 as of December 31, 2020; and losses on currency swaps, net of gains on long-term intercompany loans of $1,271,000 at each year end.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Amounts reclassified from accumulated other comprehensive loss, net of tax, to investment income on the Consolidated Statements of Operations were net realized gains of $236,000, $4,119,000, and $1,452,000 for 2021, 2020, and 2019, respectively.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Concentrations of Risk</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Financial instruments that potentially subject the Company to concentrations of credit risk consist primarily of cash, cash equivalents, investments, and accounts receivable. The Company has certain domestic and foreign cash balances that exceed the insured limits set by the Federal Deposit Insurance Corporation (FDIC) in the United States and equivalent regulatory agencies in foreign countries. The Company primarily invests in investment-grade debt securities and has established guidelines relative to credit ratings, diversification, and maturities of its debt securities that maintain safety and liquidity. The Company has historically not experienced any significant realized losses on its debt securities.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A single customer accounted for 17% of total revenue in 2021 and 15% of total accounts receivable as of December 31, 2021. Accounts receivable from a second customer accounted for 11% of total accounts receivable as of December 31, 2021. The Company performs ongoing credit evaluations of its customers and maintains allowances for potential credit losses. The Company has historically not experienced any significant losses related to the collection of its accounts receivable.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A significant portion of the Company's products is presently manufactured by a third-party contractor located in Indonesia. This contract manufacturer has agreed to provide the Company with termination notification periods and last-time-buy rights, if and when that may be applicable. Our contract manufacturer's challenges in obtaining components and maintaining production have resulted in delays, and may continue to result in delays, in meeting our delivery schedules that, as a result, delay deliveries to our customers past their requested delivery date. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain key electronic and mechanical components, such as integrated circuit chips, are fundamental to the design of Cognex products. Due to the impact of the COVID-19 pandemic or other factors, we have experienced, and may continue to experience, disruptions to the supply of components for our products that have resulted, and may continue to result, in higher purchase costs, delivery costs, and manufacturing delays.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company sources components from preferred vendors that are selected based on price and performance considerations. In the event of a supply disruption from a preferred vendor, these components may typically be purchased from alternative vendors, which may result in higher purchase costs and manufacturing delays based on the time required to identify and obtain sufficient quantities from an alternative source.</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain of the Company&#8217;s products utilize components that are available from only one source. If we are unable to secure adequate supply from these sources, we may have to redesign our products, which may lead to higher costs, delays in manufacturing, and possible loss of sales.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Business Acquisitions</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company determines whether a transaction qualifies as a business combination by applying the definition of a business, which requires the assets acquired and liabilities assumed to be inputs and processes that have the ability to contribute to the creation of outputs. The Company accounts for business combinations under the acquisition method of accounting, which requires the following steps: (1) identifying the acquirer, (2) determining the acquisition date, (3) recognizing and measuring the identifiable assets acquired and the liabilities assumed, and (4) recognizing and measuring goodwill. The Company measures the identifiable assets acquired and liabilities assumed at their estimated fair values as of the acquisition date. Management is responsible for determining the appropriate valuation model and estimated fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor. Management primarily establishes fair value using the income approach based on a discounted cash flow model. The income approach requires the use of many assumptions and estimates including future revenues and expenses, as well as discount factors. Contingent consideration liabilities are reported at their estimated fair values based on probability-adjusted present values of the consideration expected to be paid, using significant inputs and estimates. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain milestones and discount rates consistent with the level of risk of achievement. The fair values of these contingent consideration liabilities are remeasured each reporting period with changes in fair value included in "Other income (expense)" on the Consolidated Statements of Operations. Goodwill is recognized as of the acquisition date as the excess of the consideration transferred over the net amount of assets acquired and liabilities assumed. Transaction costs are expensed as incurred. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Restructuring Charges</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">One-time employee termination benefits as part of a restructuring activity exist at the date the plan of termination has been communicated to employees (the &#8220;communication date&#8221;) and meets all of the following criteria: (1) management, having the authority to approve the action, has committed to the plan of termination, (2) the plan identifies the number of employees to be terminated, their job classifications or functions and their locations, and the expected completion date, (3) the plan establishes the terms of the benefit arrangement in sufficient detail, and (4) actions required to complete the plan indicate it is unlikely that significant changes to the plan will be made. If employees are not required to render service until they are terminated in order to receive the termination benefits or will not be retained to render service beyond a minimum retention period, a liability for the termination benefits is recognized and measured at fair value at the communication date. Otherwise, a liability is measured initially at the communication date based on the fair value of the liability as of the termination date and recognized ratably over the future service period. Changes to the fair value of the liability are recorded as restructuring adjustments. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Closures of leased offices as part of a restructuring activity prior to the end of the contractual lease term are treated as abandoned right-to-use assets when the Company ceases to use the property for economic benefit and lacks either the intent or ability to sublease. The lease asset is written down to zero as of the abandonment date. Estimates of contract termination costs assume the Company will be obligated to pay the remaining rent over the contract period, and the lease liability continues to be recorded on the balance sheet. Subsequent negotiations that result in early contract terminations are recorded as favorable restructuring adjustments.</span></div>Other associated costs as part of a restructuring activity include costs to consolidate facilities, costs to relocate employees, and legal fees incurred to research local statutory requirements and prepare termination agreements. These costs are recognized in the period in which the liability is incurred, which generally corresponds to the period in which the services are rendered.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SignificantAccountingPoliciesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for all significant accounting policies of the reporting entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123372394&amp;loc=d3e18726-107790<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -URI http://asc.fasb.org/topic&amp;trid=2122369<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SignificantAccountingPoliciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>31
<FILENAME>R12.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259286040">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>New Pronouncements<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountingChangesAndErrorCorrectionsAbstract', window );"><strong>Accounting Changes and Error Corrections [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock', window );">New Pronouncements</a></td>
<td class="text">New Pronouncements<div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2019-12, "Simplifying the Accounting for Income Taxes"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU eliminate certain exceptions related to the approach for intraperiod tax allocation, the methodology for calculating income taxes in an interim period, and the recognition of deferred tax liabilities for outside basis differences. They also clarify and simplify other aspects of the accounting for income taxes. The Company adopted ASU 2019-12 on January 1, 2021. Upon adoption, ASU 2019-12 did not have a material impact on the Company's consolidated financial statements and disclosures.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2020-08, "Codification Improvements to Subtopic 310-20, Receivables - Nonrefundable Fees and Other Costs"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU clarify that for each reporting period, for callable debt with multiple call dates and call prices that may change at each call date, to the extent that the amortized cost basis of an individual callable debt security exceeds the amount repayable by the issuer at the next call date, the excess is amortized to the next call date. The Company adopted ASU 2020-08 on January 1, 2021. Upon adoption, ASU 2020-08 did not have a material impact on the Company's consolidated financial statements and disclosures.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2020-04, "Reference Rate Reform (Topic 848): Facilitation of the Effects of Reference Rate Reform on Financial Reporting" and (ASU) 2021-01, "Reference Rate Reform (Topic 848): Scope"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in these ASUs apply to all entities that have contracts, hedging relationships, and other transactions that reference LIBOR or another reference rate expected to be discontinued because of reference rate reform. Together, the ASUs provide optional expedients and exceptions for applying generally accepted accounting principles (GAAP) to contracts, hedging relationships, and other transactions affected by reference rate reform if certain criteria are met. The expedients and exceptions provided by the amendments do not apply to contract modifications made and hedging relationships entered into or evaluated after December 31, 2022, except for hedging relationships existing as of December 31, 2022 that an entity has elected certain optional expedients for and that are retained through the end of the hedging relationship. The amendments in these ASUs are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 or ASU 2021-01 to have a material impact on the Company's consolidated financial statements and disclosures.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2021-08, "Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU primarily address the accounting for contract assets and contract liabilities related to revenue contracts with customers in a business combination. The ASU clarifies that an acquirer should account for the related revenue contracts in accordance with Accounting Standards Codification 606 as if the acquirer had originated the contracts. The amendments in this ASU are effective for fiscal years beginning after December 15, 2022, including interim periods within those fiscal years, although early adoption is permitted. The amendments in the ASU should be applied prospectively to business combinations occurring on or after the effective date of the amendments. The expected financial statement impact of this new accounting standard cannot be reasonably estimated at this time, as the impact in future periods will depend on the contract assets and contract liabilities acquired in future business combinations. Management does not expect this ASU to have a material impact on the Company's disclosures.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingChangesAndErrorCorrectionsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingChangesAndErrorCorrectionsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for change in accounting principle. Includes, but is not limited to, nature, reason, and method of adopting amendment to accounting standards or other change in accounting principle.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (g)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123338486&amp;loc=SL49131195-203048<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -URI http://asc.fasb.org/topic&amp;trid=2122394<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 105<br> -SubTopic 10<br> -Section 65<br> -Paragraph 6<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=124434974&amp;loc=SL124442142-165695<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=123338486&amp;loc=SL49131195-203048<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 65<br> -Paragraph 8<br> -Subparagraph (e)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123459177&amp;loc=SL121830611-158277<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section S99<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=122038215&amp;loc=SL108384541-122693<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 20<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=124402435&amp;loc=SL124402458-218513<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 65<br> -Paragraph 6<br> -Subparagraph (e)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123597120&amp;loc=SL121967933-165497<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (i)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123338486&amp;loc=SL49131195-203048<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 65<br> -Paragraph 6<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123597120&amp;loc=SL121967933-165497<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 65<br> -Paragraph 8<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123459177&amp;loc=SL121830611-158277<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 65<br> -Paragraph 15<br> -Subparagraph (g)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=121322162&amp;loc=SL121327923-165333<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 20<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (d)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124402435&amp;loc=SL124402458-218513<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (j)<br> -URI http://asc.fasb.org/extlink&amp;oid=123338486&amp;loc=SL49131195-203048<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(iv)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (f)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120154821&amp;loc=SL120154904-197079<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section S99<br> -Paragraph 5<br> -Subparagraph (SAB Topic 11.M.Q2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122038215&amp;loc=d3e31137-122693<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120154821&amp;loc=SL120154904-197079<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 25: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (f)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120154821&amp;loc=SL120154904-197079<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 65<br> -Paragraph 6<br> -Subparagraph (e)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=123597120&amp;loc=SL121967933-165497<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 10<br> -Section 65<br> -Paragraph 4<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=122640432&amp;loc=SL121648383-210437<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 10<br> -Section 65<br> -Paragraph 4<br> -Subparagraph (e)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122640432&amp;loc=SL121648383-210437<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 848<br> -SubTopic 10<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=122150657&amp;loc=SL122150809-237846<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 65<br> -Paragraph 8<br> -Subparagraph (e)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=123459177&amp;loc=SL121830611-158277<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Topic 848<br> -SubTopic 10<br> -Name Accounting Standards Codification<br> -Section 65<br> -Paragraph 2<br> -Publisher FASB<br> -Subparagraph (c)<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>32
<FILENAME>R13.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259626984">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Fair Value Measurements<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresAbstract', window );"><strong>Fair Value Disclosures [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresTextBlock', window );">Fair Value Measurements</a></td>
<td class="text">Fair Value Measurements<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Financial Assets and Liabilities that are Measured at Fair Value on a Recurring Basis</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:93.421%"><tr><td style="width:1.0%"/><td style="width:50.386%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.549%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.582%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.549%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.582%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.552%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Quoted&#160;Prices&#160;in<br/>Active Markets<br/>for Identical<br/>Assets (Level&#160;1)</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Significant&#160;Other<br/>Observable<br/>Inputs (Level&#160;2)</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unobservable Inputs                       (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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Money market instruments</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">537&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">554,306&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">81,595&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58,665&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,879&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,639&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</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:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">39&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Liabilities:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">230&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s money market instruments are reported at fair value based on the daily market price for identical assets in active markets, and are therefore classified as Level 1. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s debt securities and forward contracts are reported at fair value based on model-driven valuations in which all significant inputs are observable or can be derived from or corroborated by observable market data for substantially the full term of the asset or liability, and are therefore classified as Level 2. Management is responsible for estimating the fair value of these financial assets and liabilities, and in doing so, considers valuations provided by a large, third-party pricing service. For debt securities, this service maintains regular contact with market makers, brokers, dealers, and analysts to gather information on market movement, direction, trends, and other specific data. They use this information to structure yield curves for various types of debt securities and arrive at the daily valuations. The Company's forward contracts are typically traded or executed in over-the-counter markets with a high degree of pricing transparency. The market participants are generally large commercial banks.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's contingent consideration liabilities are reported at fair value based on probability-adjusted present values of the consideration expected to be paid using significant inputs that are not observable in the market, and are therefore classified as Level 3. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain revenue milestones. The fair values of these contingent consideration liabilities were calculated using discount rates consistent with the level of risk of achievement, and are remeasured each reporting period.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the activity for the Company's liabilities measured at fair value using Level 3 inputs (in thousands):</span></div><div style="margin-top:11pt;text-align:justify"><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 style="width:85.303%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.497%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,153&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fair value adjustment to Chiaro contingent consideration</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(114)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Payment of Chiaro contingent consideration</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,039)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of the contingent consideration liability related to the Company's acquisition of GVi Ventures, Inc. in 2017 was written down to zero in 2019 resulting from a lower level of revenue in the Americas' automotive industry, and the balance remains at zero as of December 31, 2021. The undiscounted potential outcomes related to future contingent consideration range from $0 to $2,500,000 based on certain revenue levels through April of 2022. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Non-financial Assets that are Measured at Fair Value on a Non-recurring Basis</span></div>Non-financial assets, such as property, plant and equipment, operating lease assets, goodwill, and intangible assets, are required to be measured at fair value only when an impairment loss is recognized. The Company evaluates these long-lived assets for impairment whenever events or changes in circumstances, referred to as "triggering events," indicate the carrying value may not be recoverable. The adverse impact of the COVID-19 pandemic on our business in 2020 triggered a review of long-lived assets for potential impairment as of May 26, 2020, which resulted in operating lease asset impairment charges of $3,427,000 (refer to Notes 7 and 22) that were included in "Restructuring charges" on the Consolidated Statements of Operations, and intangible asset impairment charges of $19,571,000 (refer to Note 9) in the second quarter of 2020. These fair value measurements were based on the present values of future cash flows using significant inputs that are not observable in the market, and were therefore classified as Level 3. The Company did not record impairment charges related to non-financial assets in 2021 or 2019.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueDisclosuresTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueDisclosuresTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>33
<FILENAME>R14.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259631576">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cash, Cash Equivalents, and Investments<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAbstract', window );"><strong>Cash and Cash Equivalents [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock', window );">Cash, Cash Equivalents, and Investments</a></td>
<td class="text">Cash, Cash Equivalents, and Investments<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash, cash equivalents, and investments consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:65.175%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.322%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.470%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">185,624</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">266,609&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Money market instruments</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">537</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,464&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash and cash equivalents</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">186,161</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">269,073&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">73,088</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">32,714&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">37,655</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">25,160&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">18,912</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">35,403&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">4,998</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,303&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2,802</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,660&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current investments</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">137,455</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">103,240&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">481,218</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">203,428&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">43,940</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">67,058&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39,753</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">96,458&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">16,077</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">19,006&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2,119</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,440&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">641</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,735&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current investments</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">583,748</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">395,125&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">907,364</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">767,438&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s cash balance included foreign bank balances totaling $142,009,000 and $225,853,000 as of December&#160;31, 2021 and 2020, respectively.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Corporate bonds consist of debt securities issued by both domestic and foreign companies; asset-backed securities consist of debt securities collateralized by pools of receivables or loans with credit enhancement; treasury bills consist of debt securities issued by the U.S. government; municipal bonds consist of debt securities issued by state and local government entities; agency bonds consist of domestic or foreign obligations of government agencies and government-sponsored enterprises that have government backing; and sovereign bonds consist of direct debt issued by foreign governments. All of the Company's securities as of December 31, 2021 and 2020 were denominated in U.S. Dollars.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accrued interest receivable is included in "Prepaid expenses and other current assets" on the Consolidated Balance Sheets and amounted to $3,037,000 and $1,560,000 as of December 31, 2021 and 2020, respectively.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the Company&#8217;s available-for-sale investments as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:36.583%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.002%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.709%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.002%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.005%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Amortized<br/>Cost</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Unrealized<br/>Gains</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Unrealized<br/>Losses</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">72,863&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">251&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(26)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,088&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,568&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">112&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(25)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,655&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,864&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">51&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(3)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,912&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,029&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(32)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,998&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,800&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,802&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">485,140&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">555&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4,477)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">481,218&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">44,197&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">45&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(302)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">43,940&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">39,740&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">46&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(33)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">39,753&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,128&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(51)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,077&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,141&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(22)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">635&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">641&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">725,105</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,069</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(4,971)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">721,203</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr></table></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the Company&#8217;s gross unrealized losses and fair values for available-for-sale investments in an unrealized loss position as of December&#160;31, 2021 (in thousands):</span></div><div><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:34.289%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.032%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.032%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.032%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.885%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.032%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.328%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Loss<br/>Position For Less than<br/>12 Months</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Loss<br/>Position For Greater than<br/>12 Months</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">431,652&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4,470)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,110&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(33)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">434,762&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4,503)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,980&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(317)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">806&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(10)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">51,786&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(327)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">25,040&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(36)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">25,040&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(36)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency Bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,077&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(51)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,077&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(51)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,892&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(32)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,892&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(32)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(22)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(22)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">525,868</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(4,896)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,808</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(75)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">533,676</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(4,971)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">Management monitors debt securities that are in an unrealized loss position to determine whether a loss exists related to the credit quality of the issuer. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows. Based on this evaluation, no allowance for credit losses on debt securities was recorded as of December 31, 2021.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes changes in the allowance for credit losses (in thousands):</span></div><div style="margin-top:9pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"><tr><td style="width:1.0%"/><td style="width:79.341%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:18.459%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">160&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Decreases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(160)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">The Company recorded gross realized gains on the sale of debt securities totaling $246,000 in 2021, $4,283,000 in 2020, and $1,581,000 in 2019, and gross realized losses on the sale of debt securities totaling $10,000 in 2021, $164,000 in 2020, and $129,000 in 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the effective maturity dates of the Company&#8217;s available-for-sale investments as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:34.876%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.206%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.913%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.297%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:7.857%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:7.857%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td style="width:1.0%"/><td style="width:9.624%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&lt;1&#160;Year</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">1-2&#160;Years</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2-3&#160;Years</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">3-4&#160;Years</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">4-5&#160;Years</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,088&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">205,331&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">175,992&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">64,356&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">35,539&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">554,306&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,655&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">23,370&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,668&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,092&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,810&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">81,595&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,912&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">39,753&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58,665&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,802&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,077&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,879&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,998&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">641&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,639&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,052&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,067&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">137,455</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">285,172</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">181,712</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">73,515</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">43,349</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">721,203</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for cash, cash equivalents, investments in debt and equity instruments (including cost and equity investees and related income statement amounts), equity and cost method investments, investments in joint ventures and any other investment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>34
<FILENAME>R15.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259139016">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Inventories<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryDisclosureAbstract', window );"><strong>Inventory Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryDisclosureTextBlock', window );">Inventories</a></td>
<td class="text">Inventories<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventories consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:70.935%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.516%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.517%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></div></td><td colspan="9" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Raw materials</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">50,452</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">26,800&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Work-in-process</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,293</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,780&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Finished goods</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">57,357</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">29,250&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">113,102</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">60,830&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div>The Company recorded provisions for excess and obsolete inventories of $2,573,000 and $9,908,000 in 2021 and 2020, respectively, which reduced the carrying value of the inventories to their net realizable value. The higher provisions in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -URI http://asc.fasb.org/topic&amp;trid=2126998<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>35
<FILENAME>R16.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259134568">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Property, Plant, and Equipment<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentAbstract', window );"><strong>Property, Plant and Equipment [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock', window );">Property, Plant, and Equipment</a></td>
<td class="text">Property, Plant, and Equipment<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property, plant, and equipment consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:70.935%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.516%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.517%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Land</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">3,951</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,951&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Buildings</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">24,533</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">24,533&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Building improvements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">47,886</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">45,978&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Leasehold improvements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">10,436</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">12,682&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Computer hardware and software</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">50,748</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58,162&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Manufacturing test equipment</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">30,562</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">29,816&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Furniture and fixtures</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">6,449</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,372&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">174,565</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">181,494&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Less: accumulated depreciation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(97,019)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(102,321)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">77,546</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">79,173&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div>The Company disposed of property, plant, and equipment with a cost basis of $20,647,000 and accumulated depreciation of $20,614,000 in 2021, resulting in a loss of $33,000. The Company disposed of property, plant, and equipment with a cost basis of $26,829,000 and accumulated depreciation of $24,977,000 in 2020, resulting in a loss of $1,852,000. Disposals in 2020 included leasehold improvements and other assets associated with office closures as a part of the Company's 2020 restructuring plan (refer to Note 22).<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=d3e99893-112916<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -URI http://asc.fasb.org/topic&amp;trid=2155823<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=SL120174063-112916<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=d3e99779-112916<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>36
<FILENAME>R17.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259100008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Leases Leases<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LeasesAbstract', window );"><strong>Leases [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock', window );">Leases</a></td>
<td class="text">Leases<div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's leases are primarily leased properties across different worldwide locations where the Company conducts its operations. All of these leases are classified as operating leases. Certain leases may contain options to extend or terminate the lease at the Company's sole discretion. </span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, there were no options to terminate that were accounted for in the determination of the lease term for outstanding leases, and one option to extend that was accounted for in the determination of the lease term for one of the Company's outstanding leases. As of December 31, 2020, there was one option to terminate that was accounted for in the determination of the lease term for one of the Company's outstanding leases, and no options to extend that were accounted for in the determination of the lease term for outstanding leases. Certain leases contain leasehold improvement incentives, retirement obligations, escalating clauses, rent holidays, and variable payments tied to a consumer price index. There were no restrictions or covenants for the outstanding leases as of December 31, 2021 or 2020.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The total operating lease expense was $8,180,000 in both 2021 and 2020, and $6,893,000 in 2019. The total operating lease cash payments were $8,225,000, $8,009,000, and $6,530,000 in 2021, 2020, and 2019, respectively. The total lease expense for leases with a term of twelve months or less for which the Company elected not to recognize a lease asset or lease liability was $154,000, $123,000, and $275,000 in 2021, 2020, and 2019, respectively.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Future operating lease cash payments are as follows (in thousands):</span></div><div style="margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:82.648%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:2.728%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.224%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">Year Ended December&#160;31,</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Amount </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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,508&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,883&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,842&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,081&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2026</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,346&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Thereafter</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,069&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">27,729</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The discounted present value of the future lease cash payments resulted in a lease liability of $25,581,000 and $26,230,000 as of December 31, 2021 and 2020, respectively. </span></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In December 2021, the Company entered into a lease for a 65,000 square-foot building in Southborough, Massachusetts for a term of ten years to serve as a new distribution center for customers in the Americas. The transition of the current distribution center to the new Southborough facility is expected to take place during the first half of 2022. The Company will have the right and option to extend the term of this lease for an additional period of five years, commencing upon the expiration of the original ten-year term. As of December 31, 2021, this lease had not yet commenced, and therefore was not yet recorded on the Consolidated Balance Sheets, nor did it create any significant rights and obligations. Future payment obligations associated with this lease, which are not included in the future operating lease cash payments table above, total $10,239,000, of which $670,000 is payable in 2022. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020.</span></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The weighted-average discount rate was 3.4% and 4.0% for the leases outstanding as of December 31, 2021 and December 31, 2020, respectively. The weighted-average remaining lease term was 5.1 years for the leases outstanding as of both December 31, 2021 and 2020, respectively.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management closed eleven leased offices in 2020, prior to the end of their lease terms, as a part of a restructuring plan (refer to Note 22). The carrying value of the lease assets associated with these offices was reduced to zero, resulting in operating lease asset impairment charges of $3,427,000 in 2020 that are included in "Restructuring </span></div>charges" on the Consolidated Statements of Operations. Remaining lease liability obligations associated with the early contract terminations totaled $1,717,000 and $2,877,000 as of December 31, 2021 and 2020, respectively, and are included in "Operating lease liabilities" on the Consolidated Balance Sheets. The Company did not record impairment charges related to operating lease assets in 2021 or 2019.The Company owns a building adjacent to its corporate headquarters that was partially occupied by a tenant during a portion of 2020, and for the entirety of 2019. This lease terminated prior to the end of its lease term during the second quarter of 2020, and the Company is now fully occupying this building for its operations. Annual rental income totaled $77,000 in 2020 and $311,000 in 2019.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeasesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeasesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for lessor's operating leases.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -URI http://asc.fasb.org/subtopic&amp;trid=77888252<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeasesOfLessorDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>37
<FILENAME>R18.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259314216">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Goodwill<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract', window );"><strong>Goodwill and Intangible Assets Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillDisclosureTextBlock', window );">Goodwill</a></td>
<td class="text">Goodwill<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the carrying value of goodwill were as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:83.380%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.688%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">243,445&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sualab Co., Ltd. purchase price adjustment (refer to Note 21)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,004)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,637&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">244,078&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Foreign exchange rate changes</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2,365)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">241,713</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For its 2021 annual analysis of goodwill, management elected to perform a qualitative assessment. Based on this assessment, management believes it is more likely than not that the fair value of the reporting unit exceeds its carrying value. The Company did not record impairment charges related to goodwill in 2021, 2020, or 2019.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for goodwill.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -URI http://asc.fasb.org/subtopic&amp;trid=2144439<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>38
<FILENAME>R19.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259307592">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Intangible Assets<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract', window );"><strong>Goodwill and Intangible Assets Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IntangibleAssetsDisclosureTextBlock', window );">Intangible Assets</a></td>
<td class="text">Intangible Assets<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:51.176%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.318%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.318%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.320%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Value</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Accumulated<br/>Amortization</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Net<br/>Carrying<br/>Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Distribution networks</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">38,060</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">38,060</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Completed technologies</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">24,217</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">15,234</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">8,983</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">10,578</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,891</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2,687</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-compete agreements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">710</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">492</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">218</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Trademarks</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">110</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">110</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">73,675</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">61,787</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">11,888</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr style="height:9pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Value</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Accumulated<br/>Amortization</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Net<br/>Carrying<br/>Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Distribution networks</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38,060&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38,060&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Completed technologies</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">24,217&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">12,397&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">11,820&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10,578&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,160&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,418&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-compete agreements</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">710&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">436&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">274&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Trademarks</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">110&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">67&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">43&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,675&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58,120&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,555&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The adverse impact of the COVID-19 pandemic on our business in 2020 triggered a review of long-lived assets, including intangible assets, for potential impairment during the second quarter of 2020. Based on this assessment, management concluded that certain of the Company's finite-lived intangible assets failed the recoverability test, and recorded impairment charges for these assets equal to the amount by which their carrying value exceeded their fair value. The Company also measured the fair value and recorded an impairment charge for its indefinite-lived intangible asset related to in-process technologies. The fair values were established, with the assistance of an outside valuation advisor, using the income approach based on a discounted cash flow model that estimated future revenue streams and expenses attributable to those revenue streams provided by management.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">This review resulted in intangible asset impairment charges totaling $19,571,000 in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab Co. Ltd. ("Sualab") as a result of the deteriorating global economic conditions from the COVID-19 pandemic. Completed technologies, in-process technologies, and customer relationships acquired from Sualab were impaired in the amounts of $10,070,000, $5,900,000, and $3,382,000, respectively. In addition, customer relationships acquired from EnShape GmbH that had a gross carrying value of $447,000 and accumulated amortization of $228,000 on the measurement date were reduced to zero, resulting in an impairment charge of $219,000. The Company did not record impairment charges related to intangible assets in 2021 or 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Estimated amortization expense for each of the five succeeding fiscal years and thereafter is as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:81.623%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.445%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Year Ended December&#160;31,</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,275&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,594&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,080&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,757&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2026</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,452&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Thereafter</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">730&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">11,888</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IntangibleAssetsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for all or part of the information related to intangible assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -URI http://asc.fasb.org/topic&amp;trid=2144416<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IntangibleAssetsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>39
<FILENAME>R20.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259193496">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Accrued Expenses<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PayablesAndAccrualsAbstract', window );"><strong>Payables and Accruals [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock', window );">Accrued Expenses</a></td>
<td class="text">Accrued Expenses<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accrued expenses consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:64.002%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.908%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.057%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Incentive compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">37,917</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">28,935&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Salaries and payroll taxes</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">8,519</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,911&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign retirement obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,572</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,886&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,427</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,406&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Vacation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">4,686</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,641&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">28,311</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">24,485&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">92,432</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">77,264&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the warranty obligation were as follows (in thousands):</span></div><div style="margin-top:5pt"><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 style="width:81.209%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.591%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,713&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Provisions for warranties issued during the period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,463&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fulfillment of warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2,770)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,406&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Provisions for warranties issued during the period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,256&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fulfillment of warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(3,235)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,427</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for accounts payable and accrued liabilities at the end of the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.19(a),20,24)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PayablesAndAccrualsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PayablesAndAccrualsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>40
<FILENAME>R21.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029262115208">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Commitments and Contingencies<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract', window );"><strong>Commitments and Contingencies Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock', window );">Commitments and Contingencies</a></td>
<td class="text">Commitments and Contingencies<div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2021, the Company had outstanding purchase orders totaling $100,750,000 to procure inventory from various vendors, due in part to higher inventory purchases in response to global supply chain constraints. Certain of these purchase orders may be canceled by the Company, subject to cancellation penalties. These purchase commitments relate primarily to expected sales in 2022.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A significant portion of the Company's outstanding inventory purchase orders as of December&#160;31, 2021, as well as additional preauthorized commitments to procure strategic components based on the Company's expected customer demand, are placed with the Company's primary contract manufacturer for the Company's assembled products. The Company has the obligation to purchase any non-cancelable and non-returnable components that have been purchased by this contract manufacturer with the Company's preauthorization, when these components </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">have not been consumed within the period defined in the terms of the Company's agreement with this contract manufacturer. As a result of the terms of this agreement, the Company has purchased $19,448,000, $4,291,000, and $3,700,000 of inventory in 2021, 2020, and 2019, respectively, prior to the components being consumed by the contract manufacturer to produce the Company's assembled products. While the Company typically expects such purchased components to be used in future production of Cognex finished goods, these components are considered in the Company's reserve estimate for excess and obsolete inventory. Furthermore, the Company accrues for losses on commitments for the future purchase of non-cancelable and non-returnable components from this contract manufacturer at the time that circumstances, such as changes in demand, indicate that the value of the components may not be recoverable, the loss is probable, and management has the ability to reasonably estimate the amount of the loss.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Various claims and legal proceedings generally incidental to the normal course of business are pending or threatened on behalf of or against the Company. While we cannot predict the outcome of these matters, we believe that any liability arising from them will not have a material adverse effect on our financial position, liquidity, or results of operations.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for commitments and contingencies.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 450<br> -URI http://asc.fasb.org/topic&amp;trid=2127136<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 440<br> -URI http://asc.fasb.org/topic&amp;trid=2144648<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 954<br> -SubTopic 440<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6491277&amp;loc=d3e6429-115629<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 440<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123406679&amp;loc=d3e25336-109308<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 440<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123406679&amp;loc=d3e25336-109308<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>41
<FILENAME>R22.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259612056">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Indemnification Provisions<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GuaranteesAbstract', window );"><strong>Guarantees [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_IndemnificationProvisionsTextBlock', window );">Indemnification Provisions</a></td>
<td class="text">Indemnification Provisions<div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Except as limited by Massachusetts law, the by-laws of the Company require it to indemnify certain current or former directors, officers, and employees of the Company against expenses incurred by them in connection with each proceeding in which he or she is involved as a result of serving or having served in certain capacities. Indemnification is not available with respect to a proceeding as to which it has been adjudicated that the person did not act in good faith in the reasonable belief that the action was in the best interests of the Company. The maximum potential amount of future payments the Company could be required to make under these provisions is unlimited. The Company has never incurred significant costs related to these indemnification provisions. As a result, the Company believes the estimated fair value of these provisions is not material.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In the ordinary course of business, the Company may accept standard limited indemnification provisions in connection with the sale of its products, whereby it indemnifies its customers for certain direct damages incurred in connection with third-party patent or other intellectual property infringement claims with respect to the use of the Company&#8217;s products. The maximum potential amount of future payments the Company could be required to make under these provisions is generally subject to fixed monetary limits. The Company has never incurred significant costs to defend lawsuits or settle claims related to these indemnification provisions. As a result, the Company believes the estimated fair value of these provisions is not material.</span></div>In the ordinary course of business, the Company also accepts limited indemnification provisions from time to time, whereby it indemnifies customers for certain direct damages incurred in connection with bodily injury and property damage arising from the use of the Company&#8217;s products. The maximum potential amount of future payments the Company could be required to make under these provisions is generally limited and is likely recoverable under the Company&#8217;s insurance policies. As a result of this coverage, and the fact that the Company has never incurred significant costs to defend lawsuits or settle claims related to these indemnification provisions, the Company believes the estimated fair value of these provisions is not material.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_IndemnificationProvisionsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Indemnification provisions are a potential liability whereby the Company indemnifies certain directors, officers, and employees (current or former) against expenses incurred by them in relation to specific legal proceedings. The company also indemnifies other parties for specific situations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_IndemnificationProvisionsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GuaranteesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GuaranteesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>42
<FILENAME>R23.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029348083000">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Derivative Instruments<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract', window );"><strong>Derivative Instruments and Hedging Activities Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock', window );">Derivative Instruments</a></td>
<td class="text">Derivative InstrumentsThe Company&#8217;s foreign currency risk management strategy is principally designed to mitigate the potential financial impact of changes in the value of transactions and balances denominated in foreign currencies resulting from changes in foreign currency exchange rates. The Company enters into economic hedges utilizing foreign currency forward contracts with maturities of up to 95 days to manage the exposure to fluctuations in foreign currency exchange rates arising primarily from foreign-denominated receivables and payables. The gains and losses on these derivatives are intended to be offset by the changes in the fair value of the assets and liabilities being hedged. These economic hedges are not designated as hedging instruments for hedge accounting treatment. <div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company had the following outstanding forward contracts (in thousands): </span></div><div style="margin-top:10pt;text-align:justify"><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 style="width:47.291%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.765%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.180%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.180%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.354%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="6" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="6" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2020</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Currency</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Notional Value</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">USD Equivalent</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Notional Value</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">USD Equivalent</span></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="18" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Euro</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">65,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,748&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">61,342&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Chinese Renminbi</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">54,374&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,500&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Mexican Peso</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">140,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,842&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">155,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,776&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Japanese Yen</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,213&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,808&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">British Pound</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,370&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,552&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,675&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,287&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Hungarian Forint</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,355,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,155&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,330,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,494&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Canadian Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,480&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,167&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,285&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,010&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Korean Won</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,925,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,377&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Taiwanese Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38,035&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,362&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Singapore Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,465&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,110&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information regarding the fair value of the outstanding forward contracts was as follows (in thousands):</span></div><div style="margin-top:10pt;text-align:justify"><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 style="width:15.274%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.204%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.788%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.350%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.888%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.788%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.358%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Asset Derivatives</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr style="height:14pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Balance<br/>Sheet  Location</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Balance<br/>Sheet   Location</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr style="height:24pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</span></td></tr><tr><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="36" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">265&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Accrued expenses</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">230</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the gross activity for all derivative assets and liabilities which were presented on a net basis on the Consolidated Balance Sheets due to the right of offset with each counterparty (in thousands):</span></div><div style="margin-top:14pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:18.108%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.826%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.562%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.826%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.709%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:17.814%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.562%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.394%"/><td style="width:0.1%"/></tr><tr><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Asset Derivatives</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of recognized assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">265&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of recognized liabilities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">230</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts offset</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts offset</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net amount of assets presented</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">265&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net amount of liabilities presented</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">230</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information regarding the effect of derivative instruments, net of the underlying exposure, on the consolidated financial statements was as follows (in thousands):</span></div><div style="margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:21.920%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:22.800%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.762%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.908%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.911%"/><td style="width:0.1%"/></tr><tr style="height:12pt"><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Location in Financial Statements</span></td><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td></tr><tr><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gains (losses) recognized in current operations</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency gain (loss)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">4,262</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(12,308)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,305&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for derivative instruments and hedging activities including, but not limited to, risk management strategies, non-hedging derivative instruments, assets, liabilities, revenue and expenses, and methodologies and assumptions used in determining the amounts.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -URI http://asc.fasb.org/topic&amp;trid=2229140<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 50<br> -Paragraph 5<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123477628&amp;loc=d3e90205-114008<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>43
<FILENAME>R24.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029260610136">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue Recognition<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerAbstract', window );"><strong>Revenue from Contract with Customer [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerTextBlock', window );">Revenue Recognition</a></td>
<td class="text">Revenue Recognition<div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes disaggregated revenue information by geographic area based on the customer's country of domicile (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:61.216%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.630%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.826%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.630%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.632%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Americas</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">435,220</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">310,027&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">277,155&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">247,744</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">208,787&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">227,738&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Greater China</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">200,135</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">168,287&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">115,061&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other Asia</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">153,999</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">123,919&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">105,671&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,037,098</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">811,020&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">725,625&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><div style="margin-top:1pt;text-align:justify"><span><br/></span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes disaggregated revenue information by revenue type (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:61.125%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.466%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.824%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.613%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.824%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.616%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Standard products and services</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">889,253</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">674,830&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">629,220&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Application-specific customer solutions</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">147,845</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">136,190&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">96,405&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,037,098</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">811,020&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">725,625&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Costs to Fulfill a Contract</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Costs to fulfill a contract are included in "Prepaid expenses and other current assets" on the Consolidated Balance Sheets and amounted to $10,854,000 and $6,846,000 as of December 31, 2021 and 2020, respectively. </span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounts Receivable, Contract Assets, and Contract Liabilities</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accounts receivable represent amounts billed and currently due from customers which are reported at their net estimated realizable value. The Company maintains an allowance against its accounts receivable for credit losses. Contract assets consist of unbilled revenue which arises when revenue is recognized in advance of billing for certain application-specific customer solutions contracts. Contract liabilities consist of deferred revenue and customer deposits which arise when amounts are billed to or collected from customers in advance of revenue recognition.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes changes in the allowance for credit losses (in thousands):</span></div><div style="text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"><tr><td style="width:1.0%"/><td style="width:79.341%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:18.459%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">530&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Write-offs, net of recoveries</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(300)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">831&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Write-offs, net of recoveries</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(55)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">776</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's higher estimate of expected credit losses in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.</span></div><div style="margin-top:3pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the deferred revenue and customer deposits activity (in thousands):</span></div><div style="margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:79.398%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:18.402%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">14,432&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferral of revenue billed in the current period, net of recognition</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">19,014&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Recognition of revenue deferred in prior period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(12,443)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">271&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21,274&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferral of revenue billed in the current period, net of recognition</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">31,907&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Recognition of revenue deferred in prior period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(17,403)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(35)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">35,743</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a practical expedient, the Company has elected not to disclose the aggregate amount of the transaction price allocated to unsatisfied performance obligations, as our contracts have an original expected duration of less than one year.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -URI http://asc.fasb.org/topic&amp;trid=49130388<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130551-203045<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130556-203045<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130554-203045<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130550-203045<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130554-203045<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130554-203045<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130554-203045<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130558-203045<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130554-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>44
<FILENAME>R25.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029262115208">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Shareholders' Equity<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EquityAbstract', window );"><strong>Equity [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockholdersEquityNoteDisclosureTextBlock', window );">Shareholders&#8217; Equity</a></td>
<td class="text">Shareholders&#8217; Equity<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Preferred Stock</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has 400,000 shares of authorized but unissued $.01 par value preferred stock.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Common Stock</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On April 25, 2018, the Company's shareholders approved an amendment to the Company's Articles of Organization to increase the authorized number of shares of $.002 par value common stock from 200,000,000 to 300,000,000. In addition, on April 25, 2018, the Company's shareholders approved an amendment and restatement of the Company's 2001 General Stock Option Plan which provides for an increase in the number of available shares by 10,000,000.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Each outstanding share of common stock entitles the record holder to one vote on all matters submitted to a vote of the Company&#8217;s shareholders. Common shareholders are also entitled to dividends when and if declared by the Company&#8217;s Board of Directors.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock Repurchases</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In October 2018, the Company's Board of Directors authorized the repurchase of $200,000,000 of the Company's common stock. Under this October 2018 program, the Company repurchased 1,398,000 shares at a cost of $61,690,000 in 2019, 1,215,000 shares at a cost of $51,036,000 in 2020, and 957,000 shares at a cost of $78,652,000 in 2021, which completed purchases under this program. On March 12, 2020, the Company's Board of Directors authorized the repurchase of an additional $200,000,000 of the Company's common stock. Under this March 2020 program, the Company repurchased 1,060,000 shares, including 5,000 shares that had not yet settled as of December 31, 2021, at a cost of $83,000,000 in 2021, leaving a remaining balance of $117,000,000. The Company may repurchase shares under this program in future periods depending on a variety of factors, including, among other things, the impact of dilution from employee stock awards, stock price, share availability, and cash requirements. The Company is authorized to make repurchases of its common stock through open market purchases, pursuant to Rule 10b5-1 trading plans, or in privately negotiated transactions.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Dividends</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s Board of Directors declared and paid cash dividends of $0.050 per share in the first, second, and third quarters of 2019, $0.055 per share in the fourth quarter of 2019 and in the first, second, and third quarters of 2020, and $0.060 per share in the fourth quarter of 2020 and in the first, second, and third quarters of 2021. The dividend was increased to $0.065 per share in the fourth quarter of 2021. Also, in the fourth quarter of 2020, an additional special cash dividend of $2.00 per share was declared and paid. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Total dividends paid were $43,263,000 in 2021, $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, and $35,124,000 in 2019. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend on such factors as the Board deems relevant, including, among other things, the Company's ability to generate positive cash flow from operations.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EquityAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EquityAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockholdersEquityNoteDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for shareholders' equity comprised of portions attributable to the parent entity and noncontrolling interest, including other comprehensive income. Includes, but is not limited to, balances of common stock, preferred stock, additional paid-in capital, other capital and retained earnings, accumulated balance for each classification of other comprehensive income and amount of comprehensive income.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 14<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496171-112644<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 14<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496171-112644<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496189-112644<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (g)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -URI http://asc.fasb.org/topic&amp;trid=2208762<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496189-112644<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 14<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496171-112644<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496189-112644<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 16<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496180-112644<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(e)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockholdersEquityNoteDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>45
<FILENAME>R26.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259207224">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stock-Based Compensation<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract', window );"><strong>Share-based Payment Arrangement [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock', window );">Stock-Based Compensation</a></td>
<td class="text">Stock-Based Compensation<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock Plans</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). As of December&#160;31, 2021, the Company had 15,640,000 shares available for grant under its stock plans. Stock options are granted with an exercise price equal to the market value of the Company&#8217;s common stock at the grant date and generally vest over <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQxOQ_cac7f81a-55a4-43ac-b985-ca51aa05fe04">four</span> or five years based on continuous employment and expire ten years from the grant date. RSUs generally vest upon three years of continuous employment or incrementally over such three-year period. Participants are not entitled to dividends on RSUs.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock Options</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the Company&#8217;s stock option activity:</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:43.409%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.223%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.223%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.223%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.226%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Shares<br/>(in&#160;thousands)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-<br/>Average<br/>Exercise<br/>Price</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-<br/>Average<br/>Remaining<br/>Contractual<br/>Term<br/>(in&#160;years)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Aggregate<br/>Intrinsic Value<br/>(in&#160;thousands)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,970&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">44.73&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Granted</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">564&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">88.62&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Exercised</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,694)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37.70&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Forfeited or expired</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(230)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50.34&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2021</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,610</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">49.38</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">6.57</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">222,053</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Exercisable as of December 31, 2021</span></td><td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">3,442</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39.87</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5.45</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">130,448</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Options vested or expected to vest as of&#160;<br/>&#160;December 31, 2021 (1)</span></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,134</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">48.66</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">6.49</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">212,746</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;padding-left:36pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1) In addition to the vested options, the Company expects a portion of the unvested options to vest at some point in the future. Options expected to vest are calculated by applying an estimated forfeiture rate to the unvested options.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair values of stock options granted in each period presented were estimated using the following weighted-average assumptions:</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:54.847%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.996%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.143%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.146%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year&#160;Ended&#160;December&#160;31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Risk-free rate</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1.3</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.4&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2.7&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected dividend yield</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">0.27</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.41&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.39&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected volatility</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected term (in years)</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">6.0</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6.0</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5.3</span></td></tr></table></div><div style="margin-top:4pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Risk-free rate</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The risk-free rate was based on a treasury instrument whose term was consistent with the contractual term of the option.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Expected dividend yield</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Generally, the current dividend yield is calculated by annualizing the cash dividend declared by the Company&#8217;s Board of Directors and dividing that result by the closing stock price on the grant date.&#160;</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Expected volatility</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The expected volatility was based on a combination of historical volatility of&#160;the Company&#8217;s&#160;common stock over the contractual term of the option and implied volatility for traded options of the Company&#8217;s stock.</span></div><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Expected term</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The expected term was derived from the binomial lattice model from the impact of events that trigger exercises over time.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The weighted-average grant-date fair value of stock options granted was $33.79 in 2021, $19.62 in 2020, and $18.62 in 2019.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The total intrinsic value of stock options exercised was $80,369,000 in 2021, $166,796,000 in 2020, and $90,762,000 in 2019. The total fair value of stock options vested was $45,328,000 in 2021, $45,998,000 in 2020, and $38,974,000 in 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Restricted Stock Units (RSUs)</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following tables summarizes the Company's RSU activity:</span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:62.496%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.666%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:19.808%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Shares<br/>(in&#160;thousands)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Weighted-Average<br/>Grant Date Fair Value</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Nonvested as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">554&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">51.27&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Granted</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">335&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">87.03&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Vested</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(16)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">57.31&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Forfeited or expired</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(50)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58.47&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Nonvested as of December 31, 2021</span></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">823</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">65.26</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair value of RSUs is determined based on the observable market price of the Company's stock on the grant date less the present value of expected future dividends. The weighted-average grant-date fair value of RSUs granted in 2020 and 2019 was $52.09 and $48.61, respectively. There were 16,000 RSUs that vested in 2021, and no RSUs that vested in 2020 and 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock-Based Compensation Expense</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company stratifies its employee population into two groups: one consisting of senior management and another consisting of all other employees. The Company currently applies an estimated forfeiture rate of 8% to all unvested options for senior management and a rate of 12% for all other employees. Each year during the first quarter, the Company revises its forfeiture rate. This resulted in a decrease to compensation expense of $255,000 in 2021, an increase to compensation expense of $1,787,000 in 2020, and a decrease to compensation expense of $499,000 in 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December&#160;31, 2021, total unrecognized compensation expense related to non-vested stock-based awards, including stock options and RSUs, was $47,690,000, which is expected to be recognized over a weighted-average period of 1.4 years.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The total stock-based compensation expense and the related income tax benefit recognized was $43,774,000 and $6,764,000, respectively, in 2021, $42,661,000 and $6,569,000, respectively, in 2020, and $45,589,000 and $7,756,000, respectively, in 2019. Stock-based compensation expense recognized in 2020 included credits of $1,401,000 relating to grants cancelled as a result of the Company's workforce reduction in the second quarter of 2020. No compensation expense was capitalized in 2021, 2020, or 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the stock-based compensation expense by caption for each period presented on the Consolidated Statements of Operations (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:51.176%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.318%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.318%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.320%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cost of revenue</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,345</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,365&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,504&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Research, development, and engineering</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">13,535</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,387&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,748&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Selling, general, and administrative</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">28,894</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">27,909&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">28,337&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">43,774</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">42,661&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">45,589&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -URI http://asc.fasb.org/topic&amp;trid=2228938<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>46
<FILENAME>R27.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029260602584">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Employee Savings Plan<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CompensationAndRetirementDisclosureAbstract', window );"><strong>Retirement Benefits [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock', window );">Employee Savings Plan</a></td>
<td class="text">Employee Savings PlanUnder the Company's Employee Savings Plan, a defined contribution plan, all U.S. employees who have attained age 21 may contribute up to 100% of their pay on a pre-tax basis under the Company's Employee Savings Plan, subject to the annual dollar limitations established by the Internal Revenue Service ("IRS"). The Company matches 50% of the first 6% of pay an employee contributes. Company contributions vest 25%, 50%, 75%, and 100% after one, two, three, and four years of continuous employment with the Company, respectively. Company contributions totaled $2,898,000 in 2021, $2,636,000 in 2020, and $2,729,000 in 2019. Cognex stock is not an investment alternative and Company contributions are not made in the form of Cognex stock.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CompensationAndRetirementDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CompensationAndRetirementDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for retirement benefits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 55<br> -Paragraph 17<br> -URI http://asc.fasb.org/extlink&amp;oid=123450688&amp;loc=d3e4179-114921<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section S99<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=21916913&amp;loc=d3e273930-122802<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (o)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (p)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 70<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=49170846&amp;loc=d3e28014-114942<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -URI http://asc.fasb.org/topic&amp;trid=2235017<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 60<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=6414203&amp;loc=d3e39689-114964<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iv)(03)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (q)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (r)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (l)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (r)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123447040&amp;loc=d3e1928-114920<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>47
<FILENAME>R28.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259193496">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureAbstract', window );"><strong>Income Tax Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureTextBlock', window );">Income Taxes</a></td>
<td class="text">Income Taxes<div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Domestic income before taxes was $121,729,000 in 2021, $39,425,000 in 2020, and $31,396,000 in 2019. Foreign income before taxes was $197,171,000 in 2021, $147,486,000 in 2020, and $131,598,000 in 2019. </span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income tax expense (benefit) consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:48.680%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.151%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.151%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.154%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="15" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">27,870</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">160&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,854&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,372</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">921&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,108&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">8,406</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,197&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">30,670&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">41,648</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">14,278&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">48,632&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(19,266)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(18,266)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">352,808&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(769)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(556)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">183&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">17,406</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,269&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(442,494)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(2,629)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(3,553)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(89,503)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39,019</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10,725&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(40,871)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A reconciliation of the U.S. federal statutory corporate tax rate to the Company&#8217;s income tax expense (benefit), or effective tax rate, was as follows:</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:62.296%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.613%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.613%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.614%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year&#160;Ended&#160;December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense at U.S. federal statutory corporate tax rate</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">21</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State income taxes, net of federal benefit</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign tax rate differential</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(5)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(6)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(9)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Tax credit</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to employee stock options</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(3)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(7)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to tax return filings</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(5)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">Discrete tax expense related to German withholding</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax expense related to migration of acquired IP</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to change in tax structure</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(268)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax expense related to GILTI impact of change in tax structure</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">214&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other discrete tax events</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense (benefit)</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">12</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(25)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Change in Accounting Policy</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2019, the Company elected to change its method of accounting for the United States Global Intangible Low-Taxed Income (GILTI) tax from recording the tax impact in the period it is incurred to recognizing deferred taxes for temporary tax basis differences expected to reverse as GILTI tax in future years. The change is considered preferable, as it appropriately matches the Company's current and deferred income tax implications related to the change in international tax structure noted above.</span></div><div style="margin-bottom:8pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The change in this accounting policy impacted the Company's 2019 reported results as follows (in thousands):</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:53.936%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.582%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Statement of Operations</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;Year Ended December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income before income tax expense</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">162,994&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">162,994&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense (benefit)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(40,871)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(393,317)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">352,446&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">203,865&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">556,311&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(352,446)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/></tr><tr><td colspan="6" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income per weighted-average common and common-equivalent share:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.19&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3.25&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2.06)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Diluted</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.16&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3.17&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2.01)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-bottom:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:53.936%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.582%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Balance Sheet</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy<br/></span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred tax assets</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">449,519&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">469,621&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(20,102)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred tax liabilities</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">332,344&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">332,344&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-bottom:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:53.936%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.582%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Statement of Shareholders' Equity</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;Year Ended December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy<br/></span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Retained earnings</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">753,268&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,105,714&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(352,446)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Discrete Tax Items</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income tax expense included a decrease of $11,036,000 in 2021, $12,788,000 in 2020, and $6,472,000 in 2019 related to stock options, primarily from the excess tax benefit arising from the difference between the deduction for tax purposes and the compensation cost recognized for financial reporting purposes from stock option exercises. The Company cannot predict the level of stock option exercises by employees in future periods.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income tax expense in 2021 and 2020 also included discrete tax items related to the final true-up of the prior year's tax accrual upon filing the related tax return. In 2020, this included a tax benefit of $13,984,000 primarily to recognize a foreign tax benefit on certain gains taxed outside of the United States based on clarifications to rules relating to the use of foreign tax credits. This benefit was partially offset by tax expense for a transfer price adjustment in China of $3,267,000 and smaller tax expense adjustments related to foreign tax filings of $843,000.</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2020, interpretations of a German law relating to withholding taxes on intellectual property rights emerged. The Company conducted a careful review of the interpretation, submitted required tax filings, and believes it has adequate reserves for this German tax exposure.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2019, the Company made changes to its international tax structure as a result of legislation by the European Union regarding low tax structures that resulted in an intercompany sale of intellectual property. The Company recorded an associated deferred tax asset and income tax benefit of $437,500,000 in Ireland based on the fair value of the intellectual property, that is being realized over 15 years as future tax deductions. From a United States perspective, the sale was disregarded, and any future deductions claimed in Ireland were added back to taxable income as part of GILTI minimum tax. The Company recorded an associated deferred tax liability and income tax expense of $350,000,000, representing the GILTI minimum tax related to the fair value of the intellectual property. The result of these transactions was a net discrete tax benefit of $87,500,000. Management expects an immaterial impact on its current effective tax rate excluding discrete items in future years as a result of this change.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In 2019, in connection with the acquisition of Sualab, Co. Ltd., the Company migrated acquired intellectual property to certain subsidiaries to align with its corporate tax structure. As a result of this transaction, the Company recorded a discrete tax expense of $28,528,000, which included a reserve of $3,700,000 for certain related tax uncertainties. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Tax Reserves</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the reserve for income taxes, excluding gross interest and penalties, were as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:81.158%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.642%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2019</span></td><td style="padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">11,591&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">162&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,383&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,184)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,952&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(280)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">525&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(485)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">13,812</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s reserve for income taxes, including gross interest and penalties, was $15,808,000 as of December 31, 2021, which included $14,780,000 classified as a non-current liability and $1,028,000 recorded as a reduction to non-current deferred tax assets. The Company's reserve for income taxes, including gross interest and penalties, was $15,285,000 as of December 31, 2020, which included $14,257,000 classified as a non-current liability and $1,028,000 recorded as a reduction to non-current deferred tax assets. The amount of gross interest and penalties included in these balances was $1,996,000 and $1,332,000 as of December&#160;31, 2021 and 2020, respectively. If the Company&#8217;s tax positions were sustained or the statutes of limitations related to certain positions expired, these reserves would be released and income tax expense would be reduced in a future period. As a result of the expiration of certain statutes of limitations, there is a potential that a portion of these reserves could be released, which would decrease income tax expense by approximately $2,000,000 to $3,500,000 over the next twelve months.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company has defined its major tax jurisdictions as the United States, Ireland, China, and Korea and within the United States, Massachusetts. The statutory tax rate is 12.5% in Ireland, 25% in China, and 22% in Korea, compared to the U.S. federal statutory corporate tax rate of 21%. These differences resulted in a favorable impact to the effective tax rate of 5 percentage points for 2021, 6 percentage points for 2020, and 9 percentage points for 2019. Management has determined that earnings from its legal entity in China will be indefinitely reinvested to provide local funding for growth, and that earnings from all other jurisdictions will not be indefinitely reinvested. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Within the United States, the tax years 2017 through 2020 remain open to examination by the Internal Revenue Service ("IRS") and various state taxing authorities. The tax years 2016 through 2020 remain open to examination by various taxing authorities in other jurisdictions in which the Company operates. The Company is under audit by the IRS for the tax years 2017 and 2018. Additionally, the Company is under audit by the Commonwealth of Massachusetts for tax years 2017 and 2018. Management believes the Company is adequately reserved for these </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">audits. The final determination of tax audits could result in favorable or unfavorable changes in our estimates. Any reserves associated with this audit period will not be released until the issue is settled or the audit is concluded. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Interest and penalties included in income tax expense were $281,000, $340,000, and $116,000 in 2021, 2020, and 2019, respectively.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash paid for income taxes totaled $49,435,000 in 2021, $33,695,000 in 2020, and $13,443,000 in 2019.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Deferred Tax Assets and Liabilities</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred tax assets and liabilities, presented on a gross basis by jurisdiction, consisted of the following (in thousands):</span></div><div style="margin-top:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:66.495%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.735%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.737%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Intangible asset in connection with change in tax structure</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">404,526</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">424,156&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Stock-based compensation expense</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">15,279</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,294&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal and state tax credit carryforwards</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">11,051</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10,171&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Inventory and revenue related</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,426</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,976&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Bonuses, commissions, and other compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,263</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,932&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Depreciation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,395</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,211&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign net operating losses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">751</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">602&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">9,023</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,342&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax assets</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">460,714</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">467,684&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Valuation allowance</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(8,188)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(8,568)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">452,526</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">459,116&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr style="height:14pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax liabilities:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">GILTI tax basis differences in connection with change in tax structure</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(327,725)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(339,364)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr style="height:14pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net deferred taxes</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">124,801</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">119,752&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, the Company had a deferred tax asset for foreign tax credit carryforwards of $1,730,000. These credits are considered to be realizable and will be utilized in a future period.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As of December 31, 2021, the Company had a valuation allowance for state research and development tax credits of $11,750,000 that was not considered to be realizable. Should these credits be utilized in a future period, the reserve associated with these credits would be reversed in the period when it is determined that the credits can be utilized to offset future state income tax liabilities. As of December 31, 2021, the Company had state research and development tax credit carryforwards of $13,250,000, which will begin to expire for the 2025 tax return.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">While the deferred tax assets, net of valuation allowance, are not assured of realization, management has evaluated the realizability of these deferred tax assets and has determined that it is more likely than not that these assets will be realized. In reaching this conclusion, we have evaluated certain relevant criteria including the Company&#8217;s historical profitability, current projections of future profitability, and the lives of tax credits, net operating losses, and other carryforwards. Should the Company fail to generate sufficient pre-tax profits in future periods, we may be required to establish valuation allowances against these deferred tax assets, resulting in a charge to current operations in the period of determination.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32857-109319<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 11.C)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330215-122817<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32809-109319<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.5.Q1)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32705-109319<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 270<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6424409&amp;loc=d3e44925-109338<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -URI http://asc.fasb.org/topic&amp;trid=2144680<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6424122&amp;loc=d3e41874-109331<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>48
<FILENAME>R29.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259180520">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Weighted Average Shares<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareAbstract', window );"><strong>Earnings Per Share [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareTextBlock', window );">Weighted Average Shares</a></td>
<td class="text">Weighted Average Shares<div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Weighted-average shares were calculated as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:55.058%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.976%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.976%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.124%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Basic weighted-average common shares outstanding</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">176,463</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">173,489&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">171,194&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of dilutive stock awards</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">3,453</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,103&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,075&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Diluted weighted-average common and common-equivalent shares outstanding</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">179,916</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">176,592&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">175,269&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Stock options to purchase 497,504, 4,371,194, and 5,735,608 shares of common stock, on a weighted-average basis, were outstanding in 2021, 2020, and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. Restricted stock units totaling 605, 3,826, and 13,092 shares of common stock, on a weighted-average basis, were outstanding in 2021, 2020, and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for earnings per share.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109243012&amp;loc=SL65017193-207537<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -URI http://asc.fasb.org/topic&amp;trid=2144383<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3630-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>49
<FILENAME>R30.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029260608744">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Segment and Geographic Information<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SegmentReportingAbstract', window );"><strong>Segment Reporting [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SegmentReportingDisclosureTextBlock', window );">Segment and Geographic Information</a></td>
<td class="text">Segment and Geographic Information<div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company operates in one segment, machine vision technology. The Company&#8217;s chief operating decision maker is the chief executive officer, who makes decisions to allocate resources and assesses performance at the corporate level. The Company offers a variety of machine vision products that have similar economic characteristics, have the same production processes, and are distributed by the same sales channels to the same types of customers.</span></div><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes information about geographic areas (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:28.665%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.389%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.389%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.243%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.389%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.393%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">United&#160;States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Greater China </span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Other</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">393,690</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">247,744</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">200,135</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">195,529</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,037,098</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">63,141</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">16,982</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">960</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">3,705</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">84,788</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">280,205&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">208,787&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">168,287&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">153,741&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">811,020&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">60,911&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">20,014&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,278&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,764&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">86,967&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2019</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">247,689&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">227,738&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">115,061&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">135,137&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">725,625&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">68,496&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21,691&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,487&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,602&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">95,276&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue is presented geographically based on the customer&#8217;s country of domicile. </span></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue from a single customer accounted for 17% and 14% of total revenue in 2021 and 2020, respectively. Revenue from this customer was not greater than 10% of total revenue in 2019. Accounts receivable from this same customer accounted for 15% and 19% of total accounts receivable as of December 31, 2021 and 2020, respectively.</span></div>Revenue from a second customer accounted for 13% of total revenue in 2020. Revenue from this customer was not greater than 10% of total revenue in 2021 or 2019. Accounts receivable from this same customer accounted for 11% and 20% of total accounts receivable as of December 31, 2021 and 2020, respectively.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SegmentReportingAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SegmentReportingAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SegmentReportingDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 34<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8981-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8721-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9031-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 26<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8844-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8657-108599<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8721-108599<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -URI http://asc.fasb.org/topic&amp;trid=2134510<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SegmentReportingDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>50
<FILENAME>R31.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259230776">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Business Acquisitions<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationsAbstract', window );"><strong>Business Combinations [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationDisclosureTextBlock', window );">Business Acquisitions</a></td>
<td class="text">Business Acquisitions<div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Sualab Co., Ltd.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On October 16, 2019, the Company acquired all the outstanding shares of Sualab Co., Ltd. (Sualab), a provider of deep learning-based vision software for industrial image analysis based in Korea. The total consideration of $193,638,000 included cash payments of $170,602,000 upon closing. In the fourth quarter of 2020, the Company recorded a credit to goodwill in the amount of $1,004,000 representing a purchase price adjustment. The remaining consideration consists of deferred payments of $24,040,000 that may become payable in October 2023, contingent upon the continued employment of key talent, and is being recorded as compensation expense over the four-year period.</span></div>Deteriorating global economic conditions from the COVID-19 pandemic triggered a review of long-lived assets for potential impairment in the second quarter of 2020. This review resulted in intangible asset impairment charges totaling $19,571,000 in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab. Completed technologies, in-process technologies, and customer relationships acquired from Sualab were impaired in the amounts of $10,070,000, $5,900,000, and $3,382,000, respectively.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -URI http://asc.fasb.org/topic&amp;trid=2303972<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>51
<FILENAME>R32.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259252712">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Restructuring Charges<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringAndRelatedActivitiesAbstract', window );"><strong>Restructuring and Related Activities [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock', window );">Restructuring Charges</a></td>
<td class="text">Restructuring Charges<div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On May 26, 2020, the Company's Board of Directors approved a restructuring plan intended to reduce the Company's operating costs, optimize its business model, and address the impact of the COVID-19 pandemic. The restructuring plan included a global workforce reduction of approximately 8% and office closures. The Company recorded restructuring charges from these actions totaling $15,924,000 in 2020 which are included in &#8220;Restructuring charges&#8221; on the Consolidated Statements of Operations. As of December 31, 2020, the majority of these actions were completed and no additional charges are expected to be incurred in future periods in relation to this restructuring plan. There were no restructuring charges recognized in 2021.</span></div><div style="text-align:justify"><span><br/></span></div><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the restructuring charges for the year ended December 31, 2020 (in thousands):</span></div><div><span><br/></span></div><div style="text-align:justify"><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 style="width:72.876%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:24.194%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Amount</span></td><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">One-time termination benefits</span></td><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10,159&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Contract termination costs</span></td><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,207&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other associated costs</span></td><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">558&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">15,924</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">One-time termination benefits included severance, health insurance, and outplacement services for 181 employees who were either terminated during the second quarter of 2020, or were notified during the second quarter of 2020 that they would be terminated at a future date. For employees not required to render service beyond a minimum retention period, the one-time termination benefits were recognized in the second quarter of 2020. Otherwise, these benefits, including retention bonuses for selected employees, were recognized over the remaining service period which was completed by December 31, 2020.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Contract termination costs included operating lease asset impairment charges for eleven offices closed prior to the end of the contractual lease term. These costs also included the write-off of leasehold improvements and other equipment related to these abandoned offices that had no alternative use, as well as other associated operating costs, such as utilities, that the Company is obligated to pay for the remainder of the lease term. These contract termination costs were primarily recognized in the second quarter of 2020 when the Company ceased using the property for economic benefit. </span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Other associated costs primarily included legal fees related to the employee termination actions, which were recognized when the services were performed. </span></div><div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the activity in the Company&#8217;s restructuring reserve, which is included in &#8220;Accrued expenses&#8221; on the Consolidated Balance Sheets (in thousands):</span></div><div style="text-align:justify"><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 style="width:38.227%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.104%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.384%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.081%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.384%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.788%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.384%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.548%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">One-time Termination Benefits</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Contract Termination Costs</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Other Associated Costs</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Restructuring charges</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">11,329&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,220&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">636&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">17,185</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash payments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(8,717)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(317)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(563)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(9,597)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-cash restructuring charges</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4,163)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(4,163)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Restructuring adjustments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,170)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(13)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(78)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(1,261)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">182&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">23&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">20&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">225</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,624</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">750</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">15</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2,389</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash payments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,142)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(227)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(15)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(1,384)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(7)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(7)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">482</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">516</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">998</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div>Restructuring adjustments related to one-time termination benefits consisted primarily of the favorable true-up of severance estimates based on final agreements and health insurance estimates based on employee elections.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringAndRelatedActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringAndRelatedActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for restructuring and related activities. Description of restructuring activities such as exit and disposal activities, include facts and circumstances leading to the plan, the expected plan completion date, the major types of costs associated with the plan activities, total expected costs, the accrual balance at the end of the period, and the periods over which the remaining accrual will be settled.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(e))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -URI http://asc.fasb.org/topic&amp;trid=2175745<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>52
<FILENAME>R33.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259135960">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Subsequent Events<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SubsequentEventsAbstract', window );"><strong>Subsequent Events [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SubsequentEventsTextBlock', window );">Subsequent Events</a></td>
<td class="text">Subsequent EventsOn February 17, 2022, the Company's Board of Directors declared a cash dividend of $0.065 per share. The dividend is payable March 18, 2022 to all shareholders of record as of the close of business on March 4, 2022.<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsequentEventsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsequentEventsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsequentEventsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for significant events or transactions that occurred after the balance sheet date through the date the financial statements were issued or the date the financial statements were available to be issued. Examples include: the sale of a capital stock issue, purchase of a business, settlement of litigation, catastrophic loss, significant foreign exchange rate changes, loans to insiders or affiliates, and transactions not in the ordinary course of business.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 855<br> -URI http://asc.fasb.org/topic&amp;trid=2122774<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 855<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6842918&amp;loc=SL6314017-165662<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsequentEventsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>53
<FILENAME>R34.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259217512">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Schedule II - Valuation and Qualifying Accounts<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ValuationAndQualifyingAccountsAbstract', window );"><strong>SEC Schedule, 12-09, Valuation and Qualifying Accounts [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock', window );">Schedule II - Valuation and Qualifying Accounts</a></td>
<td class="text">SCHEDULE II &#8211; VALUATION AND QUALIFYING ACCOUNTS<div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.269%"><tr><td style="width:1.0%"/><td style="width:30.711%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.536%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.472%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.536%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.472%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.536%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.472%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.536%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.914%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:2.581%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.472%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:2.581%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.481%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"/><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Additions</span></td><td colspan="3" style="padding:0 1pt"/><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Description</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance&#160;at<br/>Beginning<br/>of Period</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Charged&#160;to<br/>Costs and<br/>Expenses</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Charged<br/>to Other<br/>Accounts</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Deductions</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Other</span></td><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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Balance&#160;at<br/>End of<br/>Period</span></td></tr><tr><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="33" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(In thousands)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Allowance for Credit Losses on Accounts Receivable:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">831&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(55)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">776&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">530&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(300)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">831&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">596&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">215&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(286)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">530&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Reserve&#160;for Sales Returns:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,291&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">227&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,518&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,291&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,291&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,050&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">225&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,291&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred Tax Valuation Allowance:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,568&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,420&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,800)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,188&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,312&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,256&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,568&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,112&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,200&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,312&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;padding-left:36pt;text-indent:-36pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:23.78pt">Specific write-offs</span></div><div style="padding-left:36pt;text-indent:-36pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(2)</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:23.78pt">Foreign currency exchange rate changes</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The entire disclosure for valuation and qualifying accounts and reserves.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher SEC<br> -Name Regulation S-X (SX)<br> -Number 210<br> -Section 12<br> -Subsection 09<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09)<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>srt_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ValuationAndQualifyingAccountsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ValuationAndQualifyingAccountsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>srt_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>54
<FILENAME>R35.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259404680">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Summary of Significant Accounting Policies (Policies)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_NatureOfOperationsPolicyTextBlock', window );">Nature of Operations</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Nature of Operations</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cognex Corporation is a leading provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UseOfEstimates', window );">Use of Estimates in the Preparation of Financial Statements</a></td>
<td class="text"><div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Use of Estimates in the Preparation of Financial Statements</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S.&#160;GAAP) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and the disclosure of contingent liabilities as of the balance sheet date, and the reported amounts of revenues and expenses during the year. Actual results could differ from those estimates. Significant estimates and judgments include those related to revenue recognition, investments, inventories, intangible assets, stock-based compensation, income taxes, business acquisitions, and restructuring charges.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConsolidationPolicyTextBlock', window );">Basis of Consolidation</a></td>
<td class="text"><div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Basis of Consolidation</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The consolidated financial statements include the accounts of Cognex Corporation and its subsidiaries, all of which are wholly-owned. All intercompany accounts and transactions have been eliminated.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock', window );">Foreign Currency</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Foreign Currency Translation</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The financial statements of the Company&#8217;s foreign subsidiaries, where the local currency is the functional currency, are translated using exchange rates in effect at the end of the year for assets and liabilities and average exchange rates during the year for results of operations. The resulting foreign currency translation adjustment, net of tax, is included in shareholders&#8217; equity as accumulated other comprehensive loss.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueOfFinancialInstrumentsPolicy', window );">Fair Value Measurements</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Fair Value Measurements</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company applies a three-level valuation hierarchy for fair value measurements. The categorization of assets and liabilities within the valuation hierarchy is based on the lowest level of input that is significant to the measurement of fair value. Level&#160;1 inputs to the valuation methodology utilize unadjusted quoted market prices in active markets for identical assets and liabilities. Level 2 inputs to the valuation methodology are other observable inputs, including quoted market prices for similar assets and liabilities, quoted prices for identical and similar assets and liabilities in markets that are not active, or other inputs that are observable or can be corroborated by observable market data. Level 3 inputs to the valuation methodology are unobservable inputs based on management&#8217;s best estimate of the inputs that market participants would use in pricing the asset or liability at the measurement date, including assumptions about risk. A change to the level of an asset or liability within the fair value hierarchy is determined at the end of a reporting period.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsPolicyTextBlock', window );">Cash, Cash Equivalents, and Investments</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Cash, Cash Equivalents, and Investments</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#8217;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#8217; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#8220;Other income (expense)&#8221; on the Consolidated Statements of </span></div>Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryPolicyTextBlock', window );">Inventories</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Inventories</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventories are stated at the lower of cost and net realizable value. Cost is determined using standard costs, which approximates actual costs under the first-in, first-out (FIFO) method. Net realizable value is the estimated selling price in the ordinary course of business, less reasonably predictable costs of completion, disposal, and transportation.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Purchase price variances are incurred when actual costs are different than standard costs due to favorable or unfavorable market prices. Management applies judgment to recognize purchase price variances in the same period that the associated standard costs of the finished goods that consume these components are sold.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s inventory is subject to technological change or obsolescence. The Company reviews inventory quantities on hand and estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and general economic and industry conditions, and records reserves to reduce the carrying value of inventories to their net realizable value. If actual future demand is less than estimated, additional inventory write-downs would be required.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company generally disposes of obsolete inventory upon determination of obsolescence. The Company does not dispose of excess inventory immediately, due to the possibility that some of this inventory could be sold to customers as a result of differences between actual and forecasted demand. When inventory has been written down below cost, such reduced amount is considered the new cost basis for subsequent accounting purposes. As a result, the Company could recognize a higher than normal gross margin if the reserved inventory were subsequently sold.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock', window );">Property, Plant, and Equipment</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Property, Plant, and Equipment</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property, plant, and equipment are stated at cost and depreciated using the straight-line method over the assets&#8217; estimated useful lives. Buildings&#8217; useful lives are 39 years, building improvements&#8217; useful lives are ten years, and the useful lives of computer hardware and software, manufacturing test equipment, and furniture and fixtures range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad">two</span> to ten years. Leasehold improvements are depreciated over the shorter of the estimated useful lives or the remaining terms of the leases. Maintenance and repairs are expensed when incurred; additions and improvements are capitalized. Upon retirement or disposition, the cost and related accumulated depreciation of the disposed assets are removed from the accounts, with any resulting gain or loss included in current operations.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy', window );">Goodwill</a></td>
<td class="text"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Goodwill</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Goodwill is stated at cost. The Company evaluates the potential impairment of goodwill annually each fourth quarter and whenever events or circumstances indicate the carrying value of the goodwill may not be recoverable. The Company performs a qualitative assessment of goodwill to determine whether further impairment testing is necessary. Factors that management considers in this assessment include general economic and industry conditions, overall financial performance (both current and projected), changes in strategy, changes in the composition or carrying amount of net assets, and market capitalization. If this qualitative assessment indicates that it is more likely than not that the fair value of a reporting unit is less than its carrying value, the Company would proceed to perform a quantitative impairment test. Under this quantitative analysis, the fair value of the reporting unit is compared with its carrying value, including goodwill. If the carrying value exceeds the fair value of the reporting unit, the Company recognizes an impairment charge. The Company estimates the fair value of its reporting unit using the income approach based on a discounted cash flow model. In addition, the Company uses the market approach, which compares the reporting unit to publicly-traded companies and transactions involving </span></div>similar businesses, to support the conclusions based on the income approach.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IntangibleAssetsFiniteLivedPolicy', window );">Intangible Assets</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Intangible Assets</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets are stated at cost and amortized over the assets&#8217; estimated useful lives. Intangible assets are either amortized in relation to the relative cash flows anticipated from the intangible asset or using the straight-line method, depending on facts and circumstances. The useful lives of distribution networks range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e">eleven</span> to twelve years, completed technologies from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c">five</span> to eight years, customer relationships from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467">five</span> to eight years, non-compete agreements from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3">three</span> to seven years, and trademarks two years. In-process technology is an indefinite-lived intangible asset until the technology is completed, at which point it is amortized over its estimated useful life. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company evaluates the potential impairment of intangible assets whenever events or circumstances indicate the carrying value of the assets may not be recoverable. For finite-lived intangible assets that are subject to amortization, the Company follows a two-step process for impairment testing. In step one, known as the recoverability test, the carrying value of the asset is compared to the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset. If the sum of the undiscounted future cash flows is less than the carrying value, the asset is not recoverable and step two is performed. In step two, the impairment charge is measured as the amount by which the carrying value of the asset exceeds its fair value. For indefinite-lived intangible assets that are not subject to amortization, the fair value of the asset is measured and an impairment charge is recorded as the amount by which the carrying value of the asset exceeds its fair value.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StandardProductWarrantyPolicy', window );">Warranty Obligations</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Warranty Obligations</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company warrants its products to be free from defects in material and workmanship for periods primarily ranging from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79">one</span> to three years from the time of sale based on the product being purchased and the terms of the customer arrangement. Warranty obligations are evaluated and recorded at the time of sale since it is probable that customers will make claims under warranties related to products that have been sold and the amount of these claims can be reasonably estimated based on historical costs to fulfill claims. Obligations may also be recorded subsequent to the time of sale whenever specific events or circumstances impacting product quality become known that would not have been taken into account using historical data.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesPolicyTextBlock', window );">Contingencies</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Contingencies</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Loss contingencies are accrued if the loss is probable and the amount of the loss can be reasonably estimated. Legal costs associated with potential loss contingencies are expensed as incurred.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueRecognitionPolicyTextBlock', window );">Revenue Recognition</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Revenue Recognition</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes revenue in accordance with Accounting Standards Codification (ASC) 606, &#8220;Revenue from Contracts with Customers.&#8221; The core principle of ASC 606 is to recognize revenue in a manner that depicts the transfer of promised goods or services to customers in an amount that reflects the consideration to which the Company expects to be entitled in exchange for those goods or services. The framework in support of this core principle includes: (1) identifying the contract with the customer; (2) identifying the performance obligations in the contract; (3) determining the transaction price; (4) allocating the transaction price to the performance obligations; and (5) recognizing revenue when (or as) the performance obligations are satisfied. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Identifying the Contract with the Customer</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company identifies contracts with customers as agreements that create enforceable rights and obligations, which typically take the form of customer contracts or purchase orders. The Company accounts for a contract when it has approval and commitment from both parties, the rights of the parties are identified, payment terms are identified, the contract has commercial substance, and collectability of consideration is probable.</span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Identifying the Performance Obligations in the Contract</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company identifies performance obligations as promises in contracts to transfer distinct goods or services. Standard products and services that the Company regularly sells separately, which customers can benefit from either on their own or with other readily available resources and are distinct within the context of the customer contract, are accounted for as distinct performance obligations. Application-specific customer solutions that are comprised of a combination of products and services are accounted for as one performance obligation to deliver a total solution to the customer. On-site support services that are provided to the customer after the solution is deployed are accounted for as a separate performance obligation. These solutions are provided to customers in a variety of industries, including the consumer electronics and logistics industries. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Shipping and handling activities for which the Company is responsible under the terms and conditions of the sale are not accounted for as performance obligations but as fulfillment costs. These activities are required to fulfill the Company&#8217;s promise to transfer the goods and are expensed when revenue is recognized.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company does not assess whether promised goods or services are performance obligations if they are immaterial in the context of the contract. If revenue is recognized before immaterial promises have been completed, then the costs related to such immaterial promises are accrued at the time of sale.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Determining the Transaction Price</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company determines the transaction price as the amount of consideration it expects to receive in exchange for transferring promised goods or services to the customer. Amounts collected from customers for sales taxes are excluded from the transaction price. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">If a contract includes a variable amount, such as a rebate, then the Company estimates the transaction price using either the expected value or the most likely amount of consideration to be received, depending on the specific facts and circumstances. The Company includes estimated variable consideration in the transaction price only to the extent it is probable that a significant reversal of revenue will not occur when the uncertainty is resolved. The Company updates its estimate of variable consideration at the end of each reporting period to reflect changes in facts and circumstances.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company does not grant customers the explicit right to return product. However, from time to time, the Company may allow a customer to return a product. As a practical expedient, the Company estimates the transaction price using the expected value based on its history of return experience using a portfolio approach in which the Company&#8217;s total revenue is reduced by an estimate of total customer returns. Management reasonably expects that the effect of applying a portfolio approach to a group of contracts would not differ materially from considering each contract separately.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Allocating the Transaction Price to the Performance Obligations</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company allocates the transaction price to each performance obligation at contract inception based on a relative stand-alone selling price basis, or the price at which the Company would sell the good or service separately to similar customers in similar circumstances.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Recognizing Revenue When (or As) the Performance Obligations are Satisfied</span></div><div style="margin-top:3pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes revenue when it transfers the promised goods or services to the customer. Revenue for standard products is recognized at the point in time when the customer obtains control of the goods, which is typically upon delivery when the customer has legal title, physical possession, the risks and rewards of ownership, and an enforceable obligation to pay for the products. Revenue for services, which are not material, is typically recognized over the time the service is provided. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Revenue for application-specific customer solutions is recognized at the point in time when the solution is validated, which is the point in time when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligations in the arrangement. Although the customer may have taken legal title and physical possession of the goods when they arrived at the customer&#8217;s </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">designated site, the significant risks and rewards of ownership transfer to the customer only upon validation. Revenue for on-site support services related to these solutions is recognized over the time the service is provided. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">In certain instances, an arrangement may include customer-specified acceptance provisions or performance guarantees that allow the customer to accept or reject delivered products that do not meet the customer&#8217;s specifications. If the Company can objectively determine that control of a good or service has been transferred to the customer in accordance with the agreed-upon specifications in the contract, then customer acceptance is a formality. If acceptance provisions are presumed to be substantive, then revenue is deferred until customer acceptance. </span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">For the Company&#8217;s standard products and services, revenue recognition and billing typically occur at the same time. For application-specific customer solutions, however, the agreement with the customer may provide for billing terms which differ from revenue recognition criteria, resulting in either deferred revenue or unbilled revenue. Credit assessments are performed to determine payment terms, which vary by region, industry, and customer. Prepayment terms result in contract liabilities for customer deposits. When credit is granted to customers, payment is typically due 30 to 90 days from billing. The Company's contracts have an original expected duration of less than one year, and therefore as a practical expedient, the Company has elected to ignore the impact of the time value of money on a contract and to expense sales commissions. The Company recognizes an asset for costs to fulfill a contract if the costs relate directly to the contract and to future performance, and the costs are expected to be recovered. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management exercises judgment when determining the amount of revenue to be recognized each period. Such judgments include, but are not limited to, assessing the customer&#8217;s ability and intention to pay substantially all of the contract consideration when due, determining when two or more contracts should be combined and accounted for as a single contract, determining whether a contract modification has occurred, assessing whether promises are immaterial in the context of the contract, determining whether material promises in a contract represent distinct performance obligations, estimating the transaction price for a contract that contains variable consideration, determining the stand-alone selling price of each performance obligation, determining whether control is transferred over time or at a point in time for performance obligations, and assessing whether formal customer acceptance provisions are substantive.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock', window );">Research and Development</a></td>
<td class="text">Research and DevelopmentResearch and development costs primarily include personnel-related costs, prototyping materials, and outside services. Research and development costs are expensed when incurred until technological feasibility has been established for the product. Thereafter, all software costs may be capitalized until the product is available for general release to customers. The Company determines technological feasibility at the time the product reaches beta in its stage of development. Historically, the time incurred between beta and general release to customers has been short, and therefore, the costs have been insignificant.<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdvertisingCostsPolicyTextBlock', window );">Advertising Costs</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Advertising Costs</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Advertising costs are expensed as incurred and totaled $1,965,000 in 2021, $1,443,000 in 2020, and $1,385,000 in 2019.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy', window );">Stock-Based Compensation</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Stock-Based Compensation</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company&#8217;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). The Company has reserved a specific number of shares of its authorized but unissued shares for issuance upon the exercise of stock options or the settlement of RSUs. When a stock option is exercised or an RSU is settled, the Company issues new shares from this pool. The fair values of stock options are estimated on the grant date using a binomial lattice model. Management is responsible for determining the appropriate valuation model and estimating these fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor and the observable market price of the Company's common stock on the grant date. The fair value of RSUs is determined based on the observable market price of the Company's common stock on the grant date less the present value of expected future dividends. When determining the grant-date fair value of stock-based awards, management further considers whether an adjustment is required to the observable market price or volatility of the Company's common stock that is used in the valuation as a result of material non-public information, if that information is expected to result in a material increase in share price.</span></div><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes compensation expense related to stock-based awards using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting </span></div>portion of the stock option or RSU as if the award was, in substance, multiple awards. The amount of compensation expense recognized at the end of the vesting period is based on the number of awards for which the requisite service has been completed. No compensation expense is recognized for awards that are forfeited for which the employee does not render the requisite service. The term &#8220;forfeitures&#8221; is distinct from &#8220;expirations&#8221; and represents only the unvested portion of the surrendered award. The Company applies estimated forfeiture rates to its unvested awards to arrive at the amount of compensation expense that is expected to be recognized over the requisite service period. At the end of each separately vesting portion of an award, the expense that was recognized by applying the estimated forfeiture rate is compared to the expense that should be recognized based on the employee&#8217;s service, and an increase or decrease to compensation expense is recorded to true up the final expense.<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxPolicyTextBlock', window );">Taxes</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Taxes</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recognizes a tax position in its financial statements when that tax position, based solely upon its technical merits, is more likely than not to be sustained upon examination by the relevant taxing authority. Those tax positions failing to qualify for initial recognition are recognized in the first interim period in which they meet the more likely than not standard, or are resolved through negotiation or litigation with the taxing authority, or upon expiration of the statutes of limitations. Derecognition of a tax position that was previously recognized occurs when an entity subsequently determines that a tax position no longer meets the more likely than not threshold of being sustained.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Only the portion of the liability that is expected to be paid within one year is classified as a current liability. As a result, liabilities expected to be resolved without the payment of cash (e.g., resolution due to the expiration of the statutes of limitations) or are not expected to be paid within one year are not classified as current. It is the Company&#8217;s policy to record estimated interest and penalties as income tax expense and tax credits as a reduction in income tax expense.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred tax assets and liabilities are determined based on the differences between the financial statement and tax bases of assets and liabilities as measured by the enacted tax rates that will be in effect when these differences reverse. Valuation allowances are provided if, based on the weight of available evidence, it is more likely than not that some or all of the deferred tax assets will not be realized.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Tax Cuts and Jobs Act of 2017 imposed a minimum tax on foreign earnings related to intangible assets, known as the Global Intangible Low-Taxed Income (GILTI) tax. In 2019, the Company elected to account for the impact of the GILTI minimum tax in deferred taxes, a change from the Company&#8217;s initial election made in 2018 whereby the GILTI minimum tax was included in income tax expense as incurred on an annual basis. The change is considered preferable, as it appropriately matches the Company&#8217;s current and deferred income tax implications.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sales tax in the United States and similar taxes in other jurisdictions that are collected from customers and remitted to government authorities are presented on a gross basis (i.e., a receivable from the customer with a corresponding payable to the government). Amounts collected from customers and retained by the Company during tax holidays are recognized as non-operating income when earned.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerSharePolicyTextBlock', window );">Net Income Per Share</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Net Income Per Share</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Basic net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period. Diluted net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period plus potential dilutive common shares. Dilutive common equivalent shares consist of stock options and restricted stock units and are calculated using the treasury stock method. Common equivalent shares do not qualify as participating securities. In periods where the Company records a net loss, potential common stock equivalents are not included in the calculation of diluted net loss per share as their effect would be anti-dilutive.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock', window );">Comprehensive Income</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Comprehensive Income</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Comprehensive income is defined as the change in equity of a company during a period from transactions and other events and circumstances, excluding transactions resulting from investments by owners and distributions to owners. Accumulated other comprehensive loss, net of tax, consists of foreign currency translation adjustment losses of $43,665,000 and $36,912,000, as of December 31, 2021 and December 31, 2020, respectively; net unrealized losses on available-for-sale investments of $3,006,000 as of December 31, 2021, and net unrealized gains on available-for-sale investments of $4,382,000 as of December 31, 2020; and losses on currency swaps, net of gains on long-term intercompany loans of $1,271,000 at each year end.</span></div>Amounts reclassified from accumulated other comprehensive loss, net of tax, to investment income on the Consolidated Statements of Operations were net realized gains of $236,000, $4,119,000, and $1,452,000 for 2021, 2020, and 2019, respectively.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock', window );">Concentrations of Risk</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Concentrations of Risk</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Financial instruments that potentially subject the Company to concentrations of credit risk consist primarily of cash, cash equivalents, investments, and accounts receivable. The Company has certain domestic and foreign cash balances that exceed the insured limits set by the Federal Deposit Insurance Corporation (FDIC) in the United States and equivalent regulatory agencies in foreign countries. The Company primarily invests in investment-grade debt securities and has established guidelines relative to credit ratings, diversification, and maturities of its debt securities that maintain safety and liquidity. The Company has historically not experienced any significant realized losses on its debt securities.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A single customer accounted for 17% of total revenue in 2021 and 15% of total accounts receivable as of December 31, 2021. Accounts receivable from a second customer accounted for 11% of total accounts receivable as of December 31, 2021. The Company performs ongoing credit evaluations of its customers and maintains allowances for potential credit losses. The Company has historically not experienced any significant losses related to the collection of its accounts receivable.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A significant portion of the Company's products is presently manufactured by a third-party contractor located in Indonesia. This contract manufacturer has agreed to provide the Company with termination notification periods and last-time-buy rights, if and when that may be applicable. Our contract manufacturer's challenges in obtaining components and maintaining production have resulted in delays, and may continue to result in delays, in meeting our delivery schedules that, as a result, delay deliveries to our customers past their requested delivery date. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain key electronic and mechanical components, such as integrated circuit chips, are fundamental to the design of Cognex products. Due to the impact of the COVID-19 pandemic or other factors, we have experienced, and may continue to experience, disruptions to the supply of components for our products that have resulted, and may continue to result, in higher purchase costs, delivery costs, and manufacturing delays.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company sources components from preferred vendors that are selected based on price and performance considerations. In the event of a supply disruption from a preferred vendor, these components may typically be purchased from alternative vendors, which may result in higher purchase costs and manufacturing delays based on the time required to identify and obtain sufficient quantities from an alternative source.</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;font-weight:400;line-height:120%"> </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain of the Company&#8217;s products utilize components that are available from only one source. If we are unable to secure adequate supply from these sources, we may have to redesign our products, which may lead to higher costs, delays in manufacturing, and possible loss of sales.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativesPolicyTextBlock', window );">Derivative Instruments</a></td>
<td class="text">Derivative InstrumentsDerivative instruments are recorded on the Consolidated Balance Sheets at fair value. Changes in the fair value of the Company&#8217;s economic hedges utilizing foreign currency forward contracts are included in "Foreign currency gain (loss)" on the Consolidated Statements of Operations. The Company recognizes all derivative instruments as either current assets or current liabilities at fair value on the Consolidated Balance Sheets. When the Company is engaged in more than one outstanding derivative contract with the same counterparty and also has a legally enforceable master netting agreement with that counterparty, the &#8220;net&#8221; mark-to-market exposure represents the netting of the positive and negative exposures with that counterparty. The cash flows from derivative instruments are presented in the same category on the Consolidated Statements of Cash Flows as the category for the cash flows from the hedged item. Generally, this accounting policy election results in cash flows related to derivative instruments being classified as an operating activity on the Consolidated Statements of Cash Flows.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationsPolicy', window );">Business Combinations</a></td>
<td class="text">Business AcquisitionsThe Company determines whether a transaction qualifies as a business combination by applying the definition of a business, which requires the assets acquired and liabilities assumed to be inputs and processes that have the ability to contribute to the creation of outputs. The Company accounts for business combinations under the acquisition method of accounting, which requires the following steps: (1) identifying the acquirer, (2) determining the acquisition date, (3) recognizing and measuring the identifiable assets acquired and the liabilities assumed, and (4) recognizing and measuring goodwill. The Company measures the identifiable assets acquired and liabilities assumed at their estimated fair values as of the acquisition date. Management is responsible for determining the appropriate valuation model and estimated fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor. Management primarily establishes fair value using the income approach based on a discounted cash flow model. The income approach requires the use of many assumptions and estimates including future revenues and expenses, as well as discount factors. Contingent consideration liabilities are reported at their estimated fair values based on probability-adjusted present values of the consideration expected to be paid, using significant inputs and estimates. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain milestones and discount rates consistent with the level of risk of achievement. The fair values of these contingent consideration liabilities are remeasured each reporting period with changes in fair value included in "Other income (expense)" on the Consolidated Statements of Operations. Goodwill is recognized as of the acquisition date as the excess of the consideration transferred over the net amount of assets acquired and liabilities assumed. Transaction costs are expensed as incurred.<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InvestmentPolicyTextBlock', window );">Investment, Policy</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Cash, Cash Equivalents, and Investments</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#8217;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#8217; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#8220;Other income (expense)&#8221; on the Consolidated Statements of </span></div>Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeLeasesPolicyTextBlock', window );">Lessee, Leases</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Leases</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">At inception of a contract, the Company determines whether that contract is or contains a lease by assessing whether there is an identified asset and whether the contract conveys the right to control the use of the identified asset for a period of time in exchange for consideration. The Company has control of the asset if it has the right to direct the use of the asset and obtains substantially all of the economic benefits from the use of the asset throughout the period of use.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">As a practical expedient, the Company does not recognize a lease asset or lease liability for leases with a lease term of 12 months or less. In the determination of the lease term, the Company considers the existence of extension or termination options and the probability of those options being exercised.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Lease contracts may include lease components and non-lease components, such as common area maintenance and utilities for property leases. As a practical expedient, the Company accounts for the non-lease components together with the lease components as a single lease component for all of its leases.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company classifies a lease as a finance lease when it meets any of the following criteria at the lease commencement date: (1) the lease transfers ownership of the underlying asset to the Company by the end of the lease term; (2) the lease grants the Company an option to purchase the underlying asset that the Company is reasonably certain to exercise; (3) the lease term is for the major part of the remaining economic life of the underlying asset (the Company considers a major part to be 75% or more of the remaining economic life of the underlying asset); (4) the present value of the sum of the lease payments and any residual value guaranteed by the Company equals or exceeds substantially all of the fair value of the underlying asset (the Company considers substantially all the fair value to be 90% or more of the fair value of the underlying asset amount); or (5) the underlying asset is of such a specialized nature that it is expected to have no alternative use to the lessor at the end of the lease term. When none of the criteria above are met, the Company classifies the lease as an operating lease.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On the lease commencement date, the Company records a lease asset and lease liability on the balance sheet. The lease asset consists of: (1) the amount of the initial lease liability; (2) any lease payments made to the lessor at or before the lease commencement date, minus any lease incentives received; and (3) any initial direct cost incurred by the Company. Initial direct costs are incremental costs of a lease that would not have been incurred if the lease had not been obtained and are capitalized as part of the lease asset. The lease liability equals the present value of the future cash payments discounted using the Company's incremental borrowing rate. The Company&#8217;s incremental borrowing rate is the rate of interest that the Company would have to pay to borrow an amount equal to the lease payments over a similar term, which is the three-month London Interbank Offered Rate (LIBOR) plus a 2% credit risk spread.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Operating lease expense equals the total cash payments recognized on a straight-line basis over the lease term. The amortization of the lease asset is calculated as the straight-line lease expense less the accretion of the interest on the lease liability each period. The lease liability is reduced by the cash payment less the interest each period.</span></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InternalUseSoftwarePolicy', window );">Internal Use Software, Policy</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Internal-use Software</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Internal-use software is software acquired, internally developed, or modified solely to meet the Company's internal needs, and during the software's development, no substantive plan exists to sell the software. The accounting treatment for computer software developed for internal use depends on the nature of activities performed at each stage of development. The preliminary project stage includes conceptual formulation of design alternatives, determination of system requirements, vendor demonstrations, and final selection of vendors, and during this stage costs are expensed as incurred. The application development stage includes software configuration, coding, hardware installation, and testing. During this stage, certain costs are capitalized, including external direct costs of materials and services, as well as payroll and payroll-related costs for employees who are directly associated with the project, while certain costs are expensed as incurred, including training and data conversion costs. The post-implementation stage includes support and maintenance, and during this stage costs are expensed as incurred.</span></div>Capitalization begins when both the preliminary project stage is completed and management commits to funding the project. Capitalization ceases at the point the project is substantially complete and ready for its intended use, that is, after all substantial testing is completed. Costs of specified upgrades and enhancements to internal-use software are capitalized if it is probable that those expenditures result in additional functionality. Capitalized costs are amortized on a straight-line basis over the estimated useful life.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy', window );">Costs Associated with Exit or Disposal Activity or Restructuring</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Restructuring Charges</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">One-time employee termination benefits as part of a restructuring activity exist at the date the plan of termination has been communicated to employees (the &#8220;communication date&#8221;) and meets all of the following criteria: (1) management, having the authority to approve the action, has committed to the plan of termination, (2) the plan identifies the number of employees to be terminated, their job classifications or functions and their locations, and the expected completion date, (3) the plan establishes the terms of the benefit arrangement in sufficient detail, and (4) actions required to complete the plan indicate it is unlikely that significant changes to the plan will be made. If employees are not required to render service until they are terminated in order to receive the termination benefits or will not be retained to render service beyond a minimum retention period, a liability for the termination benefits is recognized and measured at fair value at the communication date. Otherwise, a liability is measured initially at the communication date based on the fair value of the liability as of the termination date and recognized ratably over the future service period. Changes to the fair value of the liability are recorded as restructuring adjustments. </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Closures of leased offices as part of a restructuring activity prior to the end of the contractual lease term are treated as abandoned right-to-use assets when the Company ceases to use the property for economic benefit and lacks either the intent or ability to sublease. The lease asset is written down to zero as of the abandonment date. Estimates of contract termination costs assume the Company will be obligated to pay the remaining rent over the contract period, and the lease liability continues to be recorded on the balance sheet. Subsequent negotiations that result in early contract terminations are recorded as favorable restructuring adjustments.</span></div>Other associated costs as part of a restructuring activity include costs to consolidate facilities, costs to relocate employees, and legal fees incurred to research local statutory requirements and prepare termination agreements. These costs are recognized in the period in which the liability is incurred, which generally corresponds to the period in which the services are rendered.<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TradeAndOtherAccountsReceivablePolicy', window );">Accounts Receivable</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounts Receivable</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company extends credit with various payment terms to customers based on an evaluation of their financial condition. Accounts that are outstanding longer than the payment terms are considered to be past due. The Company establishes an allowance against accounts receivable for credit losses when it determines receivables are at risk for collection based on the length of time the receivable has been outstanding, the customer&#8217;s current ability to pay its obligations to the Company, and general economic and industry conditions, as well as various other factors. Receivables are written off against this allowance in the period they are determined to be uncollectible and payments subsequently received on previously written-off receivables are recorded as a recovery of the credit loss. Credit losses and recoveries related to accounts receivable are included in "Selling, general, and administrative expenses" on the Consolidated Statements of Operations.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Concentrations of Risk.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_NatureOfOperationsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Nature of Operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_NatureOfOperationsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdvertisingCostsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for advertising cost.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 720<br> -SubTopic 35<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=6420018&amp;loc=d3e36677-107848<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdvertisingCostsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationsPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for completed business combinations (purchase method, acquisition method or combination of entities under common control). This accounting policy may include a general discussion of the purchase method or acquisition method of accounting (including for example, the treatment accorded contingent consideration, the identification of assets and liabilities, the purchase price allocation process, how the fair values of acquired assets and liabilities are determined) and the entity's specific application thereof. An entity that acquires another entity in a leveraged buyout transaction generally discloses the accounting policy followed by the acquiring entity in determining the basis used to value its interest in the acquired entity, and the rationale for that accounting policy.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 10<br> -Section 05<br> -Paragraph 4<br> -Subparagraph (a)-(d)<br> -URI http://asc.fasb.org/extlink&amp;oid=6909625&amp;loc=d3e227-128457<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123431023&amp;loc=d3e4273-108586<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for commitments and contingencies, which may include policies for recognizing and measuring loss and gain contingencies.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123368208&amp;loc=d3e12565-110249<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 954<br> -SubTopic 450<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6491354&amp;loc=d3e6049-115624<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for comprehensive income.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ComprehensiveIncomePolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConsolidationPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy regarding (1) the principles it follows in consolidating or combining the separate financial statements, including the principles followed in determining the inclusion or exclusion of subsidiaries or other entities in the consolidated or combined financial statements and (2) its treatment of interests (for example, common stock, a partnership interest or other means of exerting influence) in other entities, for example consolidation or use of the equity or cost methods of accounting.  The accounting policy may also address the accounting treatment for intercompany accounts and transactions, noncontrolling interest, and the income statement treatment in consolidation for issuances of stock by a subsidiary.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123372394&amp;loc=d3e18823-107790<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=109239629&amp;loc=d3e5614-111684<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConsolidationPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for cost associated with exit or disposal activity or restructuring. Excludes entity newly acquired in business combination and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 5.P.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 5.P.3,4)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativesPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for its derivative instruments and hedging activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=d3e41620-113959<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=d3e41638-113959<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5579245-113959<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=d3e41675-113959<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(n))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5579240-113959<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerSharePolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for computing basic and diluted earnings or loss per share for each class of common stock and participating security. Addresses all significant policy factors, including any antidilutive items that have been excluded from the computation and takes into account stock dividends, splits and reverse splits that occur after the balance sheet date of the latest reporting period but before the issuance of the financial statements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3630-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerSharePolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueOfFinancialInstrumentsPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for determining the fair value of financial instruments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 60<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=7493716&amp;loc=d3e21868-110260<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13279-108611<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueOfFinancialInstrumentsPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -URI http://asc.fasb.org/topic&amp;trid=2175825<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e32247-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32847-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 19<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32840-109319<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL116659661-227067<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=d3e32280-109318<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 17<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32809-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IntangibleAssetsFiniteLivedPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for finite-lived intangible assets. This accounting policy also might address: (1) the amortization method used; (2) the useful lives of such assets; and (3) how the entity assesses and measures impairment of such assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120154696&amp;loc=d3e54445-107959<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 920<br> -SubTopic 350<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=120155617&amp;loc=SL120155638-234783<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123372394&amp;loc=d3e18823-107790<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 920<br> -SubTopic 350<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=120155617&amp;loc=SL120155628-234783<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 920<br> -SubTopic 350<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120155617&amp;loc=SL120155628-234783<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IntangibleAssetsFiniteLivedPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InternalUseSoftwarePolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for costs incurred when both (1) the software is acquired, internally developed, or modified solely to meet the entity's internal needs, and (2) during the software's development or modification, no substantive plan exists or is being developed to market the software externally.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 40<br> -Section 30<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=118172244&amp;loc=d3e17916-109280<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 50<br> -Section 25<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=16397303&amp;loc=d3e19379-109286<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InternalUseSoftwarePolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=116847112&amp;loc=d3e4556-108314<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 912<br> -SubTopic 330<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6471895&amp;loc=d3e55923-109411<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=116847112&amp;loc=d3e4492-108314<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 270<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124437754&amp;loc=d3e543-108305<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -URI http://asc.fasb.org/topic&amp;trid=2126998<br><br>Reference 7: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123372394&amp;loc=d3e18823-107790<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for investment in financial asset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(3)(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeLeasesPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for leasing arrangement entered into by lessee.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918666-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeLeasesPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=d3e99779-112916<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.13(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 958<br> -SubTopic 360<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=120429125&amp;loc=d3e99893-112916<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for its research and development and computer software activities including the accounting treatment for costs incurred for (1) research and development activities, (2) development of computer software for internal use, (3) computer software to be sold, leased or otherwise marketed as a separate product or as part of a product or process and (4) in-process research and development acquired in a purchase business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 50<br> -Section 25<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=16397303&amp;loc=d3e19347-109286<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 985<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6501960&amp;loc=d3e128462-111756<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 40<br> -Section 30<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=118172244&amp;loc=d3e17916-109280<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.15)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueRecognitionPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for revenue. Includes revenue from contract with customer and from other sources.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=123372394&amp;loc=d3e18823-107790<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123372394&amp;loc=d3e18823-107790<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueRecognitionPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for award under share-based payment arrangement. Includes, but is not limited to, methodology and assumption used in measuring cost.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b),(f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5047-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StandardProductWarrantyPolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for standard warranties including the methodology for measuring the liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123368208&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StandardProductWarrantyPolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TradeAndOtherAccountsReceivablePolicy">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for accounts receivable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=d3e4975-111524<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=d3e5212-111524<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11B<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=SL6953423-111524<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=d3e5093-111524<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=d3e5033-111524<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=84159169&amp;loc=d3e10133-111534<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TradeAndOtherAccountsReceivablePolicy</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UseOfEstimates">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6191-108592<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6161-108592<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6143-108592<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6061-108592<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6132-108592<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e5967-108592<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UseOfEstimates</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>55
<FILENAME>R36.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259119800">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>New Pronouncements (Policies)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountingChangesAndErrorCorrectionsAbstract', window );"><strong>Accounting Changes and Error Corrections [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock', window );">New Accounting Pronouncements, Policy</a></td>
<td class="text">New Pronouncements<div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2019-12, "Simplifying the Accounting for Income Taxes"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU eliminate certain exceptions related to the approach for intraperiod tax allocation, the methodology for calculating income taxes in an interim period, and the recognition of deferred tax liabilities for outside basis differences. They also clarify and simplify other aspects of the accounting for income taxes. The Company adopted ASU 2019-12 on January 1, 2021. Upon adoption, ASU 2019-12 did not have a material impact on the Company's consolidated financial statements and disclosures.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2020-08, "Codification Improvements to Subtopic 310-20, Receivables - Nonrefundable Fees and Other Costs"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU clarify that for each reporting period, for callable debt with multiple call dates and call prices that may change at each call date, to the extent that the amortized cost basis of an individual callable debt security exceeds the amount repayable by the issuer at the next call date, the excess is amortized to the next call date. The Company adopted ASU 2020-08 on January 1, 2021. Upon adoption, ASU 2020-08 did not have a material impact on the Company's consolidated financial statements and disclosures.</span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2020-04, "Reference Rate Reform (Topic 848): Facilitation of the Effects of Reference Rate Reform on Financial Reporting" and (ASU) 2021-01, "Reference Rate Reform (Topic 848): Scope"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in these ASUs apply to all entities that have contracts, hedging relationships, and other transactions that reference LIBOR or another reference rate expected to be discontinued because of reference rate reform. Together, the ASUs provide optional expedients and exceptions for applying generally accepted accounting principles (GAAP) to contracts, hedging relationships, and other transactions affected by reference rate reform if certain criteria are met. The expedients and exceptions provided by the amendments do not apply to contract modifications made and hedging relationships entered into or evaluated after December 31, 2022, except for hedging relationships existing as of December 31, 2022 that an entity has elected certain optional expedients for and that are retained through the end of the hedging relationship. The amendments in these ASUs are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 or ASU 2021-01 to have a material impact on the Company's consolidated financial statements and disclosures.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Accounting Standards Update (ASU) 2021-08, "Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers"</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The amendments in this ASU primarily address the accounting for contract assets and contract liabilities related to revenue contracts with customers in a business combination. The ASU clarifies that an acquirer should account for the related revenue contracts in accordance with Accounting Standards Codification 606 as if the acquirer had originated the contracts. The amendments in this ASU are effective for fiscal years beginning after December 15, 2022, including interim periods within those fiscal years, although early adoption is permitted. The amendments in the ASU should be applied prospectively to business combinations occurring on or after the effective date of the amendments. The expected financial statement impact of this new accounting standard cannot be reasonably estimated at this time, as the impact in future periods will depend on the contract assets and contract liabilities acquired in future business combinations. Management does not expect this ASU to have a material impact on the Company's disclosures.</span></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingChangesAndErrorCorrectionsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingChangesAndErrorCorrectionsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>56
<FILENAME>R37.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254715384">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Fair Value Measurements (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueDisclosuresAbstract', window );"><strong>Fair Value Disclosures [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock', window );">Assets and Liabilities Measured at Fair Value on a Recurring Basis</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:93.421%"><tr><td style="width:1.0%"/><td style="width:50.386%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.549%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.582%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.549%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.582%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.552%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Quoted&#160;Prices&#160;in<br/>Active Markets<br/>for Identical<br/>Assets (Level&#160;1)</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Significant&#160;Other<br/>Observable<br/>Inputs (Level&#160;2)</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unobservable Inputs                       (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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Money market instruments</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">537&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">554,306&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">81,595&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58,665&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,879&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,639&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</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:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">39&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Liabilities:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">230&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock', window );">Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation</a></td>
<td class="text"><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the activity for the Company's liabilities measured at fair value using Level 3 inputs (in thousands):</span></div><div style="margin-top:11pt;text-align:justify"><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 style="width:85.303%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.497%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,153&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fair value adjustment to Chiaro contingent consideration</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(114)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Payment of Chiaro contingent consideration</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,039)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueDisclosuresAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueDisclosuresAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the fair value measurement of liabilities using significant unobservable inputs (Level 3), a reconciliation of the beginning and ending balances, separately presenting changes attributable to the following: (1) total gains or losses for the period (realized and unrealized), segregating those gains or losses included in earnings (or changes in net assets), and gains or losses recognized in other comprehensive income (loss) and a description of where those gains or losses included in earnings (or changes in net assets) are reported in the statement of income (or activities); (2) purchases, sales, issues, and settlements (each type disclosed separately); and (3) transfers in and transfers out of Level 3 (for example, transfers due to changes in the observability of significant inputs) by class of liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19279-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of assets and liabilities, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>57
<FILENAME>R38.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259404872">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cash, Cash Equivalents, and Investments (Tables)<br></strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAbstract', window );"><strong>Cash and Cash Equivalents [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock', window );">Components of Cash, Cash Equivalents and Investments</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Cash, cash equivalents, and investments consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:65.175%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.322%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.470%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">185,624</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">266,609&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Money market instruments</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">537</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,464&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash and cash equivalents</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">186,161</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">269,073&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">73,088</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">32,714&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">37,655</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">25,160&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">18,912</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">35,403&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">4,998</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,303&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2,802</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,660&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current investments</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">137,455</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">103,240&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">481,218</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">203,428&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">43,940</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">67,058&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39,753</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">96,458&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">16,077</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">19,006&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2,119</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,440&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">641</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,735&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current investments</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">583,748</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">395,125&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">907,364</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">767,438&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock', window );">Summary of Available-for-Sale Investments</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the Company&#8217;s available-for-sale investments as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:36.583%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.002%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.709%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.002%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.005%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Amortized<br/>Cost</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Unrealized<br/>Gains</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Unrealized<br/>Losses</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">72,863&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">251&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(26)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,088&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,568&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">112&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(25)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,655&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,864&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">51&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(3)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,912&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,029&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(32)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,998&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,800&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,802&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">485,140&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">555&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4,477)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">481,218&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">44,197&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">45&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(302)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">43,940&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">39,740&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">46&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(33)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">39,753&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,128&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(51)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,077&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,141&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(22)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">635&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">641&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">725,105</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,069</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(4,971)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">721,203</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr></table></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock', window );">Gross Unrealized Losses and Fair Value for Available-for-Sale Investments</a></td>
<td class="text"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:34.289%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.032%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.032%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.032%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.885%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.032%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.328%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Loss<br/>Position For Less than<br/>12 Months</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized Loss<br/>Position For Greater than<br/>12 Months</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Unrealized<br/>Losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">431,652&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4,470)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,110&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(33)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">434,762&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4,503)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,980&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(317)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">806&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(10)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">51,786&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(327)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">25,040&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(36)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">25,040&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(36)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency Bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,077&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(51)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,077&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(51)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,892&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(32)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,892&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(32)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(22)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(22)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">525,868</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(4,896)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,808</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(75)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">533,676</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(4,971)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock', window );">Debt Securities, Available-for-sale, Allowance for Credit Loss</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes changes in the allowance for credit losses (in thousands):</span></div><div style="margin-top:9pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"><tr><td style="width:1.0%"/><td style="width:79.341%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:18.459%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">160&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Decreases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(160)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr></table></div><span></span>
</td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes changes in the allowance for credit losses (in thousands):</span></div><div style="margin-top:9pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"><tr><td style="width:1.0%"/><td style="width:79.341%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:18.459%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">160&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Decreases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(160)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock', window );">Effective Maturity Dates of Available-for-Sale Investments</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the effective maturity dates of the Company&#8217;s available-for-sale investments as of December&#160;31, 2021 (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:34.876%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.206%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.913%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:8.297%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:7.857%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:7.857%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td style="width:1.0%"/><td style="width:9.624%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">&lt;1&#160;Year</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">1-2&#160;Years</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2-3&#160;Years</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">3-4&#160;Years</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">4-5&#160;Years</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Corporate bonds</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,088&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">205,331&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">175,992&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">64,356&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">35,539&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">554,306&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Asset-backed 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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37,655&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">23,370&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,668&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,092&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,810&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">81,595&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Treasury bills</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,912&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">39,753&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58,665&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Agency bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,802&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">16,077&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18,879&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Municipal bonds</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,998&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">641&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,639&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sovereign bonds</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,052&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,067&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,119&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">137,455</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">285,172</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">181,712</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">73,515</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">43,349</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">721,203</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Components of cash cash equivalents and investments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of allowance for credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922900-210455<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of maturities of an entity's investments as well as any other information pertinent to the investments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the reconciliation of available-for-sale securities from cost basis to fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>For all investments in an unrealized loss position, including those for which other-than-temporary impairments have not been recognized in earnings (including investments for which a portion of an other-than-temporary impairment has been recognized in other comprehensive income), a tabular disclosure of the aggregate related fair value of investments with unrealized losses and the aggregate amount of unrealized losses (that is, the amount by which amortized cost basis exceeds fair value).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27290-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>58
<FILENAME>R39.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259254536">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Inventories (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryDisclosureAbstract', window );"><strong>Inventory Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock', window );">Inventories</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Inventories consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:70.935%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.516%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.517%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><div><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></div></td><td colspan="9" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Raw materials</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">50,452</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">26,800&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Work-in-process</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,293</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,780&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Finished goods</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">57,357</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">29,250&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">113,102</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">60,830&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfInventoryCurrentTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(c))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfInventoryCurrentTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>59
<FILENAME>R40.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259633448">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Property, Plant, and Equipment (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentAbstract', window );"><strong>Property, Plant and Equipment [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentTextBlock', window );">Property, Plant, and Equipment</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Property, plant, and equipment consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:70.935%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.516%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.517%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Land</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">3,951</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,951&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Buildings</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">24,533</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">24,533&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Building improvements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">47,886</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">45,978&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Leasehold improvements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">10,436</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">12,682&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Computer hardware and software</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">50,748</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58,162&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Manufacturing test equipment</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">30,562</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">29,816&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Furniture and fixtures</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">6,449</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,372&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">174,565</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">181,494&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Less: accumulated depreciation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(97,019)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(102,321)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">77,546</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">79,173&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>60
<FILENAME>R41.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259336296">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Leases (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LeasesAbstract', window );"><strong>Leases [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock', window );">Schedule of lease payments</a></td>
<td class="text"><div style="margin-top:9pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Future operating lease cash payments are as follows (in thousands):</span></div><div style="margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:82.648%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:2.728%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.224%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline">Year Ended December&#160;31,</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Amount </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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,508&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,883&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,842&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,081&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2026</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,346&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Thereafter</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,069&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">27,729</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeasesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeasesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>61
<FILENAME>R42.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259190600">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Goodwill (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract', window );"><strong>Goodwill and Intangible Assets Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfGoodwillTextBlock', window );">Changes in the Carrying Value of Goodwill</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the carrying value of goodwill were as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:83.380%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.688%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">243,445&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Sualab Co., Ltd. purchase price adjustment (refer to Note 21)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,004)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,637&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">244,078&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;&#160;Foreign exchange rate changes</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2,365)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">241,713</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfGoodwillTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13854-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfGoodwillTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>62
<FILENAME>R43.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259284744">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Intangible Assets (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract', window );"><strong>Goodwill and Intangible Assets Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock', window );">Amortized Intangible Assets</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Intangible assets consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:51.176%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.318%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.318%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.320%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Value</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Accumulated<br/>Amortization</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Net<br/>Carrying<br/>Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Distribution networks</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">38,060</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">38,060</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Completed technologies</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">24,217</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">15,234</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">8,983</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">10,578</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,891</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2,687</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-compete agreements</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">710</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">492</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">218</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Trademarks</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">110</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">110</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">73,675</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">61,787</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">11,888</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr style="height:9pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Gross<br/>Carrying<br/>Value</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Accumulated<br/>Amortization</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Net<br/>Carrying<br/>Value</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Distribution networks</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38,060&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38,060&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Completed technologies</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">24,217&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">12,397&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">11,820&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10,578&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,160&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,418&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-compete agreements</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">710&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">436&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">274&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Trademarks</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">110&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">67&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">43&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,675&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58,120&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,555&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock', window );">Estimated Amortization Expense Succeeding Fiscal Years</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Estimated amortization expense for each of the five succeeding fiscal years and thereafter is as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:81.623%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.445%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline">Year Ended December&#160;31,</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2022</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,275&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2023</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,594&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2024</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,080&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2025</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,757&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2026</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,452&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Thereafter</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">730&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">11,888</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of assets, excluding financial assets and goodwill, lacking physical substance with a finite life, by either major class or business segment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>63
<FILENAME>R44.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253683160">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Accrued Expenses (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PayablesAndAccrualsAbstract', window );"><strong>Payables and Accruals [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock', window );">Constituents of Accrued Expenses</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Accrued expenses consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:64.002%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.908%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.057%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Incentive compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">37,917</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">28,935&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Salaries and payroll taxes</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">8,519</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,911&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign retirement obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,572</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,886&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,427</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,406&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Vacation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">4,686</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,641&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">28,311</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">24,485&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">92,432</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">77,264&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock', window );">Changes in Warranty Obligations</a></td>
<td class="text"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the warranty obligation were as follows (in thousands):</span></div><div style="margin-top:5pt"><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 style="width:81.209%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.591%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,713&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Provisions for warranties issued during the period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,463&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fulfillment of warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2,770)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,406&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Provisions for warranties issued during the period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,256&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Fulfillment of warranty obligations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(3,235)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,427</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PayablesAndAccrualsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PayablesAndAccrualsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of accrued liabilities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the changes in the guarantor's aggregate product warranty liability, including the beginning balance of the aggregate product warranty liability, the aggregate reductions in that liability for payments made (in cash or in kind) under the warranty, the aggregate changes in the liability for accruals related to product warranties issued during the reporting period, the aggregate changes in the liability for accruals related to preexisting warranties (including adjustments related to changes in estimates), and the ending balance of the aggregate product warranty liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=123368208&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>64
<FILENAME>R45.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254403288">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Derivative Instruments (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract', window );"><strong>Derivative Instruments and Hedging Activities Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock', window );">Schedule of Notional Amounts of Outstanding Derivative Positions</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company had the following outstanding forward contracts (in thousands): </span></div><div style="margin-top:10pt;text-align:justify"><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 style="width:47.291%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.765%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.180%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:11.180%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.354%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="6" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="6" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2020</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Currency</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Notional Value</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">USD Equivalent</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">Notional Value</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline">USD Equivalent</span></td></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="18" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Euro</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">65,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">73,748&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">61,342&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Chinese Renminbi</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">54,374&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,500&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Mexican Peso</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">140,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,842&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">155,000&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">7,776&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Japanese Yen</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,213&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,808&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">British Pound</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,370&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,552&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,675&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,287&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Hungarian Forint</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,355,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,155&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,330,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,494&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Canadian Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,480&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,167&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,285&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,010&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Korean Won</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,925,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6,377&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Taiwanese Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38,035&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,362&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Singapore Dollar</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,465&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,110&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock', window );">Schedule of Derivative Instruments in Statement of Financial Position, Fair Value</a></td>
<td class="text"><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information regarding the fair value of the outstanding forward contracts was as follows (in thousands):</span></div><div style="margin-top:10pt;text-align:justify"><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 style="width:15.274%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.204%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.788%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.350%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.888%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.788%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.358%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Asset Derivatives</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr style="height:14pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Balance<br/>Sheet  Location</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Balance<br/>Sheet   Location</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr style="height:24pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</span></td></tr><tr><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="36" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Economic hedge forward contracts</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Prepaid expenses and other current assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">265&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Accrued expenses</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">230</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OffsettingAssetsTableTextBlock', window );">Offsetting Assets</a></td>
<td class="text"><div style="margin-top:4pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the gross activity for all derivative assets and liabilities which were presented on a net basis on the Consolidated Balance Sheets due to the right of offset with each counterparty (in thousands):</span></div><div style="margin-top:14pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:18.108%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.826%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.562%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.826%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.709%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:17.814%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.562%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.394%"/><td style="width:0.1%"/></tr><tr><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Asset Derivatives</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">December 31, 2021</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">December 31, 2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of recognized assets</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">265&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of recognized liabilities</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">230</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts offset</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts offset</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net amount of assets presented</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">265&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net amount of liabilities presented</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">230</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">38&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock', window );">Derivative Instruments, Gain (Loss)</a></td>
<td class="text"><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Information regarding the effect of derivative instruments, net of the underlying exposure, on the consolidated financial statements was as follows (in thousands):</span></div><div style="margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:21.920%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:22.800%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.762%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.908%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.911%"/><td style="width:0.1%"/></tr><tr style="height:12pt"><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Location in Financial Statements</span></td><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td></tr><tr><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gains (losses) recognized in current operations</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency gain (loss)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">4,262</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(12,308)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,305&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock', window );">Schedule of Derivative Instruments, Effect on Other Comprehensive Income (Loss)</a></td>
<td class="text"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:21.920%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:22.800%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.762%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.908%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.911%"/><td style="width:0.1%"/></tr><tr style="height:12pt"><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Location in Financial Statements</span></td><td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/><td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr style="height:12pt"><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td></tr><tr><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%">Derivatives Not Designated as Hedging Instruments:</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gains (losses) recognized in current operations</span></td><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign currency gain (loss)</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">4,262</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(12,308)</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,305&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OffsettingAssetsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of derivative and other financial assets that are subject to offsetting, including master netting arrangements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225877-175312<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OffsettingAssetsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the effective portion of the gains and losses on derivative instruments designated (and non-derivative instruments) designated and qualifying in cash flow hedges and net investment hedges that was recognized in other comprehensive income (loss) during the current period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4C<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5624171-113959<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the location and amount of derivative instruments and nonderivative instruments designated as hedging instruments reported before netting adjustments, and the amount of gain (loss) on derivative instruments and nonderivative instruments designated and qualified as hedging instruments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4E<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5624181-113959<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4A<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5618551-113959<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4C<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5624171-113959<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the location and fair value amounts of derivative instruments (and nonderivative instruments that are designated and qualify as hedging instruments) reported in the statement of financial position.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4B<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5624163-113959<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the notional amounts of outstanding derivative positions.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5579245-113959<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>65
<FILENAME>R46.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253515048">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue Recognition (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerAbstract', window );"><strong>Revenue from Contract with Customer [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueTableTextBlock', window );">Disaggregation of Revenue</a></td>
<td class="text"><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes disaggregated revenue information by geographic area based on the customer's country of domicile (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:61.216%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.630%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.826%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.630%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.632%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</span></td><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Americas</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">435,220</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">310,027&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">277,155&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">247,744</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">208,787&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">227,738&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Greater China</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">200,135</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">168,287&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">115,061&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other Asia</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">153,999</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">123,919&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">105,671&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,037,098</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">811,020&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">725,625&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><div style="margin-top:1pt;text-align:justify"><span><br/></span></div><div style="margin-top:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes disaggregated revenue information by revenue type (in thousands):</span></div><div style="margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:61.125%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.466%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.824%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.613%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.824%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.616%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Year Ended December 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Standard products and services</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">889,253</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">674,830&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">629,220&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Application-specific customer solutions</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">147,845</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">136,190&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">96,405&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,037,098</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">811,020&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">725,625&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock', window );">Contract with Customer, Liability</a></td>
<td class="text"><div style="margin-top:3pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the deferred revenue and customer deposits activity (in thousands):</span></div><div style="margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:79.398%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:18.402%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">14,432&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferral of revenue billed in the current period, net of recognition</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">19,014&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Recognition of revenue deferred in prior period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(12,443)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">271&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21,274&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferral of revenue billed in the current period, net of recognition</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">31,907&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Recognition of revenue deferred in prior period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(17,403)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(35)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">35,743</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock', window );">Allowance for Credit Loss</a></td>
<td class="text"><div style="margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes changes in the allowance for credit losses (in thousands):</span></div><div style="text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"><tr><td style="width:1.0%"/><td style="width:79.341%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:18.459%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Amount</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">530&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">600&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Write-offs, net of recoveries</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(300)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">831&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Increases to the allowance for credit losses</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Write-offs, net of recoveries</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(55)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">776</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of allowance for credit loss on financing receivable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11B<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=SL6953423-111524<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 50<br> -Paragraph 13<br> -URI http://asc.fasb.org/extlink&amp;oid=124255953&amp;loc=SL82919249-210447<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of receivable, contract asset, and contract liability from contract with customer. Includes, but is not limited to, change in contract asset and contract liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130551-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisaggregationOfRevenueTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130545-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisaggregationOfRevenueTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>66
<FILENAME>R47.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253702008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stock-Based Compensation (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract', window );"><strong>Share-based Payment Arrangement [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock', window );">Summary of Stock Option Activity</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the Company&#8217;s stock option activity:</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:43.409%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.223%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.223%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.223%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.226%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Shares<br/>(in&#160;thousands)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-<br/>Average<br/>Exercise<br/>Price</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Weighted-<br/>Average<br/>Remaining<br/>Contractual<br/>Term<br/>(in&#160;years)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Aggregate<br/>Intrinsic Value<br/>(in&#160;thousands)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">8,970&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">44.73&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Granted</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">564&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">88.62&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Exercised</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,694)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37.70&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Forfeited or expired</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(230)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">50.34&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Outstanding as of December 31, 2021</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,610</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">49.38</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">6.57</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">222,053</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Exercisable as of December 31, 2021</span></td><td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">3,442</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39.87</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5.45</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">130,448</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Options vested or expected to vest as of&#160;<br/>&#160;December 31, 2021 (1)</span></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,134</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">48.66</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">6.49</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">212,746</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:4pt;padding-left:36pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">(1) In addition to the vested options, the Company expects a portion of the unvested options to vest at some point in the future. Options expected to vest are calculated by applying an estimated forfeiture rate to the unvested options.</span></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock', window );">Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The fair values of stock options granted in each period presented were estimated using the following weighted-average assumptions:</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:54.847%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.996%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.143%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.146%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year&#160;Ended&#160;December&#160;31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Risk-free rate</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1.3</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.4&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2.7&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected dividend yield</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">0.27</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.41&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">0.39&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected volatility</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">37&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Expected term (in years)</span></td><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">6.0</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6.0</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5.3</span></td></tr></table></div><span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock', window );">Nonvested Restricted Stock Shares Activity [Table Text Block]</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following tables summarizes the Company's RSU activity:</span></div><div style="margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:62.496%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.666%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:19.808%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Shares<br/>(in&#160;thousands)</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Weighted-Average<br/>Grant Date Fair Value</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Nonvested as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">554&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">51.27&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Granted</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">335&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">87.03&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Vested</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(16)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">57.31&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Forfeited or expired</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(50)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">58.47&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Nonvested as of December 31, 2021</span></td><td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">823</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">65.26</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock', window );">Stock-Based Compensation Expense</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table presents the stock-based compensation expense by caption for each period presented on the Consolidated Statements of Operations (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"><tr><td style="width:1.0%"/><td style="width:51.176%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.318%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.318%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.534%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.320%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></td></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cost of revenue</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,345</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,365&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,504&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Research, development, and engineering</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">13,535</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,387&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,748&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Selling, general, and administrative</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">28,894</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">27,909&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">28,337&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">43,774</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">42,661&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">45,589&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the changes in outstanding nonvested restricted stock shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.F)<br> -URI http://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5047-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>67
<FILENAME>R48.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255395272">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes (Tables)<br></strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureAbstract', window );"><strong>Income Tax Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock', window );">Constituents of Provision for Income Taxes</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Income tax expense (benefit) consisted of the following (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:48.680%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.151%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.151%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:15.154%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Current:</span></td><td colspan="15" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">27,870</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">160&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,854&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,372</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">921&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2,108&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">8,406</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,197&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">30,670&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">41,648</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">14,278&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">48,632&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(19,266)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(18,266)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">352,808&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(769)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(556)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">183&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">17,406</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">15,269&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(442,494)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(2,629)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(3,553)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(89,503)</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">39,019</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10,725&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(40,871)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/></tr></table></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock', window );">Reconciliation of the United States Federal Statutory Corporate Tax Rate to the Company's Effective Tax Rate or Income Tax Provision</a></td>
<td class="text"><div style="margin-top:4pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">A reconciliation of the U.S. federal statutory corporate tax rate to the Company&#8217;s income tax expense (benefit), or effective tax rate, was as follows:</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"><tr><td style="width:1.0%"/><td style="width:62.296%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.613%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.613%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.532%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.614%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year&#160;Ended&#160;December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense at U.S. federal statutory corporate tax rate</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">21</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">State income taxes, net of federal benefit</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign tax rate differential</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(5)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(6)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(9)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Tax credit</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(2)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to employee stock options</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(3)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(7)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to tax return filings</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(1)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(5)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">Discrete tax expense related to German withholding</span></div></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax expense related to migration of acquired IP</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">18&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax benefit related to change in tax structure</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(268)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Discrete tax expense related to GILTI impact of change in tax structure</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">214&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other discrete tax events</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">2&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense (benefit)</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">12</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">6&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(25)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">%</span></td></tr></table></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock', window );">Schedule of Change in Accounting Policy</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text"><div style="margin-bottom:8pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The change in this accounting policy impacted the Company's 2019 reported results as follows (in thousands):</span></div><div style="margin-bottom:8pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:53.936%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.582%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Statement of Operations</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;Year Ended December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income before income tax expense</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">162,994&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">162,994&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Income tax expense (benefit)</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(40,871)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(393,317)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">352,446&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">203,865&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">556,311&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(352,446)</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr style="height:9pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/></tr><tr><td colspan="6" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net income per weighted-average common and common-equivalent share:</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.19&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3.25&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2.06)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Diluted</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1.16&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3.17&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(2.01)</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-bottom:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:53.936%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.582%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Balance Sheet</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy<br/></span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred tax assets</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">449,519&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">469,621&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(20,102)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Deferred tax liabilities</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">332,344&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">332,344&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-bottom:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"><tr><td style="width:1.0%"/><td style="width:53.936%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.520%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.821%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:10.582%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline">Statement of Shareholders' Equity</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#160;Year Ended December 31, 2019</span></td></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As reported under the new accounting policy</span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">As computed under the previous accounting policy<br/></span></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of change</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Retained earnings</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">753,268&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,105,714&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(352,446)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock', window );">Changes in the Reserve for Income Taxes, Excluding Interest and Penalties</a></td>
<td class="text"><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The changes in the reserve for income taxes, excluding gross interest and penalties, were as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:81.158%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:16.642%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2019</span></td><td style="padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">11,591&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">162&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,383&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,184)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,952&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(280)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">100&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">525&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(485)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance of reserve for income taxes as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">13,812</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock', window );">Constituents of Deferred Tax Assets</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Deferred tax assets and liabilities, presented on a gross basis by jurisdiction, consisted of the following (in thousands):</span></div><div style="margin-top:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:66.495%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.735%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.737%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">December&#160;31,</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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax assets:</span></td><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Intangible asset in connection with change in tax structure</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">404,526</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">424,156&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Stock-based compensation expense</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">15,279</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">13,294&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Federal and state tax credit carryforwards</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">11,051</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10,171&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Inventory and revenue related</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,426</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,976&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Bonuses, commissions, and other compensation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">7,263</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,932&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Depreciation</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">5,395</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,211&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign net operating losses</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">751</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">602&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">9,023</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,342&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax assets</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">460,714</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">467,684&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Valuation allowance</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(8,188)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(8,568)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">452,526</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">459,116&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr style="height:14pt"><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Gross deferred tax liabilities:</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">GILTI tax basis differences in connection with change in tax structure</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(327,725)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(339,364)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr style="height:14pt"><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Net deferred taxes</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">124,801</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">119,752&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the change in an accounting estimate, including a change that occurs in an interim period. If a change in accounting estimate affects several future periods (for example, a change in the service life of a depreciable asset) disclose the effect on income from continuing operations, net income (or other appropriate captions of changes in the applicable net assets or performance indicator), and any related per-share amounts of the current period. Disclosure of the effects of a change in an accounting estimate that occurs in the ordinary course of business (such as uncollectible accounts or inventory obsolescence) is not required, unless the effect is material.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 270<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=124437754&amp;loc=d3e777-108305<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure for tax positions taken in the tax returns filed or to be filed for which it is more likely than not that the tax position will not be sustained upon examination by taxing authorities and other income tax contingencies. Includes, but is not limited to, interest and penalties, reconciliation of unrecognized tax benefits, unrecognized tax benefits that would affect the effective tax rate, tax years that remain subject to examination by tax jurisdictions, and information about positions for which it is reasonably possible that amounts unrecognized will significantly change within 12 months.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32718-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 19<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32840-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SummaryOfIncomeTaxContingenciesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>68
<FILENAME>R49.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259180520">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Weighted Average Shares (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareAbstract', window );"><strong>Earnings Per Share [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock', window );">Calculation of Weighted Average Shares</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Weighted-average shares were calculated as follows (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:55.058%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.976%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.976%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.124%"/><td style="width:0.1%"/></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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="15" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Year Ended December&#160;31,</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">2021</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2020</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%">2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Basic weighted-average common shares outstanding</span></td><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">176,463</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">173,489&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">171,194&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Effect of dilutive stock awards</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">3,453</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,103&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,075&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Diluted weighted-average common and common-equivalent shares outstanding</span></td><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">179,916</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">176,592&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">175,269&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of the weighted average number of shares used in calculating basic net earnings per share (or unit) and diluted earnings per share (or unit).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>69
<FILENAME>R50.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259214360">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Segment and Geographic Information (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SegmentReportingAbstract', window );"><strong>Segment Reporting [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock', window );">Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas</a></td>
<td class="text"><div style="margin-top:5pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes information about geographic areas (in thousands):</span></div><div style="margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"><tr><td style="width:1.0%"/><td style="width:28.665%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.389%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.389%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.243%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.389%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.533%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.393%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">United&#160;States</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Europe</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Greater China </span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Other</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%">Total</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2021</span></td><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">393,690</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">247,744</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">200,135</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">195,529</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,037,098</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">63,141</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">16,982</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">960</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">3,705</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">84,788</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">280,205&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">208,787&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">168,287&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">153,741&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">811,020&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">60,911&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">20,014&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,278&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">4,764&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">86,967&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Year Ended December 31, 2019</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Revenue</span></td><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">247,689&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">227,738&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">115,061&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">135,137&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">725,625&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Long-lived assets</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">68,496&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">21,691&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">1,487&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">3,602&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</span></td><td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">95,276&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of information concerning material long-lived assets (excluding financial instruments, customer relationships with financial institutions, mortgage and other servicing rights, deferred policy acquisition costs, and deferred taxes assets) located in identified geographic areas and/or the amount of revenue from external customers attributed to that country from which revenue is material.  An entity may also provide subtotals of geographic information about groups of countries.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SegmentReportingAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SegmentReportingAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>70
<FILENAME>R51.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255362584">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Restructuring Charges (Tables)<br></strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringAndRelatedActivitiesAbstract', window );"><strong>Restructuring and Related Activities [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock', window );">Restructuring and Related Costs</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the restructuring charges for the year ended December 31, 2020 (in thousands):</span></div><div><span><br/></span></div><div style="text-align:justify"><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 style="width:72.876%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td style="width:0.1%"/><td style="width:0.530%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:24.194%"/><td style="width:0.1%"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Amount</span></td><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">One-time termination benefits</span></td><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">10,159&#160;</span></td><td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Contract termination costs</span></td><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,207&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Other associated costs</span></td><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">558&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="3" style="display:none"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">15,924</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr></table></div><span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock', window );">Schedule of Restructuring Reserve by Type of Cost</a></td>
<td class="text"><div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The following table summarizes the activity in the Company&#8217;s restructuring reserve, which is included in &#8220;Accrued expenses&#8221; on the Consolidated Balance Sheets (in thousands):</span></div><div style="text-align:justify"><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 style="width:38.227%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.104%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.384%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:13.081%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.384%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.788%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.384%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:14.548%"/><td style="width:0.1%"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">One-time Termination Benefits</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Contract Termination Costs</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Other Associated Costs</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">Total</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2019</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</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:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Restructuring charges</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">11,329&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">5,220&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">636&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">17,185</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash payments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(8,717)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(317)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(563)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(9,597)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-cash restructuring charges</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(4,163)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(4,163)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Restructuring adjustments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,170)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(13)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(78)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(1,261)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">182&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">23&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">20&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">225</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2020</span></td><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">1,624</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">750</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">15</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">2,389</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Cash payments</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(1,142)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(227)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(15)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;padding:0 1pt"/><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(1,384)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Foreign exchange rate changes</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:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(7)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#8212;&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">(7)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Balance as of December 31, 2021</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">482</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">516</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">&#8212;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">$</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">998</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">&#160;</span></td><td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringAndRelatedActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringAndRelatedActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of costs incurred for restructuring including, but not limited to, exit and disposal activities, remediation, implementation, integration, asset impairment, and charges against earnings from the write-down of assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 5.P.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB TOPIC 5.P.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Tabular disclosure of an entity's restructuring reserve that occurred during the period associated with the exit from or disposal of business activities or restructurings for each major type of cost. This element may also include a description of any reversal and other adjustment made during the period to the amount of an accrued liability for restructuring activities. This element may be used to encapsulate the roll forward presentations of an entity's restructuring reserve by type of cost and in total, and explanation of changes that occurred in the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:textBlockItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>71
<FILENAME>R52.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253658408">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Summary of Significant Accounting Policies - Additional Information (Detail)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum', window );">Effective maturity of investments</a></td>
<td class="text">10 years<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MaximumInvestmentOfCompanyInPartnership', window );">Maximum investment of the company in partnership</a></td>
<td class="nump">5.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember', window );">Building [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">39 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingImprovementsMember', window );">Building Improvements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">10 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=cgnx_ComputerHardwareAndSoftwareMember', window );">Computer Hardware and Software [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">2 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=cgnx_ComputerHardwareAndSoftwareMember', window );">Computer Hardware and Software [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">10 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember', window );">Manufacturing Test Equipment [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">2 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember', window );">Manufacturing Test Equipment [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">5 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember', window );">Furniture and Fixtures [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">2 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember', window );">Furniture and Fixtures [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentUsefulLife', window );">Property, Plant and Equipment, Useful Life</a></td>
<td class="text">5 years<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Available-for-sale Securities, Debt Maturities, Effective Term, Maximum</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_MaximumInvestmentOfCompanyInPartnership">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Maximum investment of the company in partnership.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_MaximumInvestmentOfCompanyInPartnership</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingImprovementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=cgnx_ComputerHardwareAndSoftwareMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=cgnx_ComputerHardwareAndSoftwareMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>72
<FILENAME>R53.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259410984">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Summary of Significant Accounting Policies - Intangible Assets (Details)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DistributionRightsMember', window );">Distribution Rights [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">11 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DistributionRightsMember', window );">Distribution Rights [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">12 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember', window );">Completed Technologies And Other Intangible Assets [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">5 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember', window );">Completed Technologies And Other Intangible Assets [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">8 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember', window );">Customer Relationships [Member] | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">5 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember', window );">Customer Relationships [Member] | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">8 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Non-compete agreements | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">3 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Non-compete agreements | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">7 years<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksMember', window );">Trademarks [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife', window );">Finite-Lived Intangible Asset, Useful Life</a></td>
<td class="text">2 years<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetUsefulLife</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DistributionRightsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DistributionRightsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>73
<FILENAME>R54.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029260665688">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Summary of Significant Accounting Policies - Warranty (Details)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProductLiabilityContingencyLineItems', window );"><strong>Product Liability Contingency [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ProductWarrantyPeriod', window );">Product Warranty Period</a></td>
<td class="text">1 year<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProductLiabilityContingencyLineItems', window );"><strong>Product Liability Contingency [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ProductWarrantyPeriod', window );">Product Warranty Period</a></td>
<td class="text">3 years<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ProductWarrantyPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Product warranty period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ProductWarrantyPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductLiabilityContingencyLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductLiabilityContingencyLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>74
<FILENAME>R55.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259739672">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Summary of Significant Accounting Policies Summary of Significant Accounting Policies - Revenue Recognition (Details)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_RevenuePaymentTerms', window );">Revenue, payment terms</a></td>
<td class="text">30 days<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_RevenuePaymentTerms', window );">Revenue, payment terms</a></td>
<td class="text">90 days<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_RevenuePaymentTerms">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Revenue, Payment Terms</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_RevenuePaymentTerms</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisaggregationOfRevenueLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisaggregationOfRevenueLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>75
<FILENAME>R56.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255297832">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Summary of Significant Accounting Policies - Advertising Costs (Details) - USD ($)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccountingPoliciesAbstract', window );"><strong>Accounting Policies [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdvertisingExpense', window );">Advertising costs</a></td>
<td class="nump">$ 1,965,000<span></span>
</td>
<td class="nump">$ 1,443,000<span></span>
</td>
<td class="nump">$ 1,385,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccountingPoliciesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccountingPoliciesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdvertisingExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount charged to advertising expense for the period, which are expenses incurred with the objective of increasing revenue for a specified brand, product or product line.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 720<br> -SubTopic 35<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6420018&amp;loc=d3e36677-107848<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdvertisingExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>76
<FILENAME>R57.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253346296">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Summary of Significant Accounting Policies - Comprehensive Income (Details) - USD ($)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems', window );"><strong>Accumulated Other Comprehensive Income (Loss) [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax', window );">Accumulated other comprehensive loss consists of foreign currency translation adjustments, net of tax</a></td>
<td class="nump">$ 43,665,000<span></span>
</td>
<td class="nump">$ 36,912,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax', window );">Net unrealized losses on available-for-sale investments, net of tax</a></td>
<td class="nump">3,006,000<span></span>
</td>
<td class="nump">4,382,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax', window );">Losses on currency swaps, net of gains on long-term intercompany loans</a></td>
<td class="nump">1,271,000<span></span>
</td>
<td class="nump">1,271,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax', window );">Net realized gains reclassified into current operations</a></td>
<td class="nump">236,000<span></span>
</td>
<td class="nump">4,119,000<span></span>
</td>
<td class="nump">$ 1,452,000<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember', window );">Accumulated Other Comprehensive Loss [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems', window );"><strong>Accumulated Other Comprehensive Income (Loss) [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax', window );">Net realized gains reclassified into current operations</a></td>
<td class="nump">$ 236,000<span></span>
</td>
<td class="nump">$ 4,119,000<span></span>
</td>
<td class="nump">$ 1,452,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after tax, of 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e681-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accumulated adjustment, net of tax, that results from the process of translating subsidiary financial statements and foreign equity investments into the reporting currency from the functional currency of the reporting entity, net of reclassification of realized foreign currency translation gains or losses.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e681-108580<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5A<br> -URI http://asc.fasb.org/extlink&amp;oid=123594809&amp;loc=SL116692626-108610<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669646-108580<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 14A<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669686-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Current period adjustment resulting from gains and losses on intercompany foreign currency transactions that are of a long-term-investment nature because settlement is not planned or anticipated in the foreseeable future.  Resulting from the entities to the transaction being consolidated, combined, or accounted for by the equity method in the reporting entity's financial statements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 20<br> -Section 35<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123602790&amp;loc=d3e30304-110892<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 830<br> -SubTopic 30<br> -Section 45<br> -Paragraph 20<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32211-110900<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after tax of reclassification adjustment from accumulated other comprehensive income for unrealized gain (loss) realized upon the sale of available-for-sale securities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e689-108580<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 11<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=d3e637-108580<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27357-111563<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17A<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL34724391-108580<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StatementEquityComponentsAxis=us-gaap_AccumulatedOtherComprehensiveIncomeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>77
<FILENAME>R58.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255668376">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Fair Value Measurements - Assets and Liabilities Measured at Fair Value on a Recurring Basis (Detail) - Fair Value, Measurements, Recurring<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member', window );">Quoted&#160;Prices&#160;in Active Markets for Identical Assets (Level&#160;1)</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosureAbstract', window );"><strong>Assets:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MoneyMarketInstrumentsFairValueDisclosure', window );">Money market instruments</a></td>
<td class="nump">$ 537<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CorporateBondsFairValueDisclosure', window );">Corporate bonds</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_TreasuryBillsFairValueDisclosure', window );">Treasury bills</a></td>
<td class="text"> <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AssetBackedSecuritiesFairValueDisclosure', window );">Asset-backed securities</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AgencyBondsFairValueDisclosure', window );">Agency bonds</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_SovereignBondsFairValueDisclosure', window );">Sovereign bonds</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MunicipalBondsFairValueDisclosure', window );">Municipal bonds</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure', window );">Economic hedge forward contracts</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesFairValueDisclosureAbstract', window );"><strong>Liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure', window );">Economic hedge forward contracts</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member', window );">Significant&#160;Other Observable Inputs (Level&#160;2)</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosureAbstract', window );"><strong>Assets:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MoneyMarketInstrumentsFairValueDisclosure', window );">Money market instruments</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CorporateBondsFairValueDisclosure', window );">Corporate bonds</a></td>
<td class="nump">554,306<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_TreasuryBillsFairValueDisclosure', window );">Treasury bills</a></td>
<td class="nump">58,665<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AssetBackedSecuritiesFairValueDisclosure', window );">Asset-backed securities</a></td>
<td class="nump">81,595<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AgencyBondsFairValueDisclosure', window );">Agency bonds</a></td>
<td class="nump">18,879<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_SovereignBondsFairValueDisclosure', window );">Sovereign bonds</a></td>
<td class="nump">2,119<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MunicipalBondsFairValueDisclosure', window );">Municipal bonds</a></td>
<td class="nump">5,639<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure', window );">Economic hedge forward contracts</a></td>
<td class="nump">39<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesFairValueDisclosureAbstract', window );"><strong>Liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure', window );">Economic hedge forward contracts</a></td>
<td class="nump">230<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member', window );">Unobservable Inputs (Level 3)</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AssetsFairValueDisclosureAbstract', window );"><strong>Assets:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MoneyMarketInstrumentsFairValueDisclosure', window );">Money market instruments</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CorporateBondsFairValueDisclosure', window );">Corporate bonds</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_TreasuryBillsFairValueDisclosure', window );">Treasury bills</a></td>
<td class="text"> <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AssetBackedSecuritiesFairValueDisclosure', window );">Asset-backed securities</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AgencyBondsFairValueDisclosure', window );">Agency bonds</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_SovereignBondsFairValueDisclosure', window );">Sovereign bonds</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MunicipalBondsFairValueDisclosure', window );">Municipal bonds</a></td>
<td class="text"> <span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure', window );">Economic hedge forward contracts</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesFairValueDisclosureAbstract', window );"><strong>Liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure', window );">Economic hedge forward contracts</a></td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_AgencyBondsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Agency bonds fair value disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_AgencyBondsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_AssetBackedSecuritiesFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Asset Backed Securities Fair Value Disclosure</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_AssetBackedSecuritiesFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_CorporateBondsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Corporate bonds fair value disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_CorporateBondsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_MoneyMarketInstrumentsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Money market instruments fair value disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_MoneyMarketInstrumentsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_MunicipalBondsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Municipal bonds fair value disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_MunicipalBondsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_SovereignBondsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Sovereign bonds fair value disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_SovereignBondsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_TreasuryBillsFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Treasury bills fair value disclosure.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_TreasuryBillsFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AssetsFairValueDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AssetsFairValueDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value portion of asset contracts related to the exchange of different currencies, including, but not limited to, foreign currency options, forward contracts, and swaps.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ForeignCurrencyContractAssetFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value portion of liability contracts related to the exchange of different currencies, including, but not limited to, foreign currency options, forward (delivery or nondelivery) contracts, and swaps entered into.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesFairValueDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesFairValueDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel1Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel2Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByFairValueHierarchyLevelAxis=us-gaap_FairValueInputsLevel3Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>78
<FILENAME>R59.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255332120">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Fair Value Measurements - Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation (Details) - USD ($)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward', window );"><strong>Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue', window );">Beginning balance</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 1,153,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities', window );">Payment of Chiaro contingent consideration</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,039,000)<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue', window );">Ending balance</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,153,000<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_GViVenturesInc.Member', window );">GVi Ventures, Inc.</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward', window );"><strong>Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue', window );">Beginning balance</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesFairValueAdjustment', window );">Fair value adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(114,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue', window );">Ending balance</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_ChiaroTechnologiesLLCMember', window );">Chiaro Technologies LLC</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward', window );"><strong>Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilitiesFairValueAdjustment', window );">Fair value adjustment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (1,039,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilitiesFairValueAdjustment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of addition (reduction) to the amount at which a liability could be incurred (settled) in a current transaction between willing parties.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilitiesFairValueAdjustment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow, not made soon after acquisition date of business combination, to settle contingent consideration liability up to amount recognized at acquisition date, including, but not limited to, measurement period adjustment and less amount paid soon after acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=cgnx_GViVenturesInc.Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=cgnx_GViVenturesInc.Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=cgnx_ChiaroTechnologiesLLCMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=cgnx_ChiaroTechnologiesLLCMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>79
<FILENAME>R60.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029251062088">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Fair Value Measurements - Additional Information (Details) - USD ($)<br></strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue', window );">Fair value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 1,153,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseImpairmentLoss', window );">Operating Lease, Impairment Loss</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">3,427,000<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">$ 19,571,000<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">19,571,000<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember', window );">Fair Value, Measurements, Recurring</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings', window );">Credit losses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent', window );">Credit recoveries</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_GViVenturesInc.Member', window );">GVi Ventures, Inc.</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue', window );">Fair value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_GViVenturesInc.Member', window );">GVi Ventures, Inc. | Minimum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow', window );">Contingent consideration, low range</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_GViVenturesInc.Member', window );">GVi Ventures, Inc. | Maximum [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems', window );"><strong>Fair Value, Assets and Liabilities Measured on Recurring and Nonrecurring Basis [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh', window );">Contingent consideration, high range</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 2,500,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Other Than Temporary Impairment Losses Investments Portion Recognized In Earnings Net, non current</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>For contingent consideration arrangements recognized in connection with a business combination, this element represents an estimate of the high-end of the potential range (undiscounted) of the consideration which may be paid.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>For contingent consideration arrangements and indemnification assets recognized in connection with a business combination, this element represents an estimate of the low-end of the potential range (undiscounted) of the consideration which may be paid.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 820<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123874694&amp;loc=d3e19207-110258<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of impairment loss recognized in the period resulting from the write-down of the carrying amount of an intangible asset (excluding goodwill) to fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16373-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseImpairmentLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of loss from impairment of right-of-use asset from operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 25<br> -Paragraph 6<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123399704&amp;loc=SL77918431-209957<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseImpairmentLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of other-than-temporary impairment (OTTI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), recognized in earnings.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 8A<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=SL6284422-111562<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FairValueByMeasurementFrequencyAxis=us-gaap_FairValueMeasurementsRecurringMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=cgnx_GViVenturesInc.Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=cgnx_GViVenturesInc.Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>80
<FILENAME>R61.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029251143736">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Cash, Cash Equivalents and Investments - Components of Cash, Cash Equivalents and Investments (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Cash', window );">Cash</a></td>
<td class="nump">$ 185,624<span></span>
</td>
<td class="nump">$ 266,609<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MoneyMarketFundsAtCarryingValue', window );">Money market instruments</a></td>
<td class="nump">537<span></span>
</td>
<td class="nump">2,464<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAtCarryingValue', window );">Cash and cash equivalents</a></td>
<td class="nump">186,161<span></span>
</td>
<td class="nump">269,073<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent', window );">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">137,455<span></span>
</td>
<td class="nump">103,240<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LongTermInvestments', window );">Non-current investments</a></td>
<td class="nump">583,748<span></span>
</td>
<td class="nump">395,125<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments', window );">Total</a></td>
<td class="nump">907,364<span></span>
</td>
<td class="nump">767,438<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasuryBillSecuritiesMember', window );">Treasury Bills [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent', window );">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">18,912<span></span>
</td>
<td class="nump">35,403<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent', window );">Long-term investments</a></td>
<td class="nump">39,753<span></span>
</td>
<td class="nump">96,458<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember', window );">Asset-Backed Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent', window );">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">37,655<span></span>
</td>
<td class="nump">25,160<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent', window );">Long-term investments</a></td>
<td class="nump">43,940<span></span>
</td>
<td class="nump">67,058<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember', window );">Corporate Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent', window );">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">73,088<span></span>
</td>
<td class="nump">32,714<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent', window );">Long-term investments</a></td>
<td class="nump">481,218<span></span>
</td>
<td class="nump">203,428<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember', window );">Sovereign Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent', window );">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">8,660<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent', window );">Long-term investments</a></td>
<td class="nump">2,119<span></span>
</td>
<td class="nump">3,440<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember', window );">Municipal Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent', window );">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">4,998<span></span>
</td>
<td class="nump">1,303<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent', window );">Long-term investments</a></td>
<td class="nump">641<span></span>
</td>
<td class="nump">5,735<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember', window );">Agency Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent', window );">Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020</a></td>
<td class="nump">2,802<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent', window );">Long-term investments</a></td>
<td class="nump">$ 16,077<span></span>
</td>
<td class="nump">$ 19,006<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Cash, cash equivalents, short term and long term investments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_CashCashEquivalentsShortTermAndLongTermInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26626-111562<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26626-111562<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Cash">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 946<br> -SubTopic 210<br> -Section 45<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=118262064&amp;loc=SL116631418-115840<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 946<br> -SubTopic 210<br> -Section 45<br> -Paragraph 21<br> -URI http://asc.fasb.org/extlink&amp;oid=118262064&amp;loc=SL116631419-115840<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Cash</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3044-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LongTermInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The total amount of investments that are intended to be held for an extended period of time (longer than one operating cycle).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.12)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LongTermInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MoneyMarketFundsAtCarryingValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Investment in short-term money-market instruments (such as commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and so forth) which are highly liquid (that is, readily convertible to known amounts of cash) and so near their maturity that they present an insignificant risk of changes in value because of changes in interest rates. Generally, only investments with original maturities of three months or less qualify as cash equivalents by definition. Original maturity means an original maturity to the entity holding the investment. For example, both a three-month US Treasury bill and a three-year Treasury note purchased three months from maturity qualify as cash equivalents. However, a Treasury note purchased three-years ago does not become a cash equivalent when its remaining maturity is three months.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MoneyMarketFundsAtCarryingValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasuryBillSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USTreasuryBillSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>81
<FILENAME>R62.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029251036312">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cash, Cash Equivalents and Investments - Additional Information (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CashAndCashEquivalentsAbstract', window );"><strong>Cash and Cash Equivalents [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DueFromForeignBanks', window );">Cash balance included foreign bank balance</a></td>
<td class="nump">$ 142,009<span></span>
</td>
<td class="nump">$ 225,853<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InterestReceivable', window );">Interest Receivable</a></td>
<td class="nump">3,037<span></span>
</td>
<td class="nump">1,560<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain', window );">Gross realized losses</a></td>
<td class="nump">246<span></span>
</td>
<td class="nump">4,283<span></span>
</td>
<td class="nump">$ 1,581<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss', window );">Gross realized gains</a></td>
<td class="nump">$ 10<span></span>
</td>
<td class="nump">$ 164<span></span>
</td>
<td class="nump">$ 129<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DueFromForeignBanks">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Due from foreign banks.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DueFromForeignBanks</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CashAndCashEquivalentsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CashAndCashEquivalentsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleRealizedGain">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of realized gain on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27357-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleRealizedGain</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of realized loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27357-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InterestReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount as of the balance sheet date of interest earned but not received. Also called accrued interest or accrued interest receivable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.8)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InterestReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>82
<FILENAME>R63.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250273032">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Cash, Cash Equivalents and Investments - Amortized Cost to Fair Value (Detail)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">$ 725,105<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">1,069<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(4,971)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">721,203<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember', window );">Treasury Bills [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">58,665<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember', window );">Treasury Bills [Member] | Short-term Investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">18,864<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">51<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(3)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">18,912<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember', window );">Treasury Bills [Member] | Long-term investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">39,740<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">46<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(33)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">39,753<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember', window );">Asset-Backed Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">81,595<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember', window );">Asset-Backed Securities [Member] | Short-term Investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">37,568<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">112<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(25)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">37,655<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember', window );">Asset-Backed Securities [Member] | Long-term investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">44,197<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">45<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(302)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">43,940<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember', window );">Corporate Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">554,306<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember', window );">Corporate Bonds [Member] | Short-term Investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">72,863<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">251<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(26)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">73,088<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember', window );">Corporate Bonds [Member] | Long-term investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">485,140<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">555<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(4,477)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">481,218<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember', window );">Sovereign Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">2,119<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember', window );">Sovereign Bonds [Member] | Long-term investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">2,141<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(22)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">2,119<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember', window );">Municipal Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">5,639<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember', window );">Municipal Bonds [Member] | Short-term Investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">5,029<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">1<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(32)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">4,998<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember', window );">Municipal Bonds [Member] | Long-term investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">635<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">6<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">641<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember', window );">Agency Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">18,879<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember', window );">Agency Bonds [Member] | Short-term Investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">2,800<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">2<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">2,802<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember', window );">Agency Bonds [Member] | Long-term investments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis', window );">Amortized Cost</a></td>
<td class="nump">16,128<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></td>
<td class="num">(51)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">$ 16,077<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amortized cost of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(6))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26610-111562<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (aa)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleSecuritiesDebtSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentTypeAxis=us-gaap_ShortTermInvestmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentTypeAxis=us-gaap_ShortTermInvestmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InvestmentTypeAxis=cgnx_LongTermInvestmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InvestmentTypeAxis=cgnx_LongTermInvestmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>83
<FILENAME>R64.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250125304">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Cash, Cash Equivalents and Investments - Gross Unrealized Losses and Fair Value for Available-for-Sale Investments (Detail)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months', window );">Fair Value, Less than 12 months</a></td>
<td class="nump">$ 525,868<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss', window );">Unrealized Losses, Less than 12 months</a></td>
<td class="num">(4,896)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger', window );">Fair Value, Greater than 12 Months</a></td>
<td class="nump">7,808<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss', window );">Unrealized Losses, Greater than 12 Months</a></td>
<td class="num">(75)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition', window );">Fair Value</a></td>
<td class="nump">533,676<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss', window );">Unrealized Losses</a></td>
<td class="num">(4,971)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember', window );">Treasury Bills [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months', window );">Fair Value, Less than 12 months</a></td>
<td class="nump">25,040<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss', window );">Unrealized Losses, Less than 12 months</a></td>
<td class="num">(36)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger', window );">Fair Value, Greater than 12 Months</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss', window );">Unrealized Losses, Greater than 12 Months</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition', window );">Fair Value</a></td>
<td class="nump">25,040<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss', window );">Unrealized Losses</a></td>
<td class="num">(36)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember', window );">Asset-Backed Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months', window );">Fair Value, Less than 12 months</a></td>
<td class="nump">50,980<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss', window );">Unrealized Losses, Less than 12 months</a></td>
<td class="num">(317)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger', window );">Fair Value, Greater than 12 Months</a></td>
<td class="nump">806<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss', window );">Unrealized Losses, Greater than 12 Months</a></td>
<td class="num">(10)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition', window );">Fair Value</a></td>
<td class="nump">51,786<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss', window );">Unrealized Losses</a></td>
<td class="num">(327)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember', window );">Sovereign Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months', window );">Fair Value, Less than 12 months</a></td>
<td class="nump">2,119<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss', window );">Unrealized Losses, Less than 12 months</a></td>
<td class="num">(22)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger', window );">Fair Value, Greater than 12 Months</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss', window );">Unrealized Losses, Greater than 12 Months</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition', window );">Fair Value</a></td>
<td class="nump">2,119<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss', window );">Unrealized Losses</a></td>
<td class="num">(22)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember', window );">Corporate Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months', window );">Fair Value, Less than 12 months</a></td>
<td class="nump">431,652<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss', window );">Unrealized Losses, Less than 12 months</a></td>
<td class="num">(4,470)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger', window );">Fair Value, Greater than 12 Months</a></td>
<td class="nump">3,110<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss', window );">Unrealized Losses, Greater than 12 Months</a></td>
<td class="num">(33)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition', window );">Fair Value</a></td>
<td class="nump">434,762<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss', window );">Unrealized Losses</a></td>
<td class="num">(4,503)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember', window );">Agency Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months', window );">Fair Value, Less than 12 months</a></td>
<td class="nump">16,077<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss', window );">Unrealized Losses, Less than 12 months</a></td>
<td class="num">(51)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger', window );">Fair Value, Greater than 12 Months</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss', window );">Unrealized Losses, Greater than 12 Months</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition', window );">Fair Value</a></td>
<td class="nump">16,077<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss', window );">Unrealized Losses</a></td>
<td class="num">(51)<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember', window );">Municipal Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months', window );">Fair Value, Less than 12 months</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss', window );">Unrealized Losses, Less than 12 months</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger', window );">Fair Value, Greater than 12 Months</a></td>
<td class="nump">3,892<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss', window );">Unrealized Losses, Greater than 12 Months</a></td>
<td class="num">(32)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition', window );">Fair Value</a></td>
<td class="nump">3,892<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss', window );">Unrealized Losses</a></td>
<td class="num">$ (32)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in continuous unrealized loss position for more than 12 months, without allowance for credit loss. Includes beneficial interest in securitized financial asset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922890-210455<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27337-111563<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 55<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121590138&amp;loc=SL82922954-210456<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated unrealized loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in continuous unrealized loss position for 12 months or longer, without allowance for credit loss. Includes beneficial interest in securitized financial asset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27337-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922890-210455<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in continuous unrealized loss position for less than 12 months, without allowance for credit loss. Includes beneficial interest in securitized financial asset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27337-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922890-210455<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 55<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121590138&amp;loc=SL82922954-210456<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated unrealized loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in continuous unrealized loss position for less than 12 months, without allowance for credit loss. Includes beneficial interest in securitized financial asset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922890-210455<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27337-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in unrealized loss position without allowance for credit loss.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27290-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922888-210455<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 55<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121590138&amp;loc=SL82922954-210456<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated unrealized loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in unrealized loss position, without allowance for credit loss. Includes beneficial interest in securitized financial asset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27290-111563<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922888-210455<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>84
<FILENAME>R65.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029260658888">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cash, Cash Equivalents, and Investments - Allowance for Credit Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward', window );"><strong>Debt Securities, Available-for-sale, Allowance for Credit Loss [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss', window );">Beginning balance</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal', window );">Increases to the allowance for credit losses</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">160<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery', window );">Decreases to the allowance for credit losses</a></td>
<td class="nump">0<span></span>
</td>
<td class="num">(160)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss', window );">Ending balance</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922900-210455<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922900-210455<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (aaa)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in allowance for credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), from recovery.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922900-210455<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expense (reversal of expense) for expected credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), from change in present value of expected cash flows.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82922868-210454<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124269663&amp;loc=SL82922897-210455<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>85
<FILENAME>R66.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255724440">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Cash, Cash Equivalents and Investments - Effective Maturity Dates of Available-for-Sale Investments (Detail)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue', window );">Less than 1 Year</a></td>
<td class="nump">$ 137,455<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue', window );">1-2 Years</a></td>
<td class="nump">285,172<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue', window );">2-3 Years</a></td>
<td class="nump">181,712<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue', window );">3-4 Years</a></td>
<td class="nump">73,515<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue', window );">4-5 Years</a></td>
<td class="nump">43,349<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">721,203<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember', window );">Treasury Bills [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue', window );">Less than 1 Year</a></td>
<td class="nump">18,912<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue', window );">1-2 Years</a></td>
<td class="nump">39,753<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue', window );">2-3 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue', window );">3-4 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue', window );">4-5 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">58,665<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember', window );">Corporate Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue', window );">Less than 1 Year</a></td>
<td class="nump">73,088<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue', window );">1-2 Years</a></td>
<td class="nump">205,331<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue', window );">2-3 Years</a></td>
<td class="nump">175,992<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue', window );">3-4 Years</a></td>
<td class="nump">64,356<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue', window );">4-5 Years</a></td>
<td class="nump">35,539<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">554,306<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember', window );">Asset-Backed Securities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue', window );">Less than 1 Year</a></td>
<td class="nump">37,655<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue', window );">1-2 Years</a></td>
<td class="nump">23,370<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue', window );">2-3 Years</a></td>
<td class="nump">4,668<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue', window );">3-4 Years</a></td>
<td class="nump">8,092<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue', window );">4-5 Years</a></td>
<td class="nump">7,810<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">81,595<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember', window );">Sovereign Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue', window );">Less than 1 Year</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue', window );">1-2 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue', window );">2-3 Years</a></td>
<td class="nump">1,052<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue', window );">3-4 Years</a></td>
<td class="nump">1,067<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue', window );">4-5 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">2,119<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember', window );">Municipal Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue', window );">Less than 1 Year</a></td>
<td class="nump">4,998<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue', window );">1-2 Years</a></td>
<td class="nump">641<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue', window );">2-3 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue', window );">3-4 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue', window );">4-5 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">5,639<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember', window );">Agency Bonds [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems', window );"><strong>Debt Securities, Available-for-sale [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue', window );">Less than 1 Year</a></td>
<td class="nump">2,802<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue', window );">1-2 Years</a></td>
<td class="nump">16,077<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue', window );">2-3 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue', window );">3-4 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue', window );">4-5 Years</a></td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">$ 18,879<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Available-for-sale securities, debt maturities after fourth year but before fifth year, fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>This item represents the fair value of debt securities which are expected to mature within one year of the balance sheet date and which are categorized neither as held-to-maturity nor trading securities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Available-for-sale securities, debt maturities after third year but before fourth year, fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Available-for-sale securities, debt maturities after second year but before third year, fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 320<br> -Section 50<br> -Paragraph 3A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123599081&amp;loc=SL120269850-112803<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27198-111563<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AvailableForSaleSecuritiesDebtSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(6))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 30<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124258926&amp;loc=SL82898722-210454<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124260329&amp;loc=d3e26610-111562<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 320<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (aa)<br> -URI http://asc.fasb.org/extlink&amp;oid=123581744&amp;loc=d3e27161-111563<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AvailableForSaleSecuritiesDebtSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_USTreasurySecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_CorporateBondSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_AssetBackedSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_SovereignDebtSecuritiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=us-gaap_MunicipalBondsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FinancialInstrumentAxis=cgnx_AgencyBondsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>86
<FILENAME>R67.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029251113240">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Inventories - Inventories (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryDisclosureAbstract', window );"><strong>Inventory Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryRawMaterialsNetOfReserves', window );">Raw materials</a></td>
<td class="nump">$ 50,452<span></span>
</td>
<td class="nump">$ 26,800<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryWorkInProcessNetOfReserves', window );">Work-in-process</a></td>
<td class="nump">5,293<span></span>
</td>
<td class="nump">4,780<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryFinishedGoodsNetOfReserves', window );">Finished goods</a></td>
<td class="nump">57,357<span></span>
</td>
<td class="nump">29,250<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_InventoryNet', window );">Inventories</a></td>
<td class="nump">$ 113,102<span></span>
</td>
<td class="nump">$ 60,830<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryFinishedGoodsNetOfReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of merchandise or goods held by the company that are readily available for sale.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -URI http://asc.fasb.org/extlink&amp;oid=27011343&amp;loc=d3e100047-122729<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryFinishedGoodsNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after valuation and LIFO reserves of inventory expected to be sold, or consumed within one year or operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6676-107765<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryRawMaterialsNetOfReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of unprocessed items to be consumed in the manufacturing or production process.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -URI http://asc.fasb.org/extlink&amp;oid=27011343&amp;loc=d3e100047-122729<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryRawMaterialsNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_InventoryWorkInProcessNetOfReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount, net of reserves and adjustments, as of the balance sheet date of merchandise or goods which are partially completed. This inventory is generally comprised of raw materials, labor and factory overhead costs, which require further materials, labor and overhead to be converted into finished goods, and which generally require the use of estimates to determine percentage complete and pricing.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 330<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.BB)<br> -URI http://asc.fasb.org/extlink&amp;oid=27011343&amp;loc=d3e100047-122729<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(6)(a)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_InventoryWorkInProcessNetOfReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>87
<FILENAME>R68.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253492888">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Property, Plant, and Equipment - Property, Plant, and Equipment (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property, plant and equipment, gross</a></td>
<td class="nump">$ 174,565<span></span>
</td>
<td class="nump">$ 181,494<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment', window );">Less: accumulated depreciation</a></td>
<td class="num">(97,019)<span></span>
</td>
<td class="num">(102,321)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentNet', window );">Property, plant and equipment, net, total</a></td>
<td class="nump">77,546<span></span>
</td>
<td class="nump">79,173<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandMember', window );">Land [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property, plant and equipment, gross</a></td>
<td class="nump">3,951<span></span>
</td>
<td class="nump">3,951<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember', window );">Building [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property, plant and equipment, gross</a></td>
<td class="nump">24,533<span></span>
</td>
<td class="nump">24,533<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingImprovementsMember', window );">Building Improvements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property, plant and equipment, gross</a></td>
<td class="nump">47,886<span></span>
</td>
<td class="nump">45,978<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember', window );">Leasehold Improvements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property, plant and equipment, gross</a></td>
<td class="nump">10,436<span></span>
</td>
<td class="nump">12,682<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=cgnx_HardwareAndSoftwareMember', window );">Computer Hardware And Software [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property, plant and equipment, gross</a></td>
<td class="nump">50,748<span></span>
</td>
<td class="nump">58,162<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember', window );">Manufacturing Test Equipment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property, plant and equipment, gross</a></td>
<td class="nump">30,562<span></span>
</td>
<td class="nump">29,816<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember', window );">Furniture and Fixtures [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentLineItems', window );"><strong>Property, Plant and Equipment [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentGross', window );">Property, plant and equipment, gross</a></td>
<td class="nump">$ 6,449<span></span>
</td>
<td class="nump">$ 6,372<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.14)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.13)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(14))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 360<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6391035&amp;loc=d3e2868-110229<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 360<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124429447&amp;loc=SL124453093-239630<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(13))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LandMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingImprovementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_BuildingImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_LeaseholdImprovementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=cgnx_HardwareAndSoftwareMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=cgnx_HardwareAndSoftwareMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_EquipmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentByTypeAxis=us-gaap_FurnitureAndFixturesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>88
<FILENAME>R69.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254396248">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Property, Plant and Equipment - Additional Information (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentAbstract', window );"><strong>Property, Plant and Equipment [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertyPlantAndEquipmentDisposals', window );">Disposals in period</a></td>
<td class="nump">$ 20,647<span></span>
</td>
<td class="nump">$ 26,829<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1', window );">Reduction of accumulated depreciation due to disposals</a></td>
<td class="nump">20,614<span></span>
</td>
<td class="nump">24,977<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GainLossOnDispositionOfAssets1', window );">Loss on disposition of property, plant and equipment</a></td>
<td class="nump">$ 33<span></span>
</td>
<td class="nump">$ 1,852<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in accumulated depreciation, depletion and amortization as a result of sale or disposal of property, plant and equipment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GainLossOnDispositionOfAssets1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of gain (loss) on sale or disposal of assets, including but not limited to property plant and equipment, intangible assets and equity in securities of subsidiaries or equity method investee.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GainLossOnDispositionOfAssets1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertyPlantAndEquipmentDisposals">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of divestiture of long-lived, physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertyPlantAndEquipmentDisposals</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>89
<FILENAME>R70.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029251148696">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Leases (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeLeaseDescriptionLineItems', window );"><strong>Lessee, Lease, Description [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount', window );">Lessee, Operating Lease, Liability, Undiscounted Excess Amount</a></td>
<td class="nump">$ 2,148<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseExpense', window );">Operating lease expense</a></td>
<td class="nump">8,180<span></span>
</td>
<td class="nump">$ 8,180<span></span>
</td>
<td class="nump">$ 6,893<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeasePayments', window );">Operating lease payments</a></td>
<td class="nump">8,225<span></span>
</td>
<td class="nump">8,009<span></span>
</td>
<td class="nump">6,530<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized', window );">Operating lease expense for which no liability or asset was recognized</a></td>
<td class="nump">154<span></span>
</td>
<td class="nump">123<span></span>
</td>
<td class="nump">275<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating lease, liability</a></td>
<td class="nump">25,581<span></span>
</td>
<td class="nump">$ 26,230<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Lessee, Operating Lease, Liability, Payments, Due</a></td>
<td class="nump">27,729<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2022</a></td>
<td class="nump">$ 8,508<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent', window );">Operating lease, weighted average discount rate (percent)</a></td>
<td class="nump">3.40%<span></span>
</td>
<td class="nump">4.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1', window );">Operating lease, weighted average remaining lease term (years)</a></td>
<td class="text">5 years 1 month 6 days<span></span>
</td>
<td class="text">5 years 1 month 6 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset', window );">Carrying value of lease assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseImpairmentLoss', window );">Operating Lease, Impairment Loss</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 3,427<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLeaseIncome', window );">Operating lease income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">77<span></span>
</td>
<td class="nump">$ 311<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember', window );">Contract Termination [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeLeaseDescriptionLineItems', window );"><strong>Lessee, Lease, Description [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OperatingLeaseLiability', window );">Operating lease, liability</a></td>
<td class="nump">1,717<span></span>
</td>
<td class="nump">$ 2,877<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis=cgnx_SouthboroughMassachusettsMember', window );">Southborough, Massachusetts</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeLeaseDescriptionLineItems', window );"><strong>Lessee, Lease, Description [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Lessee, Operating Lease, Liability, Payments, Due</a></td>
<td class="nump">10,239<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2022</a></td>
<td class="nump">$ 670<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Operating Lease, Expense, No Liability Or Asset Recognized</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Operating Lease, Right-Of-Use Asset, Carrying Value Of Impaired Asset</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeLeaseDescriptionLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeLeaseDescriptionLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of operating lease expense. Excludes sublease income.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 4<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918638-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseImpairmentLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of loss from impairment of right-of-use asset from operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 25<br> -Paragraph 6<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123399704&amp;loc=SL77918431-209957<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseImpairmentLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLeaseIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of operating lease income from lease payments and variable lease payments paid and payable to lessor. Includes, but is not limited to, variable lease payments not included in measurement of lease receivable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=124258985&amp;loc=SL77919372-209981<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 30<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=123420820&amp;loc=SL77919311-209978<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 270<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6A<br> -URI http://asc.fasb.org/extlink&amp;oid=124502072&amp;loc=SL77927221-108306<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLeaseIncome</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Present value of lessee's discounted obligation for lease payments from operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918627-209977<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeasePayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123391704&amp;loc=SL77918643-209977<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeasePayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average discount rate for operating lease calculated at point in time.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918686-209980<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=123414884&amp;loc=SL77918982-209971<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 55<br> -Paragraph 53<br> -URI http://asc.fasb.org/extlink&amp;oid=123414884&amp;loc=SL77918982-209971<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (g)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918686-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis=cgnx_SouthboroughMassachusettsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis=cgnx_SouthboroughMassachusettsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>90
<FILENAME>R71.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029345540600">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Leases - Schedule of Payments (Details)<br> $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LeasesAbstract', window );"><strong>Leases [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths', window );">2022</a></td>
<td class="nump">$ 8,508<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo', window );">2023</a></td>
<td class="nump">6,883<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree', window );">2024</a></td>
<td class="nump">3,842<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour', window );">2025</a></td>
<td class="nump">2,081<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive', window );">2026</a></td>
<td class="nump">1,346<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive', window );">Thereafter</a></td>
<td class="nump">5,069<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue', window );">Total</a></td>
<td class="nump">$ 27,729<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LeasesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LeasesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease due after 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 842<br> -SubTopic 20<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=123408670&amp;loc=SL77918701-209980<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>91
<FILENAME>R72.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029345576808">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Goodwill - Changes in the Carrying Value of Goodwill (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillRollForward', window );"><strong>Goodwill [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, Beginning Balance</a></td>
<td class="nump">$ 244,078<span></span>
</td>
<td class="nump">$ 243,445<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillForeignCurrencyTranslationGainLoss', window );">Foreign exchange rate changes</a></td>
<td class="num">(2,365)<span></span>
</td>
<td class="nump">1,637<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Goodwill', window );">Goodwill, Ending Balance</a></td>
<td class="nump">$ 241,713<span></span>
</td>
<td class="nump">244,078<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillRollForward', window );"><strong>Goodwill [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillOtherIncreaseDecrease', window );">Goodwill, Other Increase (Decrease)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (1,004)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Goodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(10)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120320667&amp;loc=SL49117168-202975<br><br>Reference 3: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=99380562&amp;loc=d3e13770-109266<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Goodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillForeignCurrencyTranslationGainLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of foreign currency translation gain (loss) which increases (decreases) an asset representing future economic benefits from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillForeignCurrencyTranslationGainLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillOtherIncreaseDecrease">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease), classified as other, of an asset representing the future economic benefits from other assets acquired in a business combination that are not individually identified and separately recognized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (g)<br> -URI http://asc.fasb.org/extlink&amp;oid=121556970&amp;loc=d3e13816-109267<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillOtherIncreaseDecrease</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>92
<FILENAME>R73.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255270344">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Intangible Assets - Amortized Intangible Assets (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross Carrying Value</a></td>
<td class="nump">$ 73,675<span></span>
</td>
<td class="nump">$ 73,675<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="nump">61,787<span></span>
</td>
<td class="nump">58,120<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IntangibleAssetsNetIncludingGoodwill', window );">Intangible Assets, Net (Including Goodwill)</a></td>
<td class="nump">11,888<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net Carrying Value</a></td>
<td class="nump">11,888<span></span>
</td>
<td class="nump">15,555<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DistributionRightsMember', window );">Distribution Networks [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross Carrying Value</a></td>
<td class="nump">38,060<span></span>
</td>
<td class="nump">38,060<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="nump">38,060<span></span>
</td>
<td class="nump">38,060<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net Carrying Value</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DevelopedTechnologyRightsMember', window );">Completed Technologies [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross Carrying Value</a></td>
<td class="nump">24,217<span></span>
</td>
<td class="nump">24,217<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="nump">15,234<span></span>
</td>
<td class="nump">12,397<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net Carrying Value</a></td>
<td class="nump">8,983<span></span>
</td>
<td class="nump">11,820<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember', window );">Customer Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross Carrying Value</a></td>
<td class="nump">10,578<span></span>
</td>
<td class="nump">10,578<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="nump">7,891<span></span>
</td>
<td class="nump">7,160<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net Carrying Value</a></td>
<td class="nump">2,687<span></span>
</td>
<td class="nump">3,418<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember', window );">Non-compete agreements</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross Carrying Value</a></td>
<td class="nump">710<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="nump">492<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net Carrying Value</a></td>
<td class="nump">218<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksMember', window );">Trademarks [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross Carrying Value</a></td>
<td class="nump">110<span></span>
</td>
<td class="nump">110<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="nump">110<span></span>
</td>
<td class="nump">67<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net Carrying Value</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">43<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_OtherIntangibleAssetsMember', window );">Non-compete Agreements [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsGross', window );">Gross Carrying Value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">710<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">436<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net Carrying Value</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 274<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 928<br> -SubTopic 340<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6473545&amp;loc=d3e61844-108004<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120154696&amp;loc=d3e54445-107959<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IntangibleAssetsNetIncludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount of finite-lived intangible assets, indefinite-lived intangible assets and goodwill. Goodwill is an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized. Intangible assets are assets, not including financial assets, lacking physical substance.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IntangibleAssetsNetIncludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DistributionRightsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DistributionRightsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DevelopedTechnologyRightsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DevelopedTechnologyRightsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_NoncompeteAgreementsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_TrademarksMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_OtherIntangibleAssetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_OtherIntangibleAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>93
<FILENAME>R74.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253293720">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Intangible Assets - Estimated Amortization Expense Succeeding Fiscal Years (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract', window );"><strong>Goodwill and Intangible Assets Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths', window );">2022</a></td>
<td class="nump">$ 3,275<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo', window );">2023</a></td>
<td class="nump">2,594<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree', window );">2024</a></td>
<td class="nump">2,080<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour', window );">2025</a></td>
<td class="nump">1,757<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive', window );">2026</a></td>
<td class="nump">1,452<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive', window );">Thereafter</a></td>
<td class="nump">730<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsNet', window );">Net Carrying Value</a></td>
<td class="nump">$ 11,888<span></span>
</td>
<td class="nump">$ 15,555<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in 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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 926<br> -SubTopic 20<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=120154696&amp;loc=d3e54445-107959<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>94
<FILENAME>R75.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255546728">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Intangible Assets - Narrative (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>May 26, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">$ 19,571<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 19,571<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated amortization</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">61,787<span></span>
</td>
<td class="nump">58,120<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DevelopedTechnologyRightsMember', window );">Completed Technologies [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated amortization</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">15,234<span></span>
</td>
<td class="nump">12,397<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember', window );">Customer Contracts And Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated amortization</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 7,891<span></span>
</td>
<td class="nump">$ 7,160<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member] | In Process Research and Development [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">5,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member] | Completed Technologies [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">10,070<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member] | Customer Contracts And Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">3,382<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_EnShapeGmbHAbstract', window );">EnShape GmbH [Abstract] | Customer Contracts And Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsLineItems', window );"><strong>Finite-Lived Intangible Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">219<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill', window );">Intangible assets</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 447<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated amortization</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 228<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of intangible assets, excluding goodwill, acquired at the acquisition date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123413009&amp;loc=d3e4845-128472<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of impairment loss recognized in the period resulting from the write-down of the carrying amount of an intangible asset (excluding goodwill) to fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16373-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of impairment loss resulting from write-down of assets, excluding financial assets and goodwill, lacking physical substance and having a projected indefinite period of benefit to fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16373-109275<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DevelopedTechnologyRightsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DevelopedTechnologyRightsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_InProcessResearchAndDevelopmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_InProcessResearchAndDevelopmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=cgnx_EnShapeGmbHAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=cgnx_EnShapeGmbHAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>95
<FILENAME>R76.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253288136">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Accrued Expenses - Constituents of Accrued Expenses (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrentAbstract', window );"><strong>Constituents of accrued expenses</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedBonusesCurrent', window );">Incentive compensation</a></td>
<td class="nump">$ 37,917<span></span>
</td>
<td class="nump">$ 28,935<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedSalariesCurrent', window );">Salaries and payroll taxes</a></td>
<td class="nump">8,519<span></span>
</td>
<td class="nump">7,911<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_RetirementAllowance', window );">Foreign retirement obligations</a></td>
<td class="nump">7,572<span></span>
</td>
<td class="nump">6,886<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrualClassifiedCurrent', window );">Warranty obligations</a></td>
<td class="nump">5,427<span></span>
</td>
<td class="nump">5,406<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedVacationCurrent', window );">Vacation</a></td>
<td class="nump">4,686<span></span>
</td>
<td class="nump">3,641<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherAccruedLiabilitiesCurrent', window );">Other</a></td>
<td class="nump">28,311<span></span>
</td>
<td class="nump">24,485<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AccruedLiabilitiesCurrent', window );">Accrued expenses</a></td>
<td class="nump">$ 92,432<span></span>
</td>
<td class="nump">$ 77,264<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_RetirementAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Retirement allowance Japan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_RetirementAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedBonusesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred and payable for incentive compensation awarded to employees and directors or earned by them based on the terms of one or more relevant arrangements. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6935-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6911-107765<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedBonusesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedLiabilitiesCurrentAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedLiabilitiesCurrentAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedSalariesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of the obligations incurred through that date and payable for employees' services provided. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6911-107765<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6935-107765<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedSalariesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AccruedVacationCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred and payable for unused vacation time owed to employees based on the entity's vacation benefit given to its employees. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 710<br> -SubTopic 10<br> -Section 25<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=6409733&amp;loc=d3e19396-108361<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6911-107765<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AccruedVacationCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherAccruedLiabilitiesCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses incurred but not yet paid classified as other, due within one year or the normal operating cycle, if longer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6911-107765<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e7018-107765<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section 45<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124098289&amp;loc=d3e6935-107765<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherAccruedLiabilitiesCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductWarrantyAccrualClassifiedCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred through that date and payable for estimated claims under standard and extended warranty protection rights granted to customers. For classified balance sheets, represents the current portion of the liabilities (due within one year or within the normal operating cycle if longer).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=123368208&amp;loc=d3e12524-110249<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.20)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 25<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123377177&amp;loc=d3e11281-110244<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductWarrantyAccrualClassifiedCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>96
<FILENAME>R77.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253528568">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Accrued Expenses - Changes in Warranty Obligations (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MovementInStandardProductWarrantyAccrualRollForward', window );"><strong>Movement in Standard Product Warranty Accrual [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrual', window );">Beginning Balance</a></td>
<td class="nump">$ 5,406<span></span>
</td>
<td class="nump">$ 4,713<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrualWarrantiesIssued', window );">Provisions for warranties issued during the period</a></td>
<td class="nump">3,256<span></span>
</td>
<td class="nump">3,463<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrualPayments', window );">Fulfillment of warranty obligations</a></td>
<td class="num">(3,235)<span></span>
</td>
<td class="num">(2,770)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProductWarrantyAccrual', window );">Ending Balance</a></td>
<td class="nump">$ 5,427<span></span>
</td>
<td class="nump">$ 5,406<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MovementInStandardProductWarrantyAccrualRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MovementInStandardProductWarrantyAccrualRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductWarrantyAccrual">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying value as of the balance sheet date of obligations incurred through that date and payable for estimated claims under standard and extended warranty protection rights granted to customers.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03.15(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=123368208&amp;loc=d3e12565-110249<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (c)(5)<br> -URI http://asc.fasb.org/extlink&amp;oid=123368208&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductWarrantyAccrual</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductWarrantyAccrualPayments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in the standard and extended product warranty accrual from payments made in cash or in kind to satisfy claims under the terms of the standard and extended product warranty.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph ((c)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=123368208&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductWarrantyAccrualPayments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProductWarrantyAccrualWarrantiesIssued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in the standard and extended product warranty accrual from warranties issued.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 460<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph ((c)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=123368208&amp;loc=d3e12565-110249<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProductWarrantyAccrualWarrantiesIssued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>97
<FILENAME>R78.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259790696">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Commitments and Contingencies - Additional Information (Detail) - USD ($)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract', window );"><strong>Commitments and Contingencies Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted', window );">Purchase order outstanding</a></td>
<td class="nump">$ 100,750,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherInventoryPurchasedGoods', window );">Other Inventory, Purchased Goods, Gross</a></td>
<td class="nump">$ 19,448,000<span></span>
</td>
<td class="nump">$ 4,291,000<span></span>
</td>
<td class="nump">$ 3,700,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommitmentsAndContingenciesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommitmentsAndContingenciesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_OtherInventoryPurchasedGoods">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Gross amount of components used by the entity which are bought from another entity rather than produced by the entity.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.6(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherInventoryPurchasedGoods</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Minimum amount to be expended to satisfy the terms of arrangements in which the entity has agreed to expend funds to procure goods or services, excluding long-term purchase commitments or unconditional purchase obligations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(17))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(19))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>98
<FILENAME>R79.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259242184">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Derivative Instruments - Additional Details (Details)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th"><div>Dec. 31, 2021</div></th></tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Not Designated as Hedging Instrument [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1', window );">Maturities of forward of contracts</a></td>
<td class="text">95 days<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Maximum amount of time remaining before foreign currency exchange rate derivatives mature or expire, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>99
<FILENAME>R80.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029248626120">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Derivative Instruments - Outstanding Forward Contracts (Details) - Not Designated as Hedging Instrument [Member]<br> &#8364; in Thousands, &#8361; in Thousands, &#165; in Thousands, &#165; in Thousands, &#163; in Thousands, Ft in Thousands, $ in Thousands, $ in Thousands, $ in Thousands, $ in Thousands, $ in Thousands</strong></div></th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>EUR (&#8364;)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>CNY (&#165;)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>MXN ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>JPY (&#165;)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>GBP (&#163;)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>HUF (Ft)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>CAD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>KRW (&#8361;)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>TWD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>SGD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>EUR (&#8364;)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>CNY (&#165;)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>MXN ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>JPY (&#165;)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>GBP (&#163;)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>HUF (Ft)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>CAD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>KRW (&#8361;)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>TWD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>SGD ($)</div>
</th>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Korean Won [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8361; 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,377<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8361; 6,925,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Euro [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="nump">&#8364; 65,000<span></span>
</td>
<td class="nump">73,748<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8364; 50,000<span></span>
</td>
<td class="nump">61,342<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Japanese Yen [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,213<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#165; 600,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,808<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#165; 600,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Mexican Peso [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6,842<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 140,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">7,776<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 155,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">British Pound [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,552<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#163; 3,370<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,287<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#163; 1,675<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Hungarian Forint [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,155<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">Ft 1,355,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,494<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">Ft 1,330,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Taiwanese Dollar [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,362<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 38,035<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Canadian Dollar [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,167<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,480<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,010<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,285<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Singapore Dollar [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,110<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,465<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">China, Yuan Renminbi</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLineItems', window );"><strong>Derivative [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetNotionalAmount', window );">Derivative Asset, Notional Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 8,500<span></span>
</td>
<td class="nump">&#165; 54,374<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">&#165; 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeAssetNotionalAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Nominal or face amount used to calculate payments on the derivative asset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5579245-113959<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1B<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5580258-113959<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1A<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5579245-113959<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeAssetNotionalAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_KRW">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_KRW</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_EUR">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_EUR</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_JPY">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_JPY</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_MXN">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_MXN</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_GBP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_GBP</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_HUF">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_HUF</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_TWD">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_TWD</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_CAD">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_CAD</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_SGD">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_SGD</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_CurrencyAxis=currency_CNY">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_CurrencyAxis=currency_CNY</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>100
<FILENAME>R81.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250934200">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Derivative Instruments - Balance Sheet Location (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativesFairValueLineItems', window );"><strong>Derivatives, Fair Value [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssets', window );">Net amount of assets presented</a></td>
<td class="nump">$ 39<span></span>
</td>
<td class="nump">$ 265<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLiabilities', window );">Net amount of liabilities presented</a></td>
<td class="nump">230<span></span>
</td>
<td class="nump">38<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Not Designated as Hedging Instrument [Member] | Prepaid Expenses and Other Current Assets [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativesFairValueLineItems', window );"><strong>Derivatives, Fair Value [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssets', window );">Net amount of assets presented</a></td>
<td class="nump">39<span></span>
</td>
<td class="nump">265<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember', window );">Not Designated as Hedging Instrument [Member] | Accrued Expenses [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativesFairValueLineItems', window );"><strong>Derivatives, Fair Value [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLiabilities', window );">Net amount of liabilities presented</a></td>
<td class="nump">$ 230<span></span>
</td>
<td class="nump">$ 38<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value, after the effects of master netting arrangements, of a financial asset or other contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes assets not subject to a master netting arrangement and not elected to be offset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226008-175313<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226052-175313<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13433-108611<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value, after the effects of master netting arrangements, of a financial liability or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes liabilities not subject to a master netting arrangement and not elected to be offset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226008-175313<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13433-108611<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226052-175313<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativesFairValueLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativesFairValueLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=cgnx_AccruedExpensesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=cgnx_AccruedExpensesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>101
<FILENAME>R82.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250142760">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Derivative Instruments - Assets and liabilities presented on a net basis due to the right of offset (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract', window );"><strong>Derivative Instruments and Hedging Activities Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeFairValueOfDerivativeAsset', window );">Derivative Asset, Fair Value, Gross Asset</a></td>
<td class="nump">$ 39<span></span>
</td>
<td class="nump">$ 265<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset', window );">Derivative Asset gross amount offset</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeAssets', window );">Net amount of assets presented</a></td>
<td class="nump">39<span></span>
</td>
<td class="nump">265<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeFairValueOfDerivativeLiability', window );">Derivative Liability, Fair Value, Gross Liability</a></td>
<td class="nump">230<span></span>
</td>
<td class="nump">38<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset', window );">Derivative liability gross amount offset</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeLiabilities', window );">Net amount of liabilities presented</a></td>
<td class="nump">$ 230<span></span>
</td>
<td class="nump">$ 38<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation to return cash collateral under master netting arrangements offset against derivative assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=117331979&amp;loc=d3e41228-113958<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value, after the effects of master netting arrangements, of a financial asset or other contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes assets not subject to a master netting arrangement and not elected to be offset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226008-175313<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226052-175313<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13433-108611<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeFairValueOfDerivativeAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value, before effects of master netting arrangements, of a financial asset or other contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes assets elected not to be offset. Excludes assets not subject to a master netting arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226052-175313<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226000-175313<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 860<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4D<br> -Subparagraph (c)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121570589&amp;loc=SL51823488-111719<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4B<br> -Subparagraph (a),(c)<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5624163-113959<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeFairValueOfDerivativeAsset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeFairValueOfDerivativeLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value, before effects of master netting arrangements, of a financial liability or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes liabilities elected not to be offset. Excludes liabilities not subject to a master netting arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 860<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4D<br> -Subparagraph (c)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121570589&amp;loc=SL51823488-111719<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4B<br> -Subparagraph (a),(c)<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5624163-113959<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226000-175313<br><br>Reference 5: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226052-175313<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeFairValueOfDerivativeLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Fair value, after the effects of master netting arrangements, of a financial liability or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes liabilities not subject to a master netting arrangement and not elected to be offset.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226008-175313<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13433-108611<br><br>Reference 4: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 55<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226052-175313<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of right to receive cash collateral under master netting arrangements offset against derivative liabilities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 45<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=117331979&amp;loc=d3e41228-113958<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 20<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=51824906&amp;loc=SL20225862-175312<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>102
<FILENAME>R83.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029257568680">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Derivative Instruments - Gain (Loss) Recognized in Other Comprehensive Income (Loss) (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_ForeignCurrencyGainLossMember', window );">Foreign currency gain (loss) | Not Designated as Hedging Instrument [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeInstrumentsGainLossLineItems', window );"><strong>Derivative Instruments, Gain (Loss) [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DerivativeGainLossOnDerivativeNet', window );">Gains (losses) recognized in net income</a></td>
<td class="nump">$ 4,262<span></span>
</td>
<td class="num">$ (12,308)<span></span>
</td>
<td class="nump">$ 1,305<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeGainLossOnDerivativeNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in the fair value of derivatives recognized in the income statement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4A<br> -Subparagraph (b)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=125515794&amp;loc=SL5618551-113959<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeGainLossOnDerivativeNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DerivativeInstrumentsGainLossLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DerivativeInstrumentsGainLossLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_ForeignCurrencyGainLossMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_ForeignCurrencyGainLossMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_HedgingDesignationAxis=us-gaap_NondesignatedMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>103
<FILENAME>R84.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259228648">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Revenue Recognition - Narratives (Details) - USD ($)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerAbstract', window );"><strong>Revenue from Contract with Customer [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CapitalizedContractCostGross', window );">Capitalized Contract Cost, Gross</a></td>
<td class="nump">$ 10,854,000<span></span>
</td>
<td class="nump">$ 6,846,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CapitalizedContractCostGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, before accumulated amortization and accumulated impairment loss, of asset recognized from cost incurred to obtain or fulfill contract with customer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 340<br> -SubTopic 40<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123353750&amp;loc=SL49131252-203054<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CapitalizedContractCostGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>104
<FILENAME>R85.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029253392968">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue Recognition - Disaggregation by Geography and Type (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 1,037,098<span></span>
</td>
<td class="nump">$ 811,020<span></span>
</td>
<td class="nump">$ 725,625<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=cgnx_StandardProductandServicesMember', window );">Standard products and services</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">889,253<span></span>
</td>
<td class="nump">674,830<span></span>
</td>
<td class="nump">629,220<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_ProductOrServiceAxis=cgnx_ApplicationofCustomerSpecificSolutionsMember', window );">Application-specific customer solutions</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">147,845<span></span>
</td>
<td class="nump">136,190<span></span>
</td>
<td class="nump">96,405<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_AmericasMember', window );">Americas [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">435,220<span></span>
</td>
<td class="nump">310,027<span></span>
</td>
<td class="nump">277,155<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_EuropeMember', window );">Europe [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">247,744<span></span>
</td>
<td class="nump">208,787<span></span>
</td>
<td class="nump">227,738<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=cgnx_GreaterChinaMember', window );">Greater China [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">200,135<span></span>
</td>
<td class="nump">168,287<span></span>
</td>
<td class="nump">115,061<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=cgnx_OtherAsiaMember', window );">Other Asia [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisaggregationOfRevenueLineItems', window );"><strong>Disaggregation of Revenue [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 153,999<span></span>
</td>
<td class="nump">$ 123,919<span></span>
</td>
<td class="nump">$ 105,671<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisaggregationOfRevenueLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisaggregationOfRevenueLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, excluding 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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9031-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130543-203045<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130545-203045<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI http://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=cgnx_StandardProductandServicesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=cgnx_StandardProductandServicesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_ProductOrServiceAxis=cgnx_ApplicationofCustomerSpecificSolutionsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_ProductOrServiceAxis=cgnx_ApplicationofCustomerSpecificSolutionsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_AmericasMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_AmericasMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_EuropeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_EuropeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=cgnx_GreaterChinaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=cgnx_GreaterChinaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=cgnx_OtherAsiaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=cgnx_OtherAsiaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>105
<FILENAME>R86.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029260622072">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue Recognition - Allowance for Credit Loss (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward', window );"><strong>Accounts Receivable, Allowance for Credit Loss [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivable', window );">Beginning balance</a></td>
<td class="nump">$ 831<span></span>
</td>
<td class="nump">$ 530<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ProvisionForDoubtfulAccounts', window );">Increases to the allowance for credit losses</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">600<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs', window );">Write-offs, net of recoveries</a></td>
<td class="num">(55)<span></span>
</td>
<td class="num">(300)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment', window );">Foreign exchange rate changes</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">1<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllowanceForDoubtfulAccountsReceivable', window );">Ending balance</a></td>
<td class="nump">$ 776<span></span>
</td>
<td class="nump">$ 831<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Accounts Receivable, Allowance For Credit Loss, Foreign Exchange Rate Adjustment</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of allowance for credit loss on accounts receivable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124255953&amp;loc=SL82919249-210447<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 310<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=123577603&amp;loc=d3e5074-111524<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=124255953&amp;loc=SL82919249-210447<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=124255206&amp;loc=SL82895884-210446<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllowanceForDoubtfulAccountsReceivable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of direct write-downs of accounts receivable charged against the allowance.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=124255953&amp;loc=SL82919249-210447<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ProvisionForDoubtfulAccounts">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expense (reversal of expense) for expected credit loss on accounts receivable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 326<br> -SubTopic 20<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124255953&amp;loc=SL82919249-210447<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ProvisionForDoubtfulAccounts</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>106
<FILENAME>R87.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254120008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Revenue Recognition - Deferred Revenue and Customer Deposits Rollforward (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CustomerContractsLiabilityCurrentRollForward', window );"><strong>Customer Contracts Liability, Current</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiabilityCurrent', window );">Beginning balance</a></td>
<td class="nump">$ 21,274<span></span>
</td>
<td class="nump">$ 14,432<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease', window );">Deferred revenue and customer deposits</a></td>
<td class="nump">31,907<span></span>
</td>
<td class="nump">19,014<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized', window );">Recognition of revenue deferred in prior period</a></td>
<td class="num">(17,403)<span></span>
</td>
<td class="num">(12,443)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ContractLiabilityForeignExchangeRateChanges', window );">Foreign exchange rate changes</a></td>
<td class="num">(35)<span></span>
</td>
<td class="nump">271<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ContractWithCustomerLiabilityCurrent', window );">End balance</a></td>
<td class="nump">$ 35,743<span></span>
</td>
<td class="nump">$ 21,274<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ContractLiabilityForeignExchangeRateChanges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Contract Liability Foreign Exchange Rate Changes</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ContractLiabilityForeignExchangeRateChanges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Contract with Customer, Liability, Current And Prior Period Revenue Recognized</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Contract With Customer, Liability, Period Increase (Decrease)</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_CustomerContractsLiabilityCurrentRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Customer Contracts Liability Current [Roll Forward]</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_CustomerContractsLiabilityCurrentRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ContractWithCustomerLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123360276&amp;loc=SL49130531-203044<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123360276&amp;loc=SL49130532-203044<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130549-203045<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ContractWithCustomerLiabilityCurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>107
<FILENAME>R88.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250320648">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Shareholders' Equity - Additional Information (Detail)<br></strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="4">3 Months Ended</th>
<th class="th" colspan="1">9 Months Ended</th>
<th class="th" colspan="6">12 Months Ended</th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th">
<div>Dec. 28, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($) </div>
<div>Vote </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th">
<div>Jun. 28, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>$ / shares</div>
</th>
<th class="th">
<div>Sep. 29, 2019 </div>
<div>$ / shares</div>
</th>
<th class="th" colspan="2">
<div>Dec. 31, 2021 </div>
<div>USD ($) </div>
<div>Vote </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th" colspan="2">
<div>Dec. 31, 2020 </div>
<div>USD ($) </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th" colspan="2">
<div>Dec. 31, 2019 </div>
<div>USD ($) </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th">
<div>Mar. 12, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Oct. 29, 2018 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Apr. 25, 2018 </div>
<div>shares</div>
</th>
<th class="th">
<div>Apr. 28, 2016 </div>
<div>shares</div>
</th>
<th class="th">
<div>Apr. 27, 2016 </div>
<div>shares</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ClassOfStockLineItems', window );"><strong>Class of Stock [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockSharesAuthorized', window );">Authorized shares | shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">400,000<span></span>
</td>
<td class="nump">400,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">400,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">400,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PreferredStockParOrStatedValuePerShare', window );">Preferred stock par value (in dollars per share) | $ / shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 0.01<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockSharesAuthorized', window );">Common stock, shares authorized | shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">300,000,000<span></span>
</td>
<td class="nump">300,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">300,000,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">300,000,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">300,000,000<span></span>
</td>
<td class="nump">10,000,000<span></span>
</td>
<td class="nump">200,000,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockParOrStatedValuePerShare', window );">Common stock par value, in dollars per share | $ / shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.002<span></span>
</td>
<td class="nump">$ 0.002<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.002<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 0.002<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_VoteEntitledForEachCommonShareOutstanding', window );">Vote entitled for each common share outstanding | Vote</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodValue', window );">Repurchase of common stock</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 161,652,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 51,036,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 61,690,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockDividendsPerShareDeclared', window );">Cash dividend declared per common share | $ / shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2.00<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsOfDividends', window );">Payments of dividends</a></td>
<td class="nump">$ 351,428,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 43,263,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 390,508,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 35,124,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CommonStockDividendsPerShareCashPaid', window );">Cash dividends per common share (in dollars per share) | $ / shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.065<span></span>
</td>
<td class="nump">$ 0.060<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0.055<span></span>
</td>
<td class="nump">$ 0.050<span></span>
</td>
<td class="nump">$ 0.245<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">$ 2.225<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="nump">$ 0.205<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Stock-based compensation expense and the related income tax benefit recognized, credits</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,401,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Income tax expense at U.S. federal statutory corporate tax rate</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">21.00%<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">21.00%<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareRepurchaseProgramAxis=cgnx_RepurchaseProgramOctober2018Member', window );">Repurchase Program October 2018 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ClassOfStockLineItems', window );"><strong>Class of Stock [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchaseProgramAuthorizedAmount1', window );">Repurchase of authorized common stock</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 200,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodShares', window );">Repurchase of common stock, shares | shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">957,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">1,215,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">1,398,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodValue', window );">Repurchase of common stock</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 78,652,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 51,036,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 61,690,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareRepurchaseProgramAxis=cgnx_RepurchaseProgramMarch2020Member', window );">Repurchase Program March 2020 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ClassOfStockLineItems', window );"><strong>Class of Stock [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchaseProgramAuthorizedAmount1', window );">Repurchase of authorized common stock</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 200,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodShares', window );">Repurchase of common stock, shares | shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,060,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled', window );">Repurchase of common stock, not yet settled (in shares) | shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchasedDuringPeriodValue', window );">Repurchase of common stock</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 83,000,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1', window );">Stock Repurchase Program, Remaining Authorized Repurchase Amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 117,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 117,000,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr><td colspan="18"></td></tr>
<tr><td colspan="18"><table class="outerFootnotes" width="100%"><tr class="outerFootnote">
<td style="vertical-align: top; width: 12pt;" valign="top">[1]</td>
<td style="vertical-align: top;" valign="top">170,820&#160;</td>
</tr></table></td></tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Stock Repurchased During Period, Shares Not Yet Settled</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_VoteEntitledForEachCommonShareOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Vote entitled for each common share outstanding.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_VoteEntitledForEachCommonShareOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ClassOfStockLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ClassOfStockLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockDividendsPerShareCashPaid">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate dividends paid during the period for each share of common stock outstanding.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockDividendsPerShareCashPaid</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockDividendsPerShareDeclared">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Aggregate dividends declared during the period for each share of common stock outstanding.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockDividendsPerShareDeclared</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of common stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CommonStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The maximum number of common shares permitted to be issued by an entity's charter and bylaws.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CommonStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of domestic federal statutory tax rate applicable to pretax income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsOfDividends">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Cash outflow in the form of capital distributions and dividends to common shareholders, preferred shareholders and noncontrolling interests.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 15<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3291-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsOfDividends</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockParOrStatedValuePerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 13<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=SL123496158-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockParOrStatedValuePerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PreferredStockSharesAuthorized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PreferredStockSharesAuthorized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchaseProgramAuthorizedAmount1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of stock repurchase plan authorized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchaseProgramAuthorizedAmount1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount remaining of a stock repurchase plan authorized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedDuringPeriodShares">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of shares that have been repurchased during the period and have not been retired and are not held in treasury. Some state laws may govern the circumstances under which an entity may acquire its own stock and prescribe the accounting treatment therefore. This element is used when state law does not recognize treasury stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchasedDuringPeriodShares</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockRepurchasedDuringPeriodValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Equity impact of the value of stock that has been repurchased during the period and has not been retired and is not held in treasury. Some state laws may mandate the circumstances under which an entity may acquire its own stock and prescribe the accounting treatment therefore. This element is used when state law does not recognize treasury stock.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockRepurchasedDuringPeriodValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareRepurchaseProgramAxis=cgnx_RepurchaseProgramOctober2018Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareRepurchaseProgramAxis=cgnx_RepurchaseProgramOctober2018Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareRepurchaseProgramAxis=cgnx_RepurchaseProgramMarch2020Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareRepurchaseProgramAxis=cgnx_RepurchaseProgramMarch2020Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>108
<FILENAME>R89.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250814552">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stock-Based Compensation Expense - Additional Information (Detail)<br></strong></div></th>
<th class="th" colspan="1">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Jun. 28, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($) </div>
<div>group </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($) </div>
<div>$ / shares </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($) </div>
<div>$ / shares </div>
<div>shares</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_NumberOfGroupsWithinEmployeePopulation', window );">Number of groups within the employee population | group</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement', window );">Estimated forfeiture rate for unvested options for senior management</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement', window );">Estimated forfeiture rate for unvested options for all non-senior management</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">12.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates', window );">Increase in compensation expense due to revised estimated forfeiture rates</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 255,000<span></span>
</td>
<td class="nump">$ 1,787,000<span></span>
</td>
<td class="nump">$ 499,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Weighted-average grant-date fair values of stock options granted | $ / shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 33.79<span></span>
</td>
<td class="nump">$ 19.62<span></span>
</td>
<td class="nump">$ 18.62<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue', window );">Total intrinsic values of stock options exercised</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 80,369,000<span></span>
</td>
<td class="nump">$ 166,796,000<span></span>
</td>
<td class="nump">$ 90,762,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue', window );">Total fair values of stock options vested</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">45,328,000<span></span>
</td>
<td class="nump">45,998,000<span></span>
</td>
<td class="nump">38,974,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions', window );">Total unrecognized compensation expense related to non-vested stock options</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 47,690,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Recognition period for unrecognized compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">1 year 4 months 24 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 43,774,000<span></span>
</td>
<td class="nump">42,661,000<span></span>
</td>
<td class="nump">45,589,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense', window );">Income tax benefit recognized related to stock-based compensation expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">6,764,000<span></span>
</td>
<td class="nump">6,569,000<span></span>
</td>
<td class="nump">7,756,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount', window );">Compensation expense capitalized</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensation', window );">Stock-based compensation expense and the related income tax benefit recognized, credits</a></td>
<td class="nump">$ 1,401,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember', window );">Employee Stock Option [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant', window );">Shares available for grant under stock option plans | shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">15,640,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ExpirationPeriodOfStockOptionPlan', window );">Expiration period of stock option plan</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">10 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockUnitsRSUMember', window );">Restricted Stock Units (RSUs) [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted-average exercise price | $ / shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 52.09<span></span>
</td>
<td class="nump">$ 48.61<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Vested (in shares) | shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">16,000<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Employee Stock Option [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period for stock option plans</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">4 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MinimumMember', window );">Minimum [Member] | Performance Shares [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period for stock option plans</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Employee Stock Option [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period for stock option plans</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">5 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RangeAxis=srt_MaximumMember', window );">Maximum [Member] | Performance Shares [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period for stock option plans</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">3 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Employee service share based compensation recognized period costs capitalized amount.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Estimated forfeiture rate for unvested options for all non-senior management.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Estimated forfeiture rate for unvested options for senior management.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ExpirationPeriodOfStockOptionPlan">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Expiration period of stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ExpirationPeriodOfStockOptionPlan</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Increase (decrease) in compensation expense due to revised estimated forfeiture rates.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_NumberOfGroupsWithinEmployeePopulation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of groups within employee population.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_NumberOfGroupsWithinEmployeePopulation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Share based compensation arrangement by share based payment award options vested fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Shares based compensation arrangement by shares based payment award options exercised intrinsic value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllocatedShareBasedCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5047-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.F)<br> -URI http://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllocatedShareBasedCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cost to be recognized for option under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of tax benefit for recognition of expense of award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of noncash expense for share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (d)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockUnitsRSUMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockUnitsRSUMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MinimumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MinimumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_PerformanceSharesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RangeAxis=srt_MaximumMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RangeAxis=srt_MaximumMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>109
<FILENAME>R90.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250080008">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stock-Based Compensation Expense - Summary of Stock Option Activity (Detail)<br> $ / shares in Units, shares in Thousands, $ in Thousands</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($) </div>
<div>$ / shares </div>
<div>shares</div>
</th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward', window );"><strong>Shares</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Beginning balance outstanding | shares</a></td>
<td class="nump">8,970<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod', window );">Granted | shares</a></td>
<td class="nump">564<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Exercised | shares</a></td>
<td class="num">(1,694)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod', window );">Forfeited or expired | shares</a></td>
<td class="num">(230)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber', window );">Ending balance outstanding | shares</a></td>
<td class="nump">7,610<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Beginning balance outstanding, weighted-average exercise price | $ / shares</a></td>
<td class="nump">$ 44.73<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice', window );">Granted, weighted-average exercise price | $ / shares</a></td>
<td class="nump">88.62<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice', window );">Exercised, weighted-average exercise price | $ / shares</a></td>
<td class="nump">37.70<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice', window );">Forfeited or expired, weighted-average exercise price | $ / shares</a></td>
<td class="nump">50.34<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice', window );">Ending balance outstanding, weighted-average exercise price | $ / shares</a></td>
<td class="nump">$ 49.38<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber', window );">Exercisable, Shares | shares</a></td>
<td class="nump">3,442<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber', window );">Options vested or expected to vest | shares</a></td>
<td class="nump">7,134<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice', window );">Exercisable, weighted-average exercise price | $ / shares</a></td>
<td class="nump">$ 39.87<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice', window );">Options vested or expected to vest, weighted-average exercise price | $ / shares</a></td>
<td class="nump">$ 48.66<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2', window );">Outstanding, weighted-average remaining contractual term (in years)</a></td>
<td class="text">6 years 6 months 25 days<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1', window );">Exercisable, weighted-average remaining contractual term (in years)</a></td>
<td class="text">5 years 5 months 12 days<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1', window );">Options vested or expected to vest, weighted-average remaining contractual term (in years)</a></td>
<td class="text">6 years 5 months 26 days<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue', window );">Outstanding, aggregate intrinsic value | $</a></td>
<td class="nump">$ 222,053<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue', window );">Exercisable, aggregate intrinsic value | $</a></td>
<td class="nump">130,448<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue', window );">Options vested or expected to vest, aggregate intrinsic value | $</a></td>
<td class="nump">$ 212,746<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Share based compensation arrangement by share based payment award options exercisable aggregate intrinsic value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>For presentations that combine terminations, 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 or that expired.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)-(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price of options that were either forfeited or expired.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)-(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Net number of share options (or share units) granted during the period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of options outstanding, including both vested and non-vested options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of fully vested and expected to vest exercisable options that may be converted into shares under option plan. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount by which current fair value of underlying stock exceeds exercise price of fully vested and expected to vest options outstanding. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted-average exercise price, at which grantee can acquire shares reserved for issuance, for fully vested and expected to vest options outstanding. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average price at which option holders acquired shares when converting their stock options into shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for option awards outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (e)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of share options (or share units) exercised during the current period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(28))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(29))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123467817&amp;loc=d3e21463-112644<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>110
<FILENAME>R91.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029352574152">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stock-Based Compensation Expense - Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted (Detail) - Employee Stock Option [Member]<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate', window );">Risk-free rate</a></td>
<td class="nump">1.30%<span></span>
</td>
<td class="nump">1.40%<span></span>
</td>
<td class="nump">2.70%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate', window );">Expected dividend yield</a></td>
<td class="nump">0.27%<span></span>
</td>
<td class="nump">0.41%<span></span>
</td>
<td class="nump">0.39%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate', window );">Expected volatility</a></td>
<td class="nump">39.00%<span></span>
</td>
<td class="nump">37.00%<span></span>
</td>
<td class="nump">37.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1', window );">Expected term (in years)</a></td>
<td class="text">6 years<span></span>
</td>
<td class="text">6 years<span></span>
</td>
<td class="text">5 years 3 months 18 days<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The risk-free interest rate assumption that is used in valuing an option on its own shares.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(iv)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (f)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.D.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>111
<FILENAME>R92.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250113272">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stock-Based Compensation Expense - Summary of Restricted Stock Option Activity (Detail) - Restricted Stock [Member]<br> shares in Thousands</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th">
<div>Dec. 31, 2021 </div>
<div>$ / shares </div>
<div>shares</div>
</th></tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward', window );"><strong>Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Nonvested beginning balance outstanding | shares</a></td>
<td class="nump">554<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod', window );">Granted | shares</a></td>
<td class="nump">335<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Vested | shares</a></td>
<td class="num">(16)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Forfeited or expired | shares</a></td>
<td class="num">(50)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber', window );">Nonvested ending balance outstanding | shares</a></td>
<td class="nump">823<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward', window );"><strong>Weighted-Average Grant Fair Value</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Nonvested beginning balance, weighted-average exercise price | $ / shares</a></td>
<td class="nump">$ 51.27<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted-average exercise price | $ / shares</a></td>
<td class="nump">87.03<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue', window );">Vested, weighted-average exercise price | $ / shares</a></td>
<td class="nump">57.31<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue', window );">Forfeited or expired, weighted-average exercise price | $ / shares</a></td>
<td class="nump">58.47<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Nonvested ending balance, weighted-average exercise price | $ / shares</a></td>
<td class="nump">$ 65.26<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(1)(iv)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(3)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(i)-(ii)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)(2)(iii)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AwardTypeAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>112
<FILENAME>R93.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250975960">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Stock-Based Compensation Expense - Stock-Based Compensation Expense (Detail) - USD ($)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract', window );"><strong>Share-based Payment Arrangement [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1', window );">Recognition period for unrecognized compensation expense</a></td>
<td class="text">1 year 4 months 24 days<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems', window );"><strong>Employee Service Share-based Compensation, Allocation of Recognized Period Costs [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 43,774,000<span></span>
</td>
<td class="nump">$ 42,661,000<span></span>
</td>
<td class="nump">$ 45,589,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense', window );">Income tax benefit recognized related to stock-based compensation expense</a></td>
<td class="nump">6,764,000<span></span>
</td>
<td class="nump">6,569,000<span></span>
</td>
<td class="nump">7,756,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount', window );">Compensation expense capitalized</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=cgnx_ProductCostOfRevenueMember', window );">Product cost of revenue [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems', window );"><strong>Employee Service Share-based Compensation, Allocation of Recognized Period Costs [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock-based compensation expense</a></td>
<td class="nump">1,345,000<span></span>
</td>
<td class="nump">1,365,000<span></span>
</td>
<td class="nump">1,504,000<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember', window );">Research, development, and engineering expenses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems', window );"><strong>Employee Service Share-based Compensation, Allocation of Recognized Period Costs [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock-based compensation expense</a></td>
<td class="nump">13,535,000<span></span>
</td>
<td class="nump">13,387,000<span></span>
</td>
<td class="nump">15,748,000<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeStatementLocationAxis=cgnx_SellingGeneralAndAdministrativeMember', window );">Selling, general, and administrative [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems', window );"><strong>Employee Service Share-based Compensation, Allocation of Recognized Period Costs [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AllocatedShareBasedCompensationExpense', window );">Stock-based compensation expense</a></td>
<td class="nump">$ 28,894,000<span></span>
</td>
<td class="nump">$ 27,909,000<span></span>
</td>
<td class="nump">$ 28,337,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Employee service share based compensation recognized period costs capitalized amount.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AllocatedShareBasedCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5047-113901<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 14.F)<br> -URI http://asc.fasb.org/extlink&amp;oid=122041274&amp;loc=d3e301413-122809<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AllocatedShareBasedCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of tax benefit for recognition of expense of award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (h)(1)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=120381028&amp;loc=d3e5070-113901<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=cgnx_ProductCostOfRevenueMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=cgnx_ProductCostOfRevenueMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=us-gaap_ResearchAndDevelopmentExpenseMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeStatementLocationAxis=cgnx_SellingGeneralAndAdministrativeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeStatementLocationAxis=cgnx_SellingGeneralAndAdministrativeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>113
<FILENAME>R94.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029248561528">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Employee Savings Plan - Additional Information (Detail) - USD ($)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CompensationAndRetirementDisclosureAbstract', window );"><strong>Retirement Benefits [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan', window );">Minimum age to be eligible to defined contribution plan</a></td>
<td class="text">21 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent', window );">Maximum contribution by company expressed as percentage of employee pre-tax salary</a></td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch', window );">Company match percent</a></td>
<td class="nump">50.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent', window );">Percent of employee contribution</a></td>
<td class="nump">6.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CompanyContributionsVestAtEndOfOneYear', window );">Company contributions vest at end of one year</a></td>
<td class="nump">25.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CompanyContributionsVestAtEndOfTwoYear', window );">Company contributions vest at end of two years</a></td>
<td class="nump">50.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CompanyContributionsVestAtEndOfThreeYears', window );">Company contributions vest at end of three years</a></td>
<td class="nump">75.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_CompanyContributionsVestAtEndOfFourYears', window );">Company contributions vest at end of four years</a></td>
<td class="nump">100.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DefinedContributionPlanCostRecognized', window );">Company contributions to employee savings plan</a></td>
<td class="nump">$ 2,898,000<span></span>
</td>
<td class="nump">$ 2,636,000<span></span>
</td>
<td class="nump">$ 2,729,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_CompanyContributionsVestAtEndOfFourYears">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Company contributions vest at end of four years.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_CompanyContributionsVestAtEndOfFourYears</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_CompanyContributionsVestAtEndOfOneYear">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Company Contributions Vest At End Of One Year</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_CompanyContributionsVestAtEndOfOneYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_CompanyContributionsVestAtEndOfThreeYears">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Company contributions vest at end of three years.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_CompanyContributionsVestAtEndOfThreeYears</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_CompanyContributionsVestAtEndOfTwoYear">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Company contributions vest at end of two year.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_CompanyContributionsVestAtEndOfTwoYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Minimum age to be eligible to defined contribution plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:durationItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CompensationAndRetirementDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CompensationAndRetirementDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedContributionPlanCostRecognized">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cost for defined contribution plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 715<br> -SubTopic 70<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=49170846&amp;loc=d3e28014-114942<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DefinedContributionPlanCostRecognized</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of employees' gross pay for which the employer contributes a matching contribution to a defined contribution plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage employer matches of the employee's percentage contribution matched.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Maximum percentage of employee gross pay the employee may contribute to a defined contribution plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>114
<FILENAME>R95.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250479256">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Additional Information (Details) - USD ($)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty', window );">Discrete tax expense for migration of acquired intellectual property</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">18.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Reserve for tax uncertainties</a></td>
<td class="nump">$ 13,812,000<span></span>
</td>
<td class="nump">$ 13,952,000<span></span>
</td>
<td class="nump">$ 11,591,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential', window );">Discrete tax benefit for changes to international tax structure</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">87,500,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DeferredTaxAssetsForeignTaxStructureChange', window );">Foreign tax structure deferred tax asset</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">437,500,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome', window );">GILTI tax basis differences</a></td>
<td class="nump">327,725,000<span></span>
</td>
<td class="nump">339,364,000<span></span>
</td>
<td class="nump">350,000,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic', window );">Domestic income from continuing operations before taxes</a></td>
<td class="nump">121,729,000<span></span>
</td>
<td class="nump">39,425,000<span></span>
</td>
<td class="nump">31,396,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign', window );">Foreign income from continuing operations before taxes</a></td>
<td class="nump">$ 197,171,000<span></span>
</td>
<td class="nump">$ 147,486,000<span></span>
</td>
<td class="nump">$ 131,598,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Income tax rate</a></td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_Cash', window );">Cash</a></td>
<td class="nump">$ 185,624,000<span></span>
</td>
<td class="nump">$ 266,609,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential', window );">Foreign tax rate differential</a></td>
<td class="nump">5.00%<span></span>
</td>
<td class="nump">6.00%<span></span>
</td>
<td class="nump">9.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount', window );">Reduction of income tax expense for adoption of ASU 2016-09</a></td>
<td class="nump">$ 11,036,000<span></span>
</td>
<td class="nump">$ 12,788,000<span></span>
</td>
<td class="nump">$ 6,472,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent', window );">Discrete tax benefit related to employee stock option exercises</a></td>
<td class="nump">3.00%<span></span>
</td>
<td class="nump">7.00%<span></span>
</td>
<td class="nump">4.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInOperatingActivities', window );">Net cash provided by operating activities</a></td>
<td class="nump">$ 314,065,000<span></span>
</td>
<td class="nump">$ 242,400,000<span></span>
</td>
<td class="nump">$ 253,311,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetCashProvidedByUsedInFinancingActivities', window );">Net cash used in financing activities</a></td>
<td class="nump">141,623,000<span></span>
</td>
<td class="nump">316,868,000<span></span>
</td>
<td class="nump">32,233,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense', window );">Income tax penalties and interest expense</a></td>
<td class="nump">281,000<span></span>
</td>
<td class="nump">340,000<span></span>
</td>
<td class="nump">116,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent', window );">Reserve for income taxes</a></td>
<td class="nump">14,780,000<span></span>
</td>
<td class="nump">14,257,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets', window );">Unrecognized tax benefit shown as a reduction to noncurrent deferred tax assets</a></td>
<td class="nump">1,028,000<span></span>
</td>
<td class="nump">1,028,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued', window );">Interest and penalties, gross</a></td>
<td class="nump">1,996,000<span></span>
</td>
<td class="nump">1,332,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves', window );">Minimum decrease in income tax expense due to release in reserves</a></td>
<td class="nump">2,000,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves', window );">Maximum decrease in income tax expense due to release in reserves</a></td>
<td class="nump">3,500,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Deferred tax assets, valuation allowance</a></td>
<td class="nump">8,188,000<span></span>
</td>
<td class="nump">8,568,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxesPaidNet', window );">Income tax paid net</a></td>
<td class="nump">49,435,000<span></span>
</td>
<td class="nump">33,695,000<span></span>
</td>
<td class="nump">13,443,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilities', window );">Deferred tax liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">332,344,000<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_UnrecognizedTaxBenefitsGross', window );">Unrecognized Tax Benefits, Gross</a></td>
<td class="nump">15,808,000<span></span>
</td>
<td class="nump">15,285,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DiscreteTaxItemsAxis=cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember', window );">Foreign Tax Benefit - Gains Taxed Outside U.S. [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign', window );">1. Effective income tax rate reconciliation, tax settlement, foreign, amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">13,984,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DiscreteTaxItemsAxis=cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember', window );">Foreign Tax Expense - Transfer Price Adjustment [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign', window );">1. Effective income tax rate reconciliation, tax settlement, foreign, amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,267,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DiscreteTaxItemsAxis=cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember', window );">Discrete Tax Expense - Foreign Tax Filing Adjustments [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign', window );">1. Effective income tax rate reconciliation, tax settlement, foreign, amount</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 843,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardAxis=us-gaap_ResearchMember', window );">Research Tax Credit Carryforward [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Deferred tax assets, valuation allowance</a></td>
<td class="nump">11,750,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardAxis=cgnx_StateResearchAndExperimentationMember', window );">State Research And Experimentation [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch', window );">Deferred tax assets, tax credit carryforwards, research</a></td>
<td class="nump">$ 13,250,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember', window );">Foreign Tax Authority [Member] | Revenue Commissioners, Ireland [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Income tax rate</a></td>
<td class="nump">12.50%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember', window );">Foreign Tax Authority [Member] | State Administration of Taxation, China [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Income tax rate</a></td>
<td class="nump">25.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember', window );">Foreign Tax Authority [Member] | KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Income tax rate</a></td>
<td class="nump">22.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember', window );">Domestic Tax Authority [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Income tax rate</a></td>
<td class="nump">21.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_TaxCreditCarryforwardLineItems', window );"><strong>Tax Credit Carryforward [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Reserve for tax uncertainties</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,700,000<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar', window );">Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 28,528,000<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DeferredTaxAssetsForeignTaxStructureChange">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Deferred Tax Assets, Foreign Tax Structure Change</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DeferredTaxAssetsForeignTaxStructureChange</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Deferred Tax Liabilities, Tax Cuts And Jobs Act, Global Intangible Low Tax Income</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Maximum decrease in income tax expense due to release in reserves.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Minimum decrease in income tax expense due to release in reserves.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_UnrecognizedTaxBenefitsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Unrecognized Tax Benefits, Gross</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_UnrecognizedTaxBenefitsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Unrecognized tax benefit shown as a reduction to noncurrent deferred tax assets as a result of net operating loss carryforward, a similar tax loss, or a tax credit carryforward.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_Cash">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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. Excludes cash and cash equivalents within disposal group and discontinued operation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 946<br> -SubTopic 210<br> -Section 45<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=118262064&amp;loc=SL116631418-115840<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 946<br> -SubTopic 210<br> -Section 45<br> -Paragraph 21<br> -URI http://asc.fasb.org/extlink&amp;oid=118262064&amp;loc=SL116631419-115840<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_Cash</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(15)(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible research tax credit carryforwards.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32559-109319<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of domestic federal statutory tax rate applicable to pretax income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operation, attributable to expense for award under share-based payment arrangement. Excludes expense determined to be nondeductible upon grant or after for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 740<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120384911&amp;loc=d3e23163-113944<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operation, attributable to expense for award under share-based payment arrangement. Excludes expense determined to be nondeductible upon grant or after for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 740<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120384911&amp;loc=d3e23163-113944<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax expense (benefit).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax settlement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxReconciliationTaxSettlementsForeign</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxesPaidNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income, net of any cash received during the current period as refunds for the overpayment of taxes.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=123431023&amp;loc=d3e4297-108586<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxesPaidNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount recognized for uncertainty in income taxes classified as noncurrent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02.24)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LiabilityForUncertainTaxPositionsNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInFinancingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInFinancingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetCashProvidedByUsedInOperatingActivities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 25<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3536-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 24<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3521-108585<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetCashProvidedByUsedInOperatingActivities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TaxCreditCarryforwardLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TaxCreditCarryforwardLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of unrecognized tax benefits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10B<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=SL37586934-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount accrued for interest on an underpayment of income taxes and penalties related to a tax position claimed or expected to be claimed in the tax return.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32718-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expense for interest on an underpayment of income taxes and penalties related to a tax position claimed or expected to be claimed in the tax return.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32718-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DiscreteTaxItemsAxis=cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DiscreteTaxItemsAxis=cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DiscreteTaxItemsAxis=cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DiscreteTaxItemsAxis=cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DiscreteTaxItemsAxis=cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DiscreteTaxItemsAxis=cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TaxCreditCarryforwardAxis=us-gaap_ResearchMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TaxCreditCarryforwardAxis=us-gaap_ResearchMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_TaxCreditCarryforwardAxis=cgnx_StateResearchAndExperimentationMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TaxCreditCarryforwardAxis=cgnx_StateResearchAndExperimentationMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=us-gaap_ForeignCountryMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityNameAxis=us-gaap_RevenueCommissionersIrelandMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityNameAxis=us-gaap_RevenueCommissionersIrelandMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityNameAxis=us-gaap_StateAdministrationOfTaxationChinaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityNameAxis=us-gaap_StateAdministrationOfTaxationChinaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityNameAxis=country_KP">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityNameAxis=country_KP</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxAuthorityAxis=us-gaap_DomesticCountryMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>115
<FILENAME>R96.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250230664">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Constituents of Provision for Income Taxes (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract', window );"><strong>Current:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentFederalTaxExpenseBenefit', window );">Federal</a></td>
<td class="nump">$ 27,870<span></span>
</td>
<td class="nump">$ 160<span></span>
</td>
<td class="nump">$ 15,854<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentStateAndLocalTaxExpenseBenefit', window );">State</a></td>
<td class="nump">5,372<span></span>
</td>
<td class="nump">921<span></span>
</td>
<td class="nump">2,108<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentForeignTaxExpenseBenefit', window );">Foreign</a></td>
<td class="nump">8,406<span></span>
</td>
<td class="nump">13,197<span></span>
</td>
<td class="nump">30,670<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_CurrentIncomeTaxExpenseBenefit', window );">Current income tax expense (benefit), Total</a></td>
<td class="nump">41,648<span></span>
</td>
<td class="nump">14,278<span></span>
</td>
<td class="nump">48,632<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract', window );"><strong>Deferred:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredFederalIncomeTaxExpenseBenefit', window );">Federal</a></td>
<td class="num">(19,266)<span></span>
</td>
<td class="num">(18,266)<span></span>
</td>
<td class="nump">352,808<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit', window );">State</a></td>
<td class="num">(769)<span></span>
</td>
<td class="num">(556)<span></span>
</td>
<td class="nump">183<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredForeignIncomeTaxExpenseBenefit', window );">Foreign</a></td>
<td class="nump">17,406<span></span>
</td>
<td class="nump">15,269<span></span>
</td>
<td class="num">(442,494)<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxExpenseBenefit', window );">Deferred income tax expense (benefit), Total</a></td>
<td class="num">(2,629)<span></span>
</td>
<td class="num">(3,553)<span></span>
</td>
<td class="num">(89,503)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income tax expense (benefit), continuing operations, Total</a></td>
<td class="nump">$ 39,019<span></span>
</td>
<td class="nump">$ 10,725<span></span>
</td>
<td class="num">$ (40,871)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentFederalTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current federal tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentFederalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentForeignTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentForeignTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) pertaining to taxable income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_CurrentStateAndLocalTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current state and local tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_CurrentStateAndLocalTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredFederalIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred federal income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredFederalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredForeignIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredForeignIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.1)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred state and local tax expense (benefit) pertaining to income (loss) from continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32639-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 3: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(1)(Note 1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32672-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123586238&amp;loc=d3e38679-109324<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>116
<FILENAME>R97.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250964152">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Reconciliation of the United States Federal Statutory Corporate Tax Rate to Company's Effective Tax Rate or Income Tax Provision (Details)<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxDisclosureAbstract', window );"><strong>Income Tax Disclosure [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate', window );">Income tax expense at U.S. federal statutory corporate tax rate</a></td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
<td class="nump">21.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes', window );">State income taxes, net of federal benefit</a></td>
<td class="nump">1.00%<span></span>
</td>
<td class="nump">1.00%<span></span>
</td>
<td class="nump">2.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential', window );">Foreign tax rate differential</a></td>
<td class="num">(5.00%)<span></span>
</td>
<td class="num">(6.00%)<span></span>
</td>
<td class="num">(9.00%)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits', window );">Tax credit</a></td>
<td class="num">(2.00%)<span></span>
</td>
<td class="num">(1.00%)<span></span>
</td>
<td class="num">(1.00%)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent', window );">Discrete tax benefit related to employee stock options</a></td>
<td class="num">(3.00%)<span></span>
</td>
<td class="num">(7.00%)<span></span>
</td>
<td class="num">(4.00%)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements', window );">Discrete tax expense (benefit) related to tax return filings</a></td>
<td class="num">(1.00%)<span></span>
</td>
<td class="num">(5.00%)<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign', window );">Effective Income Tax Rate Reconciliation, Tax Settlement, Foreign, Percent</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">1.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty', window );">Discrete tax expense related to migration of acquired IP</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">18.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate', window );">Discrete tax benefit related to change in tax structure</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(268.00%)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent', window );">Discrete tax expense related to GILTI impact of change in tax structure</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">214.00%<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent', window );">Other discrete tax events</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(1.00%)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments', window );">Other</a></td>
<td class="nump">1.00%<span></span>
</td>
<td class="nump">2.00%<span></span>
</td>
<td class="nump">3.00%<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations', window );">Income tax expense (benefit)</a></td>
<td class="nump">12.00%<span></span>
</td>
<td class="nump">6.00%<span></span>
</td>
<td class="num">(25.00%)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Effective Income Tax Rate Reconciliation, Tax Cuts and Jobs Act, Global Intangible Low Tax Income, Percent</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateContinuingOperations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateContinuingOperations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of domestic federal statutory tax rate applicable to pretax income (loss).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to changes in the income tax rates.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference, between reported income tax expense (benefit) and the expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations, that is attributable to tax exempt income, equity in earnings (loss) of an unconsolidated subsidiary, minority interest income (expense), tax holiday, disposition of a business, disposition of an asset, repatriation of foreign earnings, repatriation of foreign earnings jobs creation act of 2004, change in enacted tax rate, prior year income taxes, change in deferred tax asset valuation allowance, and other adjustments.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operation, attributable to expense for award under share-based payment arrangement. Excludes expense determined to be nondeductible upon grant or after for award under share-based payment arrangement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 740<br> -Section 35<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=120384911&amp;loc=d3e23163-113944<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to tax credits. Including, but not limited to, research credit, foreign tax credit, investment tax credit, and other tax credits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to income tax settlements. Including, but not limited to, domestic tax settlement, foreign tax settlement, state and local tax settlement, and other tax settlements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax settlement.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32687-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.4)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>117
<FILENAME>R98.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250175400">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Schedule of Change in Accounting Policy (Details) - USD ($)<br> $ / shares in Units, $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ChangeInAccountingEstimateLineItems', window );"><strong>Change in Accounting Estimate [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income tax expense</a></td>
<td class="nump">$ 318,900<span></span>
</td>
<td class="nump">$ 186,911<span></span>
</td>
<td class="nump">$ 162,994<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income tax expense (benefit)</a></td>
<td class="nump">39,019<span></span>
</td>
<td class="nump">10,725<span></span>
</td>
<td class="num">(40,871)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="nump">$ 279,881<span></span>
</td>
<td class="nump">$ 176,186<span></span>
</td>
<td class="nump">$ 203,865<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic net income (loss) per share (in dollars per share)</a></td>
<td class="nump">$ 1.59<span></span>
</td>
<td class="nump">$ 1.02<span></span>
</td>
<td class="nump">$ 1.19<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted net income (loss) per share (in dollars per share)</a></td>
<td class="nump">$ 1.56<span></span>
</td>
<td class="nump">$ 1.00<span></span>
</td>
<td class="nump">$ 1.16<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsGross', window );">Deferred tax assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 449,519<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilities', window );">Deferred tax liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">332,344<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Retained Earnings (Accumulated Deficit)</a></td>
<td class="nump">$ 562,882<span></span>
</td>
<td class="nump">$ 487,912<span></span>
</td>
<td class="nump">753,268<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RestatementAxis=srt_ScenarioPreviouslyReportedMember', window );">Previously Reported [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ChangeInAccountingEstimateLineItems', window );"><strong>Change in Accounting Estimate [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income tax expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">162,994<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income tax expense (benefit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(393,317)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 556,311<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic net income (loss) per share (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3.25<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted net income (loss) per share (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3.17<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsGross', window );">Deferred tax assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 469,621<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilities', window );">Deferred tax liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Retained Earnings (Accumulated Deficit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,105,714<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_RestatementAxis=srt_RestatementAdjustmentMember', window );">Revision of Prior Period, Adjustment [Member] | Change in accounting policy</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ChangeInAccountingEstimateLineItems', window );"><strong>Change in Accounting Estimate [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest', window );">Income before income tax expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_IncomeTaxExpenseBenefit', window );">Income tax expense (benefit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">352,446<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NetIncomeLoss', window );">Net income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (352,446)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareBasic', window );">Basic net income (loss) per share (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (2.06)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareDiluted', window );">Diluted net income (loss) per share (in dollars per share)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (2.01)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsGross', window );">Deferred tax assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (20,102)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredIncomeTaxLiabilities', window );">Deferred tax liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">332,344<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RetainedEarningsAccumulatedDeficit', window );">Retained Earnings (Accumulated Deficit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (352,446)<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ChangeInAccountingEstimateLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ChangeInAccountingEstimateLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredIncomeTaxLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax liability attributable to taxable temporary differences.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(b))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(15)(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-03(15)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120398452&amp;loc=d3e534808-122878<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(26)(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredIncomeTaxLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1448-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1337-109256<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e4984-109258<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e3842-109258<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1252-109256<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 17: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareDiluted">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 52<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e4984-109258<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22644-107794<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 55<br> -Paragraph 15<br> -URI http://asc.fasb.org/extlink&amp;oid=125512782&amp;loc=d3e3842-109258<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1252-109256<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(27))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(23))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1337-109256<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (e)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareDiluted</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 940<br> -SubTopic 20<br> -Section 25<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=123384075&amp;loc=d3e41242-110953<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(10))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 7: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(8))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 235<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-05(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399901&amp;loc=d3e537907-122884<br><br>Reference 9: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 10: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(15))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB TOPIC 6.I.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=122134291&amp;loc=d3e330036-122817<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32672-109319<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (h)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(h))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123586238&amp;loc=d3e38679-109324<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(9))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NetIncomeLoss">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 942<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.9-04(22))<br> -URI http://asc.fasb.org/extlink&amp;oid=120399700&amp;loc=SL114874048-224260<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22595-107794<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 220<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-04(18))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400993&amp;loc=SL114874131-224263<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 815<br> -SubTopic 40<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123482062&amp;loc=SL123482106-238011<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=124431353&amp;loc=SL124452729-227067<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 8: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03(20))<br> -URI http://asc.fasb.org/extlink&amp;oid=123367319&amp;loc=SL114868664-224227<br><br>Reference 9: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22499-107794<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 12: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 13: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 14: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 15: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22663-107794<br><br>Reference 16: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iv))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 17: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(4)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 18: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123596393&amp;loc=d3e14064-108612<br><br>Reference 19: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22583-107794<br><br>Reference 20: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.4-08(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<br><br>Reference 21: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 60B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=SL5780133-109256<br><br>Reference 22: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 323<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=114001798&amp;loc=d3e33918-111571<br><br>Reference 23: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22658-107794<br><br>Reference 24: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669619-108580<br><br>Reference 25: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 31<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8924-108599<br><br>Reference 26: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 27: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124431687&amp;loc=d3e22694-107794<br><br>Reference 28: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 205<br> -SubTopic 20<br> -Section 50<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=109222650&amp;loc=SL51721683-107760<br><br>Reference 29: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 1B<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124509347&amp;loc=SL7669625-108580<br><br>Reference 30: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 31: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1A<br> -Subparagraph (SX 210.13-01(a)(5))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442526-122756<br><br>Reference 32: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(B))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 33: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 470<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1B<br> -Subparagraph (SX 210.13-02(a)(4)(iii)(A))<br> -URI http://asc.fasb.org/extlink&amp;oid=124359900&amp;loc=SL124442552-122756<br><br>Reference 34: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 35: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NetIncomeLoss</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RetainedEarningsAccumulatedDeficit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cumulative amount of the reporting entity's undistributed earnings or deficit.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 210<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.5-02(30)(a)(3))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 852<br> -SubTopic 10<br> -Section 55<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=84165509&amp;loc=d3e56426-112766<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 718<br> -SubTopic 10<br> -Section 65<br> -Paragraph 15<br> -Subparagraph (g)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121322162&amp;loc=SL121327923-165333<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 210<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.7-03(a)(23)(a)(4))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 505<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SX 210.3-04)<br> -URI http://asc.fasb.org/extlink&amp;oid=120397183&amp;loc=d3e187085-122770<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=124501264&amp;loc=SL117420844-207641<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RetainedEarningsAccumulatedDeficit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RestatementAxis=srt_ScenarioPreviouslyReportedMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RestatementAxis=srt_ScenarioPreviouslyReportedMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_RestatementAxis=srt_RestatementAdjustmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_RestatementAxis=srt_RestatementAdjustmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ChangeInAccountingEstimateByTypeAxis=cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ChangeInAccountingEstimateByTypeAxis=cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>118
<FILENAME>R99.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259491128">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Income Taxes - Changes in the Reserve for Income Taxes, Excluding Interest and Penalties (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward', window );"><strong>Reconciliation of Unrecognized Tax Benefits, Excluding Amounts Pertaining to Examined Tax Returns [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Balance of reserve for income taxes</a></td>
<td class="nump">$ 13,952<span></span>
</td>
<td class="nump">$ 11,591<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions', window );">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</a></td>
<td class="nump">100<span></span>
</td>
<td class="nump">162<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions', window );">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period</a></td>
<td class="nump">525<span></span>
</td>
<td class="nump">3,383<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations', window );">Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations</a></td>
<td class="num">(485)<span></span>
</td>
<td class="num">(1,184)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions', window );">Unrecognized Tax Benefits, Decrease Resulting from Prior Period Tax Positions</a></td>
<td class="num">(280)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefits', window );">Balance of reserve for income taxes</a></td>
<td class="nump">$ 13,812<span></span>
</td>
<td class="nump">$ 13,952<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of unrecognized tax benefits.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10B<br> -URI http://asc.fasb.org/extlink&amp;oid=123427490&amp;loc=SL37586934-109318<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefits</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in unrecognized tax benefits resulting from tax positions that have been or will be taken in current period tax return.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in unrecognized tax benefits resulting from lapses of applicable statutes of limitations.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 15A<br> -Subparagraph (a)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=SL6600010-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>119
<FILENAME>R100.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029255541512">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Income Taxes - Constituents of Deferred Tax Assets (Details) - USD ($)<br></strong></div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract', window );"><strong>Gross deferred tax assets:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure', window );">Intangible asset in connection with change in tax structure</a></td>
<td class="nump">$ 404,526,000<span></span>
</td>
<td class="nump">$ 424,156,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost', window );">Stock-based compensation expense</a></td>
<td class="nump">15,279,000<span></span>
</td>
<td class="nump">13,294,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic', window );">Federal and state tax credit carryforwards</a></td>
<td class="nump">11,051,000<span></span>
</td>
<td class="nump">10,171,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsInventory', window );">Inventory and revenue related</a></td>
<td class="nump">7,426,000<span></span>
</td>
<td class="nump">5,976,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther', window );">Bonuses, commissions, and other compensation</a></td>
<td class="nump">7,263,000<span></span>
</td>
<td class="nump">4,932,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_NoncurrentDeferredTaxAssetsDeprecation', window );">Depreciation</a></td>
<td class="nump">5,395,000<span></span>
</td>
<td class="nump">4,211,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign', window );">Foreign net operating losses</a></td>
<td class="nump">751,000<span></span>
</td>
<td class="nump">602,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DeferredTaxAssetsOtherNoncurrent', window );">Other</a></td>
<td class="nump">9,023,000<span></span>
</td>
<td class="nump">4,342,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross', window );">Gross deferred tax assets</a></td>
<td class="nump">460,714,000<span></span>
</td>
<td class="nump">467,684,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsValuationAllowance', window );">Valuation allowance</a></td>
<td class="num">(8,188,000)<span></span>
</td>
<td class="num">(8,568,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsLiabilitiesNet', window );">Deferred Tax Assets, Net, Noncurrent</a></td>
<td class="nump">452,526,000<span></span>
</td>
<td class="nump">459,116,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxLiabilitiesAbstract', window );"><strong>Gross deferred tax liabilities:</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome', window );">GILTI tax basis differences in connection with change in tax structure</a></td>
<td class="num">(327,725,000)<span></span>
</td>
<td class="num">(339,364,000)<span></span>
</td>
<td class="num">$ (350,000,000)<span></span>
</td>
</tr>
<tr class="reu">
<td class="pl custom" style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet', window );">Deferred income taxes</a></td>
<td class="nump">124,801,000<span></span>
</td>
<td class="nump">$ 119,752,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign', window );">Deferred Tax Assets, Tax Credit Carryforwards, Foreign</a></td>
<td class="nump">$ 1,730,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DeferredIncomeTaxAssetsLiabilitiesNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Deferred income tax assets (liabilities), net</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DeferredIncomeTaxAssetsLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Deferred Tax Assets, Intangible Asset, Change in Tax Structure</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DeferredTaxAssetsOtherNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Deferred tax assets other non current.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DeferredTaxAssetsOtherNoncurrent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Deferred Tax Assets, With Jurisdictional Netting, Gross</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Deferred Tax Liabilities, Tax Cuts And Jobs Act, Global Intangible Low Tax Income</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_cgnx_NoncurrentDeferredTaxAssetsDeprecation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Noncurrent deferred tax assets deprecation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">cgnx_NoncurrentDeferredTaxAssetsDeprecation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>cgnx_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsInventory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from inventory.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsInventory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsLiabilitiesNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, without jurisdictional netting.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsLiabilitiesNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible domestic operating loss carryforwards. Excludes state and local operating loss carryforwards.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible foreign operating loss carryforwards.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible foreign tax credit carryforwards.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32559-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences from compensation and benefits, classified as other.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32621-109319<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32632-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxAssetsValuationAllowance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 2<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121826272&amp;loc=d3e32537-109319<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxAssetsValuationAllowance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DeferredTaxLiabilitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DeferredTaxLiabilitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>120
<FILENAME>R101.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029257568520">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Weighted Average Shares - Calculation of Weighted Average Shares (Detail) - shares<br> shares in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_EarningsPerShareAbstract', window );"><strong>Earnings Per Share [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic', window );">Basic weighted-average common shares outstanding</a></td>
<td class="nump">176,463<span></span>
</td>
<td class="nump">173,489<span></span>
</td>
<td class="nump">171,194<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment', window );">Effect of dilutive stock options</a></td>
<td class="nump">3,453<span></span>
</td>
<td class="nump">3,103<span></span>
</td>
<td class="nump">4,075<span></span>
</td>
</tr>
<tr class="rou">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding', window );">Diluted weighted-average common and common-equivalent shares outstanding</a></td>
<td class="nump">179,916<span></span>
</td>
<td class="nump">176,592<span></span>
</td>
<td class="nump">175,269<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_EarningsPerShareAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_EarningsPerShareAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The sum of dilutive potential common shares or units used in the calculation of the diluted per-share or per-unit computation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 16<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1505-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=125511455&amp;loc=d3e1448-109256<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_WeightedAverageNumberOfSharesOutstandingBasic</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>121
<FILENAME>R102.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254458440">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Weighted Average Shares - Additional Information (Detail) - shares<br></strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis=us-gaap_EmployeeStockOptionMember', window );">Stock Compensation Plan [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems', window );"><strong>Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount', window );">Stock options to purchase anti-dilutive common stock</a></td>
<td class="nump">497,504<span></span>
</td>
<td class="nump">4,371,194<span></span>
</td>
<td class="nump">5,735,608<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis=us-gaap_RestrictedStockMember', window );">Restricted Stock [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems', window );"><strong>Antidilutive Securities Excluded from Computation of Earnings Per Share [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount', window );">Stock options to purchase anti-dilutive common stock</a></td>
<td class="nump">605<span></span>
</td>
<td class="nump">3,826<span></span>
</td>
<td class="nump">13,092<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 260<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=124432515&amp;loc=d3e3550-109257<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:sharesItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis=us-gaap_EmployeeStockOptionMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis=us-gaap_EmployeeStockOptionMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis=us-gaap_RestrictedStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis=us-gaap_RestrictedStockMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>122
<FILENAME>R103.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029251165080">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Segment and Geographic Information - Additional Information (Detail) - Segment<br></strong></div></th>
<th class="th" colspan="2">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskLineItems', window );"><strong>Concentration Risk [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NumberOfReportableSegments', window );">Number of reportable segments</a></td>
<td class="nump">1<span></span>
</td>
<td class="nump">1<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember', window );">Total Revenue | Revenue from a single customer, percentage | Customer 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskLineItems', window );"><strong>Concentration Risk [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskPercentage1', window );">Maximum percentage of revenue accountability</a></td>
<td class="nump">17.00%<span></span>
</td>
<td class="nump">14.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember', window );">Total Revenue | Revenue from a single customer, percentage | Customer 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskLineItems', window );"><strong>Concentration Risk [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskPercentage1', window );">Maximum percentage of revenue accountability</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">13.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember', window );">Accounts Receivable [Member] | Revenue from a single customer, percentage | Customer 2 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskLineItems', window );"><strong>Concentration Risk [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskPercentage1', window );">Maximum percentage of revenue accountability</a></td>
<td class="nump">15.00%<span></span>
</td>
<td class="nump">19.00%<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember', window );">Accounts Receivable [Member] | Revenue from a single customer, percentage | Customer 1 [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskLineItems', window );"><strong>Concentration Risk [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ConcentrationRiskPercentage1', window );">Maximum percentage of revenue accountability</a></td>
<td class="nump">11.00%<span></span>
</td>
<td class="nump">20.00%<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskPercentage1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>For an entity that discloses a concentration risk in relation to quantitative amount, which serves as the "benchmark" (or denominator) in the equation, this concept represents the concentration percentage derived from the division.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6351-108592<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13531-108611<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 21<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123594938&amp;loc=d3e13537-108611<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 275<br> -SubTopic 10<br> -Section 50<br> -Paragraph 20<br> -URI http://asc.fasb.org/extlink&amp;oid=99393423&amp;loc=d3e6404-108592<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskPercentage1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NumberOfReportableSegments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of segments reported by the entity. A reportable segment is a component of an entity for which there is an accounting requirement to report separate financial information on that component in the entity's financial statements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8672-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NumberOfReportableSegments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_SalesRevenueNetMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByTypeAxis=us-gaap_CustomerConcentrationRiskMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByTypeAxis=us-gaap_CustomerConcentrationRiskMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_MajorCustomersAxis=cgnx_Customer2Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_MajorCustomersAxis=cgnx_Customer2Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_MajorCustomersAxis=cgnx_Customer1Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_MajorCustomersAxis=cgnx_Customer1Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ConcentrationRiskByBenchmarkAxis=us-gaap_AccountsReceivableMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>123
<FILENAME>R104.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250802824">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Segment and Geographic Information - Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas (Detail)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($) </div>
<div>Segment</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($) </div>
<div>Segment</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($)</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 1,037,098<span></span>
</td>
<td class="nump">$ 811,020<span></span>
</td>
<td class="nump">$ 725,625<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NoncurrentAssets', window );">Long-lived assets</a></td>
<td class="nump">$ 84,788<span></span>
</td>
<td class="nump">$ 86,967<span></span>
</td>
<td class="nump">95,276<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NumberOfReportableSegments', window );">Number of reportable segments | Segment</a></td>
<td class="nump">1<span></span>
</td>
<td class="nump">1<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=country_US', window );">United States [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 393,690<span></span>
</td>
<td class="nump">$ 280,205<span></span>
</td>
<td class="nump">247,689<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NoncurrentAssets', window );">Long-lived assets</a></td>
<td class="nump">63,141<span></span>
</td>
<td class="nump">60,911<span></span>
</td>
<td class="nump">68,496<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=srt_EuropeMember', window );">Europe [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">247,744<span></span>
</td>
<td class="nump">208,787<span></span>
</td>
<td class="nump">227,738<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NoncurrentAssets', window );">Long-lived assets</a></td>
<td class="nump">16,982<span></span>
</td>
<td class="nump">20,014<span></span>
</td>
<td class="nump">21,691<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=cgnx_GreaterChinaMember', window );">Greater China [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">200,135<span></span>
</td>
<td class="nump">168,287<span></span>
</td>
<td class="nump">115,061<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NoncurrentAssets', window );">Long-lived assets</a></td>
<td class="nump">960<span></span>
</td>
<td class="nump">1,278<span></span>
</td>
<td class="nump">1,487<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_srt_StatementGeographicalAxis=cgnx_OtherGeographicAreaMember', window );">Other [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems', window );"><strong>Revenues from External Customers and Long-Lived Assets [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">195,529<span></span>
</td>
<td class="nump">153,741<span></span>
</td>
<td class="nump">135,137<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_NoncurrentAssets', window );">Long-lived assets</a></td>
<td class="nump">$ 3,705<span></span>
</td>
<td class="nump">$ 4,764<span></span>
</td>
<td class="nump">$ 3,602<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NoncurrentAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Long-lived assets other than financial instruments, long-term customer relationships of a financial institution, mortgage and other servicing rights, deferred policy acquisition costs, and deferred tax assets.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NoncurrentAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_NumberOfReportableSegments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Number of segments reported by the entity. A reportable segment is a component of an entity for which there is an accounting requirement to report separate financial information on that component in the entity's financial statements.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 18<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8672-108599<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_NumberOfReportableSegments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount, excluding 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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8906-108599<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 40<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9031-108599<br><br>Reference 3: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 41<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9038-108599<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 5: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8933-108599<br><br>Reference 6: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130543-203045<br><br>Reference 7: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 8: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e8736-108599<br><br>Reference 9: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 42<br> -URI http://asc.fasb.org/extlink&amp;oid=123359005&amp;loc=d3e9054-108599<br><br>Reference 10: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 606<br> -SubTopic 10<br> -Section 50<br> -Paragraph 5<br> -URI http://asc.fasb.org/extlink&amp;oid=123351226&amp;loc=SL49130545-203045<br><br>Reference 11: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 924<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 11.L)<br> -URI http://asc.fasb.org/extlink&amp;oid=6472922&amp;loc=d3e499488-122856<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=country_US">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=country_US</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=srt_EuropeMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=srt_EuropeMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=cgnx_GreaterChinaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=cgnx_GreaterChinaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_srt_StatementGeographicalAxis=cgnx_OtherGeographicAreaMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">srt_StatementGeographicalAxis=cgnx_OtherGeographicAreaMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>124
<FILENAME>R105.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250019016">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Business Acquisitions - Sualab Co., Ltd. Narrative (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="2">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Oct. 16, 2019</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionLineItems', window );"><strong>Business Acquisition [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 19,571<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 19,571<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionLineItems', window );"><strong>Business Acquisition [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationConsiderationTransferred1', window );">Purchase price</a></td>
<td class="nump">$ 193,638<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsToAcquireBusinessesGross', window );">Cash paid in purchase price</a></td>
<td class="nump">170,602<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsForProceedsFromPreviousAcquisition', window );">Credit to goodwill</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 1,004<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationContingentConsiderationLiability', window );">Contingent consideration liabilities</a></td>
<td class="nump">$ 24,040<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member] | In Process Research and Development [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionLineItems', window );"><strong>Business Acquisition [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,900<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member] | Completed Technologies [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionLineItems', window );"><strong>Business Acquisition [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">10,070<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member', window );">Sualab Co., Ltd. [Member] | Customer Contracts And Relationships [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessAcquisitionLineItems', window );"><strong>Business Acquisition [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3,382<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationConsiderationTransferred1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 8<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6613-128477<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 30<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=116859721&amp;loc=d3e6578-128477<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationConsiderationTransferred1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessCombinationContingentConsiderationLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of liability recognized arising from contingent consideration in a business combination.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 35<br> -Paragraph 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=116859824&amp;loc=d3e6819-128478<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 25<br> -Paragraph 6<br> -URI http://asc.fasb.org/extlink&amp;oid=6911189&amp;loc=d3e6408-128476<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationContingentConsiderationLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The amount of impairment loss recognized in the period resulting from the write-down of the carrying amount of an intangible asset (excluding goodwill) to fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16373-109275<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of impairment loss resulting from write-down of assets, excluding financial assets and goodwill, lacking physical substance and having a projected indefinite period of benefit to fair value.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 350<br> -SubTopic 30<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16373-109275<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsForProceedsFromPreviousAcquisition">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The net cash inflow or outflow associated with the aggregate amount of adjustment to the purchase price of a previous acquisition.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsForProceedsFromPreviousAcquisition</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsToAcquireBusinessesGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 805<br> -SubTopic 30<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=120321790&amp;loc=d3e6927-128479<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 13<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3213-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsToAcquireBusinessesGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessAcquisitionAxis=cgnx_SualabCo.Ltd.Member</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_InProcessResearchAndDevelopmentMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_InProcessResearchAndDevelopmentMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DevelopedTechnologyRightsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_DevelopedTechnologyRightsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CustomerContractsAndRelationshipsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>125
<FILENAME>R106.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029345538616">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Restructuring Charges - Additional Information (Details)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
<th class="th" colspan="1"></th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2021 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($) </div>
<div>Employees</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th"><div>May 26, 2020</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringAndRelatedActivitiesAbstract', window );"><strong>Restructuring and Related Activities [Abstract]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent', window );">Global workforce reduction</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8.00%<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges | $</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 15,924<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated', window );">Number of positions eliminated | Employees</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">181<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringAndRelatedActivitiesAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- References</a><div><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringAndRelatedActivitiesAbstract</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The number of positions eliminated during the period as a result of restructuring activities.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:integerItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Percentage of the total number of positions eliminated as of the balance sheet date since inception of the restructuring plan(s).</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:percentItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCharges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses associated with exit or disposal activities pursuant to an authorized plan. Excludes expenses related to a discontinued operation or an asset retirement obligation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109237686&amp;loc=d3e17752-110868<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 5.P.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCharges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>126
<FILENAME>R107.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029250926184">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Restructuring Charges - Schedule of Restructuring and Related Costs (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveLineItems', window );"><strong>Restructuring Cost and Reserve [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 15,924<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_OneTimeTerminationBenefitsMember', window );">One-time Termination Benefits [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveLineItems', window );"><strong>Restructuring Cost and Reserve [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">10,159<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember', window );">Contract Termination [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveLineItems', window );"><strong>Restructuring Cost and Reserve [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,207<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_OtherRestructuringMember', window );">Other Restructuring [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveLineItems', window );"><strong>Restructuring Cost and Reserve [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 558<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCharges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses associated with exit or disposal activities pursuant to an authorized plan. Excludes expenses related to a discontinued operation or an asset retirement obligation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109237686&amp;loc=d3e17752-110868<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 5.P.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCharges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>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.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_OneTimeTerminationBenefitsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveAxis=us-gaap_OneTimeTerminationBenefitsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_OtherRestructuringMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveAxis=us-gaap_OtherRestructuringMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>127
<FILENAME>R108.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029249894328">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Restructuring Charges - Schedule of Restructuring Reserve by Type of Cost (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveRollForward', window );"><strong>Restructuring Reserve [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 15,924<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_OneTimeTerminationBenefitsMember', window );">One-time Termination Benefits [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveRollForward', window );"><strong>Restructuring Reserve [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">10,159<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember', window );">Contract Termination [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveRollForward', window );"><strong>Restructuring Reserve [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,207<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_OtherRestructuringMember', window );">Other Restructuring [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveRollForward', window );"><strong>Restructuring Reserve [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">558<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=us-gaap_AccruedLiabilitiesMember', window );">Accrued Liabilities [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveRollForward', window );"><strong>Restructuring Reserve [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Balance as of December 31, 2019</a></td>
<td class="nump">2,389<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">17,185<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsForRestructuring', window );">Cash payments</a></td>
<td class="num">(1,384)<span></span>
</td>
<td class="num">(9,597)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveSettledWithoutCash2', window );">Non-cash restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(4,163)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveAccrualAdjustment1', window );">Restructuring adjustments</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,261)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveTranslationAdjustment', window );">Foreign exchange rate changes</a></td>
<td class="num">(7)<span></span>
</td>
<td class="nump">225<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Balance as of December 31, 2020</a></td>
<td class="nump">998<span></span>
</td>
<td class="nump">2,389<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=us-gaap_AccruedLiabilitiesMember', window );">Accrued Liabilities [Member] | One-time Termination Benefits [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveRollForward', window );"><strong>Restructuring Reserve [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Balance as of December 31, 2019</a></td>
<td class="nump">1,624<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11,329<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsForRestructuring', window );">Cash payments</a></td>
<td class="num">(1,142)<span></span>
</td>
<td class="num">(8,717)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveSettledWithoutCash2', window );">Non-cash restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveAccrualAdjustment1', window );">Restructuring adjustments</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,170)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveTranslationAdjustment', window );">Foreign exchange rate changes</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">182<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Balance as of December 31, 2020</a></td>
<td class="nump">482<span></span>
</td>
<td class="nump">1,624<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=us-gaap_AccruedLiabilitiesMember', window );">Accrued Liabilities [Member] | Contract Termination [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveRollForward', window );"><strong>Restructuring Reserve [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Balance as of December 31, 2019</a></td>
<td class="nump">750<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,220<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsForRestructuring', window );">Cash payments</a></td>
<td class="num">(227)<span></span>
</td>
<td class="num">(317)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveSettledWithoutCash2', window );">Non-cash restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(4,163)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveAccrualAdjustment1', window );">Restructuring adjustments</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(13)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveTranslationAdjustment', window );">Foreign exchange rate changes</a></td>
<td class="num">(7)<span></span>
</td>
<td class="nump">23<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Balance as of December 31, 2020</a></td>
<td class="nump">516<span></span>
</td>
<td class="nump">750<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BalanceSheetLocationAxis=us-gaap_AccruedLiabilitiesMember', window );">Accrued Liabilities [Member] | Other Restructuring [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveRollForward', window );"><strong>Restructuring Reserve [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Balance as of December 31, 2019</a></td>
<td class="nump">15<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">636<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PaymentsForRestructuring', window );">Cash payments</a></td>
<td class="num">(15)<span></span>
</td>
<td class="num">(563)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveSettledWithoutCash2', window );">Non-cash restructuring charges</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveAccrualAdjustment1', window );">Restructuring adjustments</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(78)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserveTranslationAdjustment', window );">Foreign exchange rate changes</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">20<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_RestructuringReserve', window );">Balance as of December 31, 2020</a></td>
<td class="nump">$ 0<span></span>
</td>
<td class="nump">$ 15<span></span>
</td>
<td class="nump">$ 0<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PaymentsForRestructuring">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of cash payments made as the result of exit or disposal activities. Excludes payments associated with a discontinued operation or an asset retirement obligation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 17<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3367-108585<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PaymentsForRestructuring</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCharges">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expenses associated with exit or disposal activities pursuant to an authorized plan. Excludes expenses related to a discontinued operation or an asset retirement obligation.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109237686&amp;loc=d3e17752-110868<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 5.P.3)<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140864-122747<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=123570139&amp;loc=d3e3602-108585<br><br>Reference 4: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCharges</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringReserve">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Carrying amount (including both current and noncurrent portions of the accrual) as of the balance sheet date pertaining to a specified type of cost associated with exit from or disposal of business activities or restructuring pursuant to a duly authorized plan.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB TOPIC 5.P.4(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringReserve</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringReserveAccrualAdjustment1">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of expense (reversal of expense) which increases (decreases) the restructuring reserve from an adjustment to a previously accrued restructuring liability.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringReserveAccrualAdjustment1</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringReserveRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringReserveRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringReserveSettledWithoutCash2">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in the reserve for full or partial settlement through consideration other than cash.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringReserveSettledWithoutCash2</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringReserveTranslationAdjustment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of foreign currency translation gain (loss) which decreases (increases) the restructuring reserve.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (b)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=6394359&amp;loc=d3e17939-110869<br><br>Reference 2: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2<br> -Subparagraph (SAB Topic 5.P.4(b)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=115931487&amp;loc=d3e140904-122747<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringReserveTranslationAdjustment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_OneTimeTerminationBenefitsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveAxis=us-gaap_OneTimeTerminationBenefitsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveAxis=us-gaap_ContractTerminationMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_RestructuringCostAndReserveAxis=us-gaap_OtherRestructuringMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_RestructuringCostAndReserveAxis=us-gaap_OtherRestructuringMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_BalanceSheetLocationAxis=us-gaap_AccruedLiabilitiesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BalanceSheetLocationAxis=us-gaap_AccruedLiabilitiesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>128
<FILENAME>R109.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029259153416">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Subsequent Events - (Details) - Subsequent Event [Member]<br></strong></div></th>
<th class="th">
<div>Feb. 17, 2022 </div>
<div>$ / shares</div>
</th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_SubsequentEventLineItems', window );"><strong>Subsequent Event [Line Items]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DividendsPayableAmountPerShare', window );">Dividends Payable, Amount Per Share</a></td>
<td class="nump">$ 0.065<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear', window );">Dividends Payable, Date Declared</a></td>
<td class="text">Mar. 18,  2022<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear', window );">Dividends Payable, Date of Record</a></td>
<td class="text">Mar.  04,  2022<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DividendsPayableAmountPerShare">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>The per share amount of a dividend declared, but not paid, as of the financial reporting date.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=123431023&amp;loc=d3e4304-108586<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DividendsPayableAmountPerShare</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>dtr-types:perShareItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Date the dividend to be paid was declared, in YYYY-MM-DD format.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 230<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=123431023&amp;loc=d3e4304-108586<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DividendsPayableDateDeclaredDayMonthAndYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Date the holder must own the stock to be entitled to the dividend, in YYYY-MM-DD format.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_DividendsPayableDateOfRecordDayMonthAndYear</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:dateItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsequentEventLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Detail information of subsequent event by type. User is expected to use existing line items from elsewhere in the taxonomy as the primary line items for this disclosure, which is further associated with dimension and member elements pertaining to a subsequent event.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsequentEventLineItems</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_SubsequentEventTypeAxis=us-gaap_SubsequentEventMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_SubsequentEventTypeAxis=us-gaap_SubsequentEventMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>129
<FILENAME>R110.htm
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<html>
<head>
<title></title>
<link rel="stylesheet" type="text/css" href="report.css">
<script type="text/javascript" src="Show.js">/* Do Not Remove This Comment */</script><script type="text/javascript">
							function toggleNextSibling (e) {
							if (e.nextSibling.style.display=='none') {
							e.nextSibling.style.display='block';
							} else { e.nextSibling.style.display='none'; }
							}</script>
</head>
<body>
<span style="display: none;">v3.22.0.1</span><table class="report" border="0" cellspacing="2" id="idm140029254333640">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Schedule II -Valuation and Qualifying Accounts (Detail) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2021</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MovementInValuationAllowancesAndReservesRollForward', window );"><strong>SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at Beginning of Period</a></td>
<td class="nump">$ 831<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at End of Period</a></td>
<td class="nump">776<span></span>
</td>
<td class="nump">$ 831<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_UncollectibleReceivablesMember', window );">Reserve for Uncollectible Accounts Receivable and Sales Return [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MovementInValuationAllowancesAndReservesRollForward', window );"><strong>SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at Beginning of Period</a></td>
<td class="nump">831<span></span>
</td>
<td class="nump">530<span></span>
</td>
<td class="nump">$ 596<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense', window );">Charged&#160;to Costs and Expenses</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">600<span></span>
</td>
<td class="nump">215<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesDeductions', window );">Deductions</a></td>
<td class="num">(55)<span></span>
</td>
<td class="num">(300)<span></span>
</td>
<td class="num">(286)<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesAdjustments', window );">Other</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">1<span></span>
</td>
<td class="nump">5<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at End of Period</a></td>
<td class="nump">776<span></span>
</td>
<td class="nump">831<span></span>
</td>
<td class="nump">530<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_SalesReturnsAndAllowancesMember', window );">Sales Returns and Allowances [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MovementInValuationAllowancesAndReservesRollForward', window );"><strong>SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at Beginning of Period</a></td>
<td class="nump">1,291<span></span>
</td>
<td class="nump">1,291<span></span>
</td>
<td class="nump">1,050<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense', window );">Charged&#160;to Costs and Expenses</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">225<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts', window );">SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Other Account</a></td>
<td class="nump">227<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesDeductions', window );">Deductions</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesAdjustments', window );">Other</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">16<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at End of Period</a></td>
<td class="nump">1,518<span></span>
</td>
<td class="nump">1,291<span></span>
</td>
<td class="nump">1,291<span></span>
</td>
</tr>
<tr class="rh">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember', window );">Deferred Tax Valuation Allowance [Member]</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_MovementInValuationAllowancesAndReservesRollForward', window );"><strong>SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]</strong></a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at Beginning of Period</a></td>
<td class="nump">8,568<span></span>
</td>
<td class="nump">7,312<span></span>
</td>
<td class="nump">6,112<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense', window );">Charged&#160;to Costs and Expenses</a></td>
<td class="nump">1,420<span></span>
</td>
<td class="nump">1,256<span></span>
</td>
<td class="nump">1,200<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesDeductions', window );">Deductions</a></td>
<td class="num">(1,800)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesAdjustments', window );">Other</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="nump">0<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at End of Period</a></td>
<td class="nump">$ 8,188<span></span>
</td>
<td class="nump">$ 8,568<span></span>
</td>
<td class="nump">$ 7,312<span></span>
</td>
</tr>
</table>
<div style="display: none;">
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_MovementInValuationAllowancesAndReservesRollForward">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>No definition available.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_MovementInValuationAllowancesAndReservesRollForward</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:stringItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesAdjustments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase (decrease) in valuation and qualifying accounts and reserves from adjustment.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09)<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesAdjustments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesBalance">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of valuation and qualifying accounts and reserves.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column B))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br><br>Reference 2: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column E))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesBalance</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>instant</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in valuation and qualifying accounts and reserves from charge to cost and expense.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column C)(1))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of increase in valuation and qualifying accounts and reserves from charge to accounts other than cost and expense.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column C)(2))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>credit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesDeductions">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Amount of decrease in valuation and qualifying accounts and reserves.</p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ References</a><div style="display: none;"><p>Reference 1: http://www.xbrl.org/2003/role/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section S99<br> -Paragraph 4<br> -Subparagraph (SX 210.12-09(Column D))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24092-122690<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesDeductions</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>xbrli:monetaryItemType</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td>debit</td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td>duration</td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_UncollectibleReceivablesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_UncollectibleReceivablesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_SalesReturnsAndAllowancesMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_SalesReturnsAndAllowancesMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Details</a><div><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_ValuationAllowancesAndReservesTypeAxis=us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>na</td>
</tr>
<tr>
<td><strong> Balance Type:</strong></td>
<td></td>
</tr>
<tr>
<td><strong> Period Type:</strong></td>
<td></td>
</tr>
</table></div>
</div></td></tr>
</table>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>130
<FILENAME>cgnx-20211231_htm.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:cgnx="http://cognex.com/20211231"
  xmlns:country="http://xbrl.sec.gov/country/2021"
  xmlns:currency="http://xbrl.sec.gov/currency/2021"
  xmlns:dei="http://xbrl.sec.gov/dei/2021q4"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:srt="http://fasb.org/srt/2021-01-31"
  xmlns:us-gaap="http://fasb.org/us-gaap/2021-01-31"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="cgnx-20211231.xsd" xlink:type="simple"/>
    <context id="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2021-07-04</instant>
        </period>
    </context>
    <context id="i8d58524b17ed4bb29e951219ac0be8d4_I20220130">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2022-01-30</instant>
        </period>
    </context>
    <context id="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i812edbd5d6934fd0927c267aff739860_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic4a82097975f4c7480e06bdb28375b4a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia991b13c7b074439964a26d579235ee4_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i96c261e6b700458483d45a690ef3428a_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="id5144431cfa8410c8f5604b0516d97a6_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i4c4fc943007b4423b33adbf4b3ff8a57_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i7df50ac0cf1c4b6eb205200699db5753_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i11575d448348449484334a63f5c382ec_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i453cd53948004e0aa6fa938860922977_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i030b7b3d0bcc48ecaee75f945d4b0453_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i7081618970d14cb2b47071acddcb076f_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iad4f0d348bb84191a2d66c6f05e66a42_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9c19e11e3b0440699b8af52e65c3c7df_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i82c8153d3c304531b0e739269e49f99c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5da6d6afe29042359bdc6f1b874d4cb9_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie93e1f918c464567bea84b17ce78960c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia417c41204b44fc68c2a79deecb306f3_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i279b29b9bc484ec9be070b54e58d3f78_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AdditionalPaidInCapitalMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id7e84bf16cc948edbbb96f1890b28baa_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i09333c39ce8e4914b814b0cf653db4b2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:AccumulatedOtherComprehensiveIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i042f17eb78834accb0d70fa7b6537a83_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id801c8716b924358a2daa2c6f91c5f88_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:ComputerHardwareAndSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i12cf82d7d05c43c78d4287e35cb1a678_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:ComputerHardwareAndSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i826aff0c969544a5a804571eeeecac12_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologiesAndOtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7caad8bad2f949faa4c2da1d3c09973c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologiesAndOtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic244bf99eff947c5a9ba44ab7a5b9152_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8f47b56746584e8cb790dd66dabcb5bd_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i498bff2ae83341f19a665c2ba6f5f152_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i4edf2b491ae343058e414bb114b696ff_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i487b1fa56179474584006ee96f49cb3b_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="icac4a2d4e54740b7ba386ffd5cac93b9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i867b84c7e5284728a5c3229df8312988_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i596d75bc930d4fa195d274ceea0712fa_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i18231fa7d3004cc8abb3dccaed931dfe_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel3Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="icbe413b8380b4b74b96766d056cfe1be_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7916769b28254833942a005f3b6b3b20_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:ChiaroTechnologiesLLCMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i1ba31dc29f6e4fd583635b026a78c70e_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iff8191abdb834fa281b3e2476e14a7dc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id9c74275ab59442fb9ded8deb5674d28_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7222cc20036644a3b44ea75faaa45733_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i985bf57ca9034add86f8477105710972_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FairValueByMeasurementFrequencyAxis">us-gaap:FairValueMeasurementsRecurringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="idc23ae27e8c045be80b9ae12562de1e4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iba5325337fb447629dd40761b20085ac_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i4f034dcc34ec4f97b1b287538da11e25_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryBillSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id45501f2632647e7bbcd9975d9d5f9b8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasuryBillSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2e6e3966f74d464096c8781827b91619_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i70319cf3a4cf43499a8860f2430ec150_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5270f007445d4f288628feb6aa72bd8d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5bcf06fc6e654f668da80ed998328a22_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6ec0d0fb26044e35997ce16c3db61e60_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i576160d57c9b437b9a770c73f2dfb9e0_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CorporateBondSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:AssetBackedSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i146468f197ec4ffaaf568dea9d808150_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">cgnx:AgencyBondsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie09121a494bc4ffb945fdfa43d22add3_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:SovereignDebtSecuritiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i901039d16aa346d6b2d5832a09c9e94e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:MunicipalBondsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">cgnx:LongTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:USTreasurySecuritiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id5d7726e056e4214aa7f49e065353761_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i64fc80d231e947aa9bf222b2de427dac_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LandMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i8bbd57d8b5e24e379260a83a26e0335d_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6c11c5f296d94cb8b215d81fb2599862_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i941a6d85ef5e4db6887a4477c54ad5ec_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iaa0e107732624743b8b9116c079cf534_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:BuildingImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ifa4fc42921044fb2acd09f06fc702f0e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i783fdc7f101e437ca76e266767bbed79_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i93a793acd6604354bfdeb7a098a7ab7c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:HardwareAndSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i82d6f2a16b9647c5a4153885f8b16d0f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">cgnx:HardwareAndSoftwareMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i237f0e88a14e4c138cf770014c3cff20_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib4078ec246234f17861cbe7d06d41e4b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i72196343338a4ad09f7dac2538d4ed3b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i22b7a4443157492c859ccb73ff921a37_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i9680e81eb9994576b1c178a64360acd9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:PropertySubjectToOrAvailableForOperatingLeaseAxis">cgnx:SouthboroughMassachusettsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic0eb9a7570944c1ab9168006bb2aa1e2_I20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-06-28</instant>
        </period>
    </context>
    <context id="i955fae1ce0f246f2a6383d7e4314f3aa_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="idaa85ffc8fe24348a2c3c89ee7ee05da_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i30b6dbba7a294a05a1de3af16074b12b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9077befdd9a24efd88f7a65bb72737eb_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i79c23c3a546a49569d45604d210eade1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i10f501ebc93e427c829a4d3c79634b1f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ie2a20d1e0bed4733afa945949392815a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i497cc41f6abb47b884fd3672c59e3cb5_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DistributionRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if1cc1bfb37c149759d1841760856c173_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie0c7309d4e304594823af30b7f8c6732_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:OtherIntangibleAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="icc1eb3d1f8994634b4304b31764535fe_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:DevelopedTechnologyRightsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InProcessResearchAndDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="ib58b9b72d04944dca738439418889e81_I20200526">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-05-26</instant>
        </period>
    </context>
    <context id="i632328a9aece45169ee9a65a27b7de43_I20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-06-28</instant>
        </period>
    </context>
    <context id="i868c84ba01b343969f185bfae762ea09_D20200330-20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:EnShapeGmbHAbstract</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CustomerContractsAndRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-03-30</startDate>
            <endDate>2020-06-28</endDate>
        </period>
    </context>
    <context id="i8403092ce78e46f287d80209e29e1af1_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:EUR</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i46b3383699f54592b7ede9d54961aeb6_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:EUR</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i00459c765246439382160d7274b765d4_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia68a5da34e724a81893bf9be3e413d8c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:MXN</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iad34d6812e224628aaf77d2b49448365_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:MXN</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia4ac27b77f9347d59de048dc447103ab_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:JPY</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i93ebcd0f4d05432abddab316785497af_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:JPY</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i71a8b16636c744088ae729b18fffb3af_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:GBP</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i233b3e65c4014824a116028552a33e6b_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:GBP</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i4c575fbed7374c838d828cf6cf30c79c_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:HUF</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i45f95c900587476f9a93fde30adfbaf1_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:HUF</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="iccaf5fac85854bc78b3b41877b85ec45_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CAD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iec122b031b4a4ca6b3633d5405753240_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CAD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ibaaae7dc618d498782e79c903a2d481b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i497d9d68981c44ebb35250193a714eb7_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i00a64ebf1e97460399ab2caa80730e9b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:TWD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia7422c5d263441d58ee5c68d7143fed0_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:TWD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="if322716820c4489ab6cadd0ef3660c0a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:SGD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6c8355418cf24fdd81200d77b1ee46b9_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:SGD</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i9c4108ecbb154b9689e5bb60e97d0990_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="if647a88887404ad0929e10c5f5dee470_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7b4846a2320b403d951b251fe43bd88b_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">cgnx:AccruedExpensesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7d912f3d97904dfbba9ec1dc3cc1dfda_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">cgnx:AccruedExpensesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i7738a97fca024a00829bfaed4f536e63_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i9ba0ae2aca854dc3accbe251cf58f567_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i80a722d47fc34f3388de28ec4399d41e_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ForeignCurrencyGainLossMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i60257de642494bd1a3f4066707e2f9c2_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8b857d6347784d988a40fca03c6bd5be_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i565882183d72492aba9afe23745416e2_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i9478b847f49e4115928476734dea9c64_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="if9fc10a69f254823a47c3b4444adf857_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia09d8e352163476a90fdecfca35298c5_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i978d0a39464248048a6adfb0338684b7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="if8ddf600fc0548fd9b6824b8496ad6bd_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="icccce2aa3ff74ec8a00c89034af41fc6_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4d3eb05597f64cf7a138bef69f2aa751_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i25c7239e696d401ab604a30f0c0518a0_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3215f7665a784c45aa04c3aae867d897_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia18096d71003430faf7fc3b7199862b2_I20160427">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2016-04-27</instant>
        </period>
    </context>
    <context id="ibc957dc1955640e68337295dda8c967f_I20180425">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2018-04-25</instant>
        </period>
    </context>
    <context id="ic97efe271a134f3bb78c5e0f0c609dcf_I20160428">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2016-04-28</instant>
        </period>
    </context>
    <context id="icee5a3a1e242481d9356d6512fd34156_I20181029">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-10-29</instant>
        </period>
    </context>
    <context id="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramOctober2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib603cdbab9484789a7f90ba5470fa1fc_I20200312">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-03-12</instant>
        </period>
    </context>
    <context id="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i10dc5333496046ad93d3758e0acfd0ad_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramMarch2020Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i6b8a386974cc4d9ba5c5b000e859ee31_D20190101-20190929">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-09-29</endDate>
        </period>
    </context>
    <context id="idf4cd8f218d9414faa06b3c55217d8fe_D20190930-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-09-30</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="icf5af4f37b30453da1856b17e836038f_D20200928-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-09-28</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i92b408fed68541808d3ffb0dc09c1308_D20211004-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2021-10-04</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i22ac892990aa4be6bea90ca4813eba67_D20201228-20201228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-12-28</startDate>
            <endDate>2020-12-28</endDate>
        </period>
    </context>
    <context id="i39707b072766401697c047f98d14f735_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idd5ac6d2068247fbaaf23d9582522e3a_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i45c675b042014dca8b974960686e1ed3_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib1a2499886a74a06992d20a3f6b53efb_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i0d2d7b131c914aa3813c98711237ce0c_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="icace5d553dd64444a04f231db888b7ef_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie01ba116a66c474d84265161be749d7d_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i84da32e16b6e4d98bbab4cb608388e92_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:RestrictedStockUnitsRSUMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia5a436cb2a4b40208126b213a56803a5_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id25aced7c5bb44fe800cc559f6166ff8_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i2f165371239b461d8c3a62bad05a3b86_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:ProductCostOfRevenueMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="if8ab3d4c8f6a477f9e4c9e2b8888052a_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i6b6b154e38b2410788bce4314a3d47bf_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id16927732c3f42ae9f82e1e9ddd307ed_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:ResearchAndDevelopmentExpenseMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i52df1bc9391d4aeeb11bfa4d9b3d10b8_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5b1d16e2e3c74de6973268b28ba5fc9c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if66ef68195be46f98ef233ab367cb7c7_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">cgnx:SellingGeneralAndAdministrativeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ie2cecd8166824b219b0f762f0d92690b_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:PerformanceSharesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:ScenarioPreviouslyReportedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ChangeInAccountingEstimateByTypeAxis">cgnx:ChangeinGlobalIntangibleLowTaxedIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:ScenarioPreviouslyReportedMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ChangeInAccountingEstimateByTypeAxis">cgnx:ChangeinGlobalIntangibleLowTaxedIncomeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i9c502ee279f04030a69eee355d54bd16_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:ForeignTaxBenefitGainsTaxedOutsideUSMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9f2450d3a26446f4b85444fb9284cece_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:ForeignTaxExpenseTransferPriceAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia5768b0e810e4157b4eae97d0d1b08c6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="cgnx:DiscreteTaxItemsAxis">cgnx:DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4452ed78907f4d219ac405351100fab2_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4bc97ab3a3094188b15fe79424b28ed5_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iffc7295ab67445f8bd6fc5841d17366c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">us-gaap:RevenueCommissionersIrelandMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i6a2c8b01c55f45a383585d973a17734e_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">us-gaap:StateAdministrationOfTaxationChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ia7b70df5ca144c19aa32c0b1861d055c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">country:KP</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i0c3c1c01066849da8660af393f5f2d8c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id624ea8a42db4ca6a9c8968c5c834a62_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">us-gaap:ResearchMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i2d7f829283d84ef790a2db8c1f7a3fcc_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:TaxCreditCarryforwardAxis">cgnx:StateResearchAndExperimentationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i7c9f8c01dcbb4324b28ecd41ace87fd9_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i8bd1c6a0aebf4c03923831a10dbbf2a6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i197680ce6f4a47b08921cc9e95e40369_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ic686f763cf704bc2867ccfd9c33dc6c7_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i35cd9fec0a4c4a84826235af293727b2_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ica46cebde58f4747ba082879193d850e_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:RestrictedStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="ia69b052cbadd44c094541da53ba42a51_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ic575a52a81ce437ca78b900c07321681_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idcbb00e30a054c9b8dc545052284d730_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib4cda65b83b74a7dbc080d8fedc4d2d9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib4944b90959b4b208c0bdfb2c87ee10e_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ic40beac310a64112b7eb01f6089573c1_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="id5d24b55c6524d6790756827a7d2e825_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ibf814c6bf04c4e9f9549f0a609b74a55_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iaa126896ec044da89c6508ff396378a1_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ibf2b1fc85cfa4174b619517220508ae0_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i3c5581736dbd4ad78c3d6e655e93c4ea_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ife8b2f31ce1a4b4faa1a745448f716d4_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i14b5eafbd9ff4be7b9cc2e0919d2dbc7_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i4921f86f652d4f2e94c4bf9eb25c62e9_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i6413254449a541988fcda017a15d0532_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ieee8eed26dbb44f6aae613473b0dd2ef_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ic693d5b307414a6c964e0ec425adb970_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ic325874dd99f48839c0a0457e159b140_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="if4d3420bee2e4188a13523c87c8f50bf_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7f7dc7e149214e86b41eb5b243af420c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4b9aad94c75f49d5ae535996bb5e0901_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i7c5b8c599c9542b590f4d0e8f2ced040_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i64c87fe8f4fd462c8a6abc5bb13ea76c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iaf6c363e3eef41d1b00219abbd835f2d_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i93b04104f7b44c7996743be1d0745981_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer1Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:AccountsReceivableMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-10-16</startDate>
            <endDate>2019-10-16</endDate>
        </period>
    </context>
    <context id="i237d35dadb3345778dc0eb90a293a886_D20200928-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-09-28</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9d7909d7f5534ecaae7d688eb528cbe5_I20191016">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-10-16</instant>
        </period>
    </context>
    <context id="i9ff3a1f2d3354f8b9e1a3862c0d45393_I20200526">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-05-26</instant>
        </period>
    </context>
    <context id="i37df6f70493e443da67537c212115ae6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0045cc5a44304747895b82294c5175c6_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if297a806261f492eba965b248dda338d_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7a0d52863fc64903a1109399c06704c4_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="idb40d4ead52e4f36857491315a43c857_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iba8f6eeab77d4be9ab1ba46ab39e7c44_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ic9333dbc34ff416cb78724fc271fe455_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ib7bc21127ccf42c5bc8aaa79832c5c1a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ie3121f3a9e4f4a46a3cc68910d57a5fd_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ia644d53df91e4028845acea026614935_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i718830787ba64d9698a6ce9053392157_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="ib389c9638e4c4a1d98465f63dd2ef34f_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iee99fc76bf3243cbb665a0905540cbb9_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:ContractTerminationMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i0c0cc45df87a4b288075510563ebd8e5_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="iac93fa12ce9346e89d74784d16a4f197_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:AccruedLiabilitiesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ia0707d1af0314a219bcf26b1a7beb49a_I20220217">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2022-02-17</instant>
        </period>
    </context>
    <context id="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:SubsequentEventTypeAxis">us-gaap:SubsequentEventMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2022-02-17</startDate>
            <endDate>2022-02-17</endDate>
        </period>
    </context>
    <context id="i6d0d3605ae3a47539276eb78b04403f8_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i5ee1836468e946feba304dc524cc45e2_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i3dbe155ff0004ff98791a6784bd4c861_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i770852fc55a6463e8da481d0bf571699_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id3be38a15bc644abb5cb39c413e9327b_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="iee5da482094546e299baa3d92293d330_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:UncollectibleReceivablesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i2131ea7c04b54b24a5d7cbceda55413f_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i32a8205607454b739eb248993c515fd1_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="i72aa6831b808442cacbb8b5967d7fa20_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="ib429e8609f0f44a1954e51d83ac80522_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i407ba1b76823440abdd13f6172c63277_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="if82943db9b87496a88e504bd346dacaa_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:SalesReturnsAndAllowancesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i1602cc3e102c42a98e804619365a09b5_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="idf98d43520b547b68e3e7b727e376e60_I20211231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2021-12-31</instant>
        </period>
    </context>
    <context id="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3c925d5554374d1da0be16bce2fc2da0_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ValuationAllowancesAndReservesTypeAxis">us-gaap:ValuationAllowanceOfDeferredTaxAssetsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <unit id="usd">
        <measure>iso4217:USD</measure>
    </unit>
    <unit id="shares">
        <measure>shares</measure>
    </unit>
    <unit id="usdPerShare">
        <divide>
            <unitNumerator>
                <measure>iso4217:USD</measure>
            </unitNumerator>
            <unitDenominator>
                <measure>shares</measure>
            </unitDenominator>
        </divide>
    </unit>
    <unit id="number">
        <measure>pure</measure>
    </unit>
    <unit id="eur">
        <measure>iso4217:EUR</measure>
    </unit>
    <unit id="cny">
        <measure>iso4217:CNY</measure>
    </unit>
    <unit id="mxn">
        <measure>iso4217:MXN</measure>
    </unit>
    <unit id="jpy">
        <measure>iso4217:JPY</measure>
    </unit>
    <unit id="gbp">
        <measure>iso4217:GBP</measure>
    </unit>
    <unit id="huf">
        <measure>iso4217:HUF</measure>
    </unit>
    <unit id="cad">
        <measure>iso4217:CAD</measure>
    </unit>
    <unit id="krw">
        <measure>iso4217:KRW</measure>
    </unit>
    <unit id="twd">
        <measure>iso4217:TWD</measure>
    </unit>
    <unit id="sgd">
        <measure>iso4217:SGD</measure>
    </unit>
    <unit id="vote">
        <measure>cgnx:Vote</measure>
    </unit>
    <unit id="group">
        <measure>cgnx:group</measure>
    </unit>
    <unit id="segment">
        <measure>cgnx:Segment</measure>
    </unit>
    <unit id="employees">
        <measure>cgnx:Employees</measure>
    </unit>
    <dei:AmendmentFlag
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18yLTEtMS0xLTI4ODA1_96c4b33c-4ce3-4130-b9b2-59c8082307da">false</dei:AmendmentFlag>
    <dei:DocumentFiscalYearFocus
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM180LTEtMS0xLTI4ODA1_10f46249-f5cb-4c36-9134-725f22c37537">2021</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM181LTEtMS0xLTI4ODA1_7bff3197-4c9c-4d32-bfa7-c95732e3c4ac">FY</dei:DocumentFiscalPeriodFocus>
    <dei:EntityCentralIndexKey
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM184LTEtMS0xLTI4ODA1_9d522d7c-aded-4a81-9385-7e99de9ede19">0000851205</dei:EntityCentralIndexKey>
    <dei:CurrentFiscalYearEndDate
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM185LTEtMS0xLTI4ODA1_07a7ab5b-c856-4a84-bd84-41588cc32226">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i8d58524b17ed4bb29e951219ac0be8d4_I20220130"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18xNy0yLTEtMS0yODgwNQ_623b05d3-f151-4608-9ada-b360087dd5c0"
      unitRef="shares">173915951</dei:EntityCommonStockSharesOutstanding>
    <dei:EntityPublicFloat
      contextRef="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF80L2ZyYWc6NGMzNTI0NmJhZTEzNDIyZWEyNzI2ZmZiZmExOWUwMDcvdGFibGU6Yzk3NWZkZjMxMjM4NDI3YmFjODQwOGE3YjlhNGY1YjMvdGFibGVyYW5nZTpjOTc1ZmRmMzEyMzg0MjdiYWM4NDA4YTdiOWE0ZjViM18xOC0zLTEtMS0yODgwNQ_58cd1bc5-4454-40ca-a624-4feebaf40856"
      unitRef="usd">14919879186</dei:EntityPublicFloat>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMS0xLTEtMS0yODgwNQ_83a8cb10-16a4-40b6-8fe9-849f80787413"
      unitRef="usd">776000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMS0yLTEtMS0yODgwNQ_631b2888-620d-4792-b00f-1b18efca405e"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0xLTEtMS0zNjE5Mw_4fed5f3f-060e-4c3d-942d-87fb3f35b180"
      unitRef="usd">137124000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0yLTEtMS0zNjE5NQ_89e781cc-e420-4fc7-a6d4-759ea08f963c"
      unitRef="usd">102258000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0xLTEtMS0zNjE5Nw_4dc47643-8ab9-4a72-8f4c-94d2b8d70733"
      unitRef="usd">587981000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0yLTEtMS0zNjIwMA_dbdb6e3a-9cb3-43e9-a616-4ebdc34da03e"
      unitRef="usd">390417000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0zNjIyNQ_54c9d95e-5fee-48f0-a663-9785d86bd2a1"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0zNjIyNQ_d649e1c1-e3dc-4e47-8349-d990f93d7ce3"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0zNjIyNw_a9ead8f8-6394-46ed-a1d6-02037a432097"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0zNjIyNw_f370e15e-1ec4-4d36-a05d-4e0aeed10307"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0xLTEtMS0yODgwNQ_b63cef7d-d425-4617-8ff4-6da0c68d7b94"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMi0yLTEtMS0yODgwNQ_63e63726-e154-470c-a563-bbceb4afeeed"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0xLTEtMS0yODgwNQ_08af655f-6423-4502-9b7e-51a11a0ab7bc"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfMy0yLTEtMS0yODgwNQ_1b20f052-e697-43aa-937f-0fee38445e6c"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0xLTEtMS0yODgwNQ_801947d5-0d41-4804-bec2-a183e8648086"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNC0yLTEtMS0yODgwNQ_93a5a155-d8d6-474e-8900-5a2fe5331385"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0xLTEtMS0yODgwNQ_15a939cb-85e6-40cc-a000-1238f8859044"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNS0yLTEtMS0yODgwNQ_bf780bba-da16-487d-95c6-dc97a08f599d"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNi0xLTEtMS0yODgwNQ_8864173d-3b7d-4ca6-b3e8-2b2534c1b3ac"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNi0yLTEtMS0yODgwNQ_d63bff3a-9f20-4bad-9e25-c86270c913ba"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNy0xLTEtMS0yODgwNQ_4867219a-e15c-459d-b791-ba2bfaa16214"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfNy0yLTEtMS0yODgwNQ_6c50ed95-5f9f-4d9d-84db-390459ec4a60"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOC0xLTEtMS0yODgwNQ_fd0f716b-376e-4c9a-aa0d-20c1d975335a"
      unitRef="shares">175481000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesIssued
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOC0yLTEtMS0yODgwNQ_74165429-953f-42c4-92df-8759c83fcc78"
      unitRef="shares">175790000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOS0xLTEtMS0yODgwNQ_d7df0d42-18d2-4f16-b050-e2adb810f97f"
      unitRef="shares">175481000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84Mi9mcmFnOjE5Y2MwMDE3Y2YyZDRkNjVhOWRjNjRjNDgxMTllZjM1L3RhYmxlOjgyMDc5OGM2NmFmYjQ4ZmViZDIwMDJmZWJlNmI3MzM5L3RhYmxlcmFuZ2U6ODIwNzk4YzY2YWZiNDhmZWJkMjAwMmZlYmU2YjczMzlfOS0yLTEtMS0yODgwNQ_229ee341-6e69-476b-b35e-4d502d22d6d1"
      unitRef="shares">175790000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0xLTEtMS0yODgwNQ_03184ed3-fabc-433d-bb15-c8ab04367271"
      unitRef="usd">-2206000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0yLTEtMS0yODgwNQ_9c1ff91f-f0d4-4169-a2d8-92ea42c27903"
      unitRef="usd">981000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMi0zLTEtMS0yODgwNQ_0f290fc4-9459-493c-87a5-54f83094d026"
      unitRef="usd">515000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0xLTEtMS0yODgwNQ_15f4f65a-5101-47f4-83b7-3a6cadd4347c"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0yLTEtMS0yODgwNQ_5b8ab6ff-7ea9-4417-bfec-546e2e590793"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85MS9mcmFnOjI4ZmVkYmNjZDMxMjQwOWVhYTM3MmM5NDhmZDIwNGMxL3RhYmxlOjYzMDg4M2I0YTk2YjQwMjBiZjRhZGM0Y2ZhMTRjMGM2L3RhYmxlcmFuZ2U6NjMwODgzYjRhOTZiNDAyMGJmNGFkYzRjZmExNGMwYzZfMy0zLTEtMS0yODgwNQ_2d300d2a-6bf8-4a53-8e2f-cbb0f1b5691f"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e">P11Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <cgnx:ProductWarrantyPeriod
      contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79">P1Y</cgnx:ProductWarrantyPeriod>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzEtMS0xLTEtMjg4MDU_19b8b182-396a-4f76-abcb-787b5092c642"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzEtMi0xLTEtMjg4MDU_56545d09-8dc0-46c0-8f60-597270c7de1c"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i4edf2b491ae343058e414bb114b696ff_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzMtMS0xLTEtMjg4MDU_c3a44025-8221-45c1-968a-1fda78340a61">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="ibfee573d2d284a1f84c3f5cbf02272fe_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzMtMi0xLTEtMjg4MDU_43f7fe37-6c90-4c0b-97bd-a13614a09d2e">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i487b1fa56179474584006ee96f49cb3b_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzQtMS0xLTEtMjg4MDU_85657f51-b583-48d9-b367-109fd1fb54a7">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="icac4a2d4e54740b7ba386ffd5cac93b9_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzYtMS0xLTEtMjg4MDU_bcf9da19-9308-49bf-bdc9-d0c1df8dec7f">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i867b84c7e5284728a5c3229df8312988_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzctMS0xLTEtMjg4MDU_bc23334d-439e-4227-ac15-c8b6e2ff7299">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <cgnx:MaximumInvestmentOfCompanyInPartnership
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTozMmY3OGM1NDE2ZDk0ZTIzYjM4NmUzNDA0OWNjMDA2OC90YWJsZXJhbmdlOjMyZjc4YzU0MTZkOTRlMjNiMzg2ZTM0MDQ5Y2MwMDY4XzgtMS0xLTEtMjg4MDU_7ef726fc-7212-4c85-9e91-3652f1102396"
      unitRef="number">0.05</cgnx:MaximumInvestmentOfCompanyInPartnership>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i5ba256ab1ad54ee2ac2ea52472b19a75_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzEtMS0xLTEtMjg4MDU_ce6a46d0-92af-4737-85b1-7a9128340cc1">P11Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i2df6b1ea5d014738bb3c1b4fac6bafca_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzItMS0xLTEtMjg4MDU_e930a41e-faf8-4792-af26-1fc6957e10d1">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i07d0abac57a84971819cba5bcc94c1b8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzMtMS0xLTEtMjg4MDU_a7d6b555-53e4-465e-96e7-f1e169c45f3e">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="iaa1b11b85a46401f88392449fde4ff94_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo2ZWQ2ODFlOTMyMTY0MzFkYjljMGI3NmQzMjcyNDlmNi90YWJsZXJhbmdlOjZlZDY4MWU5MzIxNjQzMWRiOWMwYjc2ZDMyNzI0OWY2XzQtMS0xLTEtMjg4MDU_87507c2d-9122-4650-a296-806dc98ad785">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <cgnx:ProductWarrantyPeriod
      contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTpmZmNmMjY5MDIwODQ0OWY1OWFkMWFlZGViYmY0YjQ2Ny90YWJsZXJhbmdlOmZmY2YyNjkwMjA4NDQ5ZjU5YWQxYWVkZWJiZjRiNDY3XzEtMS0xLTEtMjg4MDU_1b6414ee-54ad-432f-8e6a-3295d3c232b3">P1Y</cgnx:ProductWarrantyPeriod>
    <cgnx:RevenuePaymentTerms
      contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDAvZnJhZzoxMTI3MjYwMGRmOTU0M2Y4OWQ1ZjJlM2JiMTk0MmIyNC90YWJsZTo5YjkxY2YxYWU2NDQ0NzEwYjlkMzg2ZmQyODQwMWFmMS90YWJsZXJhbmdlOjliOTFjZjFhZTY0NDQ3MTBiOWQzODZmZDI4NDAxYWYxXzEtMS0xLTEtMjg4MDU_a959b7b6-1bba-4c75-88be-130943c35d0d">P30D</cgnx:RevenuePaymentTerms>
    <us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings
      contextRef="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMS0xLTEtMjg4MDU_1a7229af-29cd-4f5a-966d-7eb6cd6d5004"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings>
    <us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings
      contextRef="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMi0xLTEtMjg4MDU_a9997be3-20bb-40fb-9903-94c992ee26ee"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings>
    <us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings
      contextRef="i985bf57ca9034add86f8477105710972_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzEtMy0xLTEtMjg4MDU_0176e4f9-b3aa-41dc-b4ab-2ccbb6198491"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="if966d66dc65b48d6a93258061bcc3600_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMS0xLTEtMjg4MDU_cd33a4f3-f3e7-4c93-9606-f8ddf1248d0f"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="i4a1ad4199837427496d93ed692b52cac_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMi0xLTEtMjg4MDU_75d1868b-911d-414a-8974-9db2e6f51fad"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="i985bf57ca9034add86f8477105710972_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTIvZnJhZzpkNmU1M2QwM2Y1NjA0NmE2YTQ4MWJkY2U1ZDBkYjQyZi90YWJsZToyMTdjYjI4ZGQ1ODk0NWQxYjk1YzZmM2E4OWQ1ZmU4Mi90YWJsZXJhbmdlOjIxN2NiMjhkZDU4OTQ1ZDFiOTVjNmYzYTg5ZDVmZTgyXzItMy0xLTEtMjg4MDU_240c8e6c-f35e-41a1-b4e7-c014e96f1213"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDU5L2ZyYWc6NTU5MmI4ODNiMWVjNDlhZmFiM2E3ODdmYWFlZDhkYTAvdGFibGU6MmNiMzAzMWI5MTBlNDI5OGE4NTUyNmZkMTc0ZTJiMWEvdGFibGVyYW5nZToyY2IzMDMxYjkxMGU0Mjk4YTg1NTI2ZmQxNzRlMmIxYV8xLTEtMS0xLTQ3NjM3_3cc1c130-c4ac-453a-b792-c5e254287fe0"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDU5L2ZyYWc6NTU5MmI4ODNiMWVjNDlhZmFiM2E3ODdmYWFlZDhkYTAvdGFibGU6MmNiMzAzMWI5MTBlNDI5OGE4NTUyNmZkMTc0ZTJiMWEvdGFibGVyYW5nZToyY2IzMDMxYjkxMGU0Mjk4YTg1NTI2ZmQxNzRlMmIxYV8yLTEtMS0xLTQ3NjM5_7f5da7d7-1e28-4be0-b441-f75316f6e46b"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery>
    <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDUyL2ZyYWc6ZjQ0YWRlYjg5YmQwNDBkNGEyNjdmNzg4MTVjODQ5ZTcvdGV4dHJlZ2lvbjpmNDRhZGViODliZDA0MGQ0YTI2N2Y3ODgxNWM4NDllN18xNjQ5MjY3NDQxNzMx_17dabb41-6ec0-4c46-bd6b-7d52cd0d26f0"
      unitRef="usd">2148000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQxOQ_cac7f81a-55a4-43ac-b985-ca51aa05fe04">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i022e4a867cb7496bb1fdb7061bcf122b_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzItMS0xLTEtMjg4MDU_1bcc7ee2-6437-4560-bcb9-76e4a03f470e">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMS0xLTEtMjg4MDU_16d6a44a-df22-40eb-897b-ab0bd0506541"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMi0xLTEtMjg4MDU_9782b5bf-cb2e-4a41-98d4-845f843b32cc"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzUtMy0xLTEtMjg4MDU_b79f38a1-b934-4a08-b8de-665830cc28f4"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ie2cecd8166824b219b0f762f0d92690b_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjMvZnJhZzo1NTU4YjhlNmY3ZjY0MTk1YjE5NDU3YTI0YzVjOGY5Yy90YWJsZTpkZjllNDMzZWNmZGQ0ZjhkOThkY2Y1YmVkNjAyMDU4Yi90YWJsZXJhbmdlOmRmOWU0MzNlY2ZkZDRmOGQ5OGRjZjViZWQ2MDIwNThiXzYtMS0xLTEtMjg4MDU_cf8a4e04-7919-4319-ada7-18af17a039cf">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjkvZnJhZzo0MzE0ZmU4ZWMzNDM0MThkODlkNmMwNzExZmU0YTUxYi90YWJsZTpiODM5MjFkODAzMTg0MTlhYjVlMGRjYmEyNDk1OTg3Ny90YWJsZXJhbmdlOmI4MzkyMWQ4MDMxODQxOWFiNWUwZGNiYTI0OTU5ODc3XzEtMS0xLTEtMjg4MDU_3efe0d04-b2ec-434c-a86c-da2c01d788d0"
      unitRef="number">0.50</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch>
    <us-gaap:NumberOfReportableSegments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODQvZnJhZzpkNDVjNDljNjcyZGU0ZjUyYTAyZTU3Nzc4Y2E3Mjk3MC90ZXh0cmVnaW9uOmQ0NWM0OWM2NzJkZTRmNTJhMDJlNTc3NzhjYTcyOTcwXzMw_8e6d808e-86ea-43c7-9e6b-d1438214067d"
      unitRef="segment">1</us-gaap:NumberOfReportableSegments>
    <dei:DocumentType
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYx_06284f82-4344-4b0d-9ab7-6a6010dff5f2">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYy_9876166c-0457-454c-a55e-4ef7b62c998c">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yMTQ_6e095cce-7998-43f4-967d-e8eca71f1719">2021-12-31</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYz_4d9a3c67-6e34-491a-88d1-617e8ab94100">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY0_b48c3cc7-ca0f-4c34-b9f4-e89ea66dc5a5">001-34218</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY1_a3c6aad8-ac86-4000-992e-bae571b5ba6a">COGNEX CORP</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDYyMWM2ZmJhMDAxNDhhODk3NTczZjVmZWVjZjJiNmEvdGFibGVyYW5nZTpkNjIxYzZmYmEwMDE0OGE4OTc1NzNmNWZlZWNmMmI2YV8wLTEtMS0xLTI4ODA1_be72d44d-9862-429b-8b70-f60e605dccfa">MA</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDYyMWM2ZmJhMDAxNDhhODk3NTczZjVmZWVjZjJiNmEvdGFibGVyYW5nZTpkNjIxYzZmYmEwMDE0OGE4OTc1NzNmNWZlZWNmMmI2YV8wLTMtMS0xLTI4ODA1_f56577dd-07d5-4003-8c21-f94585433ac3">04-2713778</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY4_2b688482-908c-45fc-9166-e45e1ac8cffc">One Vision Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY5_dc6691fa-9f38-42c9-9b64-ad0d7316887a">Natick</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDcw_c03341e0-f275-413d-97d1-1c90cd1b5775">MA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDY2_3f3c79cf-7381-4087-9768-c40f27bf7b15">01760</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDU5_ab15c2d6-bb85-4096-bfb5-8261b83e7861">508</dei:CityAreaCode>
    <dei:LocalPhoneNumber
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8zMDYw_4e25b5b5-3520-45d0-9343-d897513db50a">650-3000</dei:LocalPhoneNumber>
    <dei:Security12bTitle
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTAtMS0xLTI4ODA1_f742d775-afe1-476f-8170-9717a7959f22">Common Stock, par value $.002 per share</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTEtMS0xLTI4ODA1_7888db19-4168-4609-ba8e-ec27d9875298">CGNX</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MjUwZjVjZmJiYjgzNGViYzgyMTJjYTM2OGUzNGQ4NmQvdGFibGVyYW5nZToyNTBmNWNmYmJiODM0ZWJjODIxMmNhMzY4ZTM0ZDg2ZF8xLTItMS0xLTI4ODA1_f33b0a2b-8c46-4318-98f4-73ff3b14e757">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6NDc4NzQzYjZhYzcwNGRmMWFjNzNjMjFlOWUxYTU0NjYvdGFibGVyYW5nZTo0Nzg3NDNiNmFjNzA0ZGYxYWM3M2MyMWU5ZTFhNTQ2Nl8wLTItMS0xLTI4ODA1_09bbb11a-6fd9-4b8f-85b7-676f912cce64">Yes</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZDQ1YzFlYmRhOTg3NDUwM2E4YWU1NTc0NDE4MGNlMDAvdGFibGVyYW5nZTpkNDVjMWViZGE5ODc0NTAzYThhZTU1NzQ0MTgwY2UwMF8wLTgtMS0xLTI4ODA1_4b838c7a-761f-4b2c-8b39-43031e060274">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ZWE0M2IyOTUxNzA0NDZkOWJiNGE0ZTM2NjE2Y2M1MDIvdGFibGVyYW5nZTplYTQzYjI5NTE3MDQ0NmQ5YmI0YTRlMzY2MTZjYzUwMl8wLTItMS0xLTI4ODA1_b6e81b1b-deac-496a-bcfb-ef35cd895d26">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6NzFhMjg0ODczNGYwNDI2MGEzYTJkOTg1NzU3OTgyZTMvdGFibGVyYW5nZTo3MWEyODQ4NzM0ZjA0MjYwYTNhMmQ5ODU3NTc5ODJlM18wLTItMS0xLTI4ODA1_a51d289f-cb75-4181-8bb9-438a2c2c1dcc">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18wLTEtMS0xLTI4ODA1_27ff78c2-9e8f-4ade-8d7e-34c710b089d2">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18xLTMtMS0xLTI4ODA1_8e0c41bd-ad28-4332-b173-d116de389527">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6MTAwMjcyOWFiZDEzNDZlNjk1ZTVjYTBjYzFkNmNlYjcvdGFibGVyYW5nZToxMDAyNzI5YWJkMTM0NmU2OTVlNWNhMGNjMWQ2Y2ViN18yLTMtMS0xLTI4ODA1_373dc028-4297-4788-8967-f8752613d0bb">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6Njg3NzU3NWMxMGNkNDM2YzhkNWZjYjY4NGRlM2I3M2IvdGFibGVyYW5nZTo2ODc3NTc1YzEwY2Q0MzZjOGQ1ZmNiNjg0ZGUzYjczYl8wLTQtMS0xLTI4ODA1_c254510e-92f0-41dc-96fd-d53cd9f47140">true</dei:IcfrAuditorAttestationFlag>
    <dei:EntityShellCompany
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGFibGU6ODk0YjRjZTE5ZjQxNDAyMWI2ZjgxMzBkYTFlYWE1MjEvdGFibGVyYW5nZTo4OTRiNGNlMTlmNDE0MDIxYjZmODEzMGRhMWVhYTUyMV8wLTQtMS0xLTI4ODA1_a4eef1c6-0280-41d6-9f0e-9ec59db3e3c6">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="i7c2b1bb204e448309e5bf8b47a93c0d4_I20210704"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yNzEz_58cd1bc5-4454-40ca-a624-4feebaf40856"
      unitRef="usd">14919879186</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i8d58524b17ed4bb29e951219ac0be8d4_I20220130"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xL2ZyYWc6Mzc0ZTg5MmZkYTg3NGNiMjk5NGVmOGJjOGViNGQ4ZGIvdGV4dHJlZ2lvbjozNzRlODkyZmRhODc0Y2IyOTk0ZWY4YmM4ZWI0ZDhkYl8yNzgw_623b05d3-f151-4608-9ada-b360087dd5c0"
      unitRef="shares">173915951</dei:EntityCommonStockSharesOutstanding>
    <dei:AuditorFirmId
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82MS9mcmFnOjljN2RhYzIyMzJkNDRiMzViN2IyYTkwMWZhYjFlZTA4L3RhYmxlOjEzNDhkZWU4MDBlNDQ5NDM5MTgyOWE2MTBkNTFlMTNlL3RhYmxlcmFuZ2U6MTM0OGRlZTgwMGU0NDk0MzkxODI5YTYxMGQ1MWUxM2VfMS0wLTEtMS00MjI1OS90ZXh0cmVnaW9uOmJmNTRjYjRlMTRkNjQ0NzJhM2Q0OGU1N2FkYzhmMjg1XzE2NDkyNjc0NDE4MTA_d93ecf4d-b154-4629-b91a-3234a6840c10">248</dei:AuditorFirmId>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC0xLTEtMS0yODgwNQ_d4c203a2-b0af-4cd1-9cd8-0363e5eb2298"
      unitRef="usd">1037098000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC0zLTEtMS0yODgwNQ_b617884f-12ae-4663-9364-01333e9636f1"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNC01LTEtMS0yODgwNQ_e59dc8ae-8358-436f-aba0-ae8545065578"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS0xLTEtMS0yODgwNQ_1811b91b-9aeb-4677-8c4c-02dd27d38d72"
      unitRef="usd">277271000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS0zLTEtMS0yODgwNQ_63acc098-0f9a-42f4-b622-f20ab0659e26"
      unitRef="usd">206421000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNS01LTEtMS0yODgwNQ_4f9af47e-891a-4b14-b1fa-f052d27f0a5e"
      unitRef="usd">189754000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi0xLTEtMS0yODgwNQ_88647c3d-741a-42f6-b42e-406d9693d109"
      unitRef="usd">759827000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi0zLTEtMS0yODgwNQ_92b005c7-aed5-4571-86a9-bd858ef7ccbf"
      unitRef="usd">604599000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNi01LTEtMS0yODgwNQ_d8acb45d-ea71-4674-a1e0-b3027894bdd0"
      unitRef="usd">535871000</us-gaap:GrossProfit>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy0xLTEtMS0yODgwNQ_0205548e-673d-4e69-a497-f78b337c6978"
      unitRef="usd">135372000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy0zLTEtMS0yODgwNQ_a137ea1f-f2b7-4ee5-84ca-40d27c6dab28"
      unitRef="usd">130982000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfNy01LTEtMS0yODgwNQ_08a57e7a-3b5a-4126-a8d2-b2506b6ecf23"
      unitRef="usd">119427000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC0xLTEtMS0yODgwNQ_1a5048c3-e299-47da-acab-e960aa926d88"
      unitRef="usd">309354000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC0zLTEtMS0yODgwNQ_bafe4560-387d-4bc6-8a3b-594245123f5a"
      unitRef="usd">267593000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOC01LTEtMS0yODgwNQ_0a3e1055-db81-4140-9d4d-604fef5a706c"
      unitRef="usd">273842000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:RestructuringCharges
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS0xLTEtMS0yODgwNQ_b2df1842-b9ab-4009-8da3-556fe360009a"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS0zLTEtMS0yODgwNQ_12320a2f-6a40-46ab-a5c0-3ef37b13ec09"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfOS01LTEtMS0yODgwNQ_c6037538-51ec-4495-b01f-a6e12aac52b7"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtMS0xLTEtMjg4MDU_feb9ccb3-1b67-41e6-a3b8-4f66de6640e6"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtMy0xLTEtMjg4MDU_d0de176b-c658-4263-9a12-f57fee03b824"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTAtNS0xLTEtMjg4MDU_6bf72240-b01c-49f6-9ed7-adbc1feb26ac"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:OperatingIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtMS0xLTEtMjg4MDU_8b33733c-be2a-444e-832c-bba1c03cb5cf"
      unitRef="usd">315101000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtMy0xLTEtMjg4MDU_0ef22013-8efa-4549-8669-1a933dff80a0"
      unitRef="usd">170529000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTEtNS0xLTEtMjg4MDU_1e3fda19-4164-4975-b6a0-803b372aa759"
      unitRef="usd">142602000</us-gaap:OperatingIncomeLoss>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItMS0xLTEtMjg4MDU_e9e6cf58-f928-4bf1-b5e1-c381f2ffaf9c"
      unitRef="usd">-2270000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItMy0xLTEtMjg4MDU_0e9bae22-84aa-4292-9e17-04b1fc40b0c8"
      unitRef="usd">3697000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTItNS0xLTEtMjg4MDU_d02ec1e5-4678-4cd9-a98d-06380864f30e"
      unitRef="usd">-509000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtMS0xLTEtMjg4MDU_3260126e-81e8-45b8-bbaa-640df8030df2"
      unitRef="usd">6660000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtMy0xLTEtMjg4MDU_56154023-461f-46ea-8b5b-18097189512e"
      unitRef="usd">12994000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTMtNS0xLTEtMjg4MDU_9375e98a-bf86-4b32-bbdc-f029c623e480"
      unitRef="usd">19689000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtMS0xLTEtMjg4MDU_46648351-033b-4ef8-a1bd-ddbd2888b423"
      unitRef="usd">-591000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtMy0xLTEtMjg4MDU_1474614c-1f15-4f91-9a09-4854327d54fd"
      unitRef="usd">-309000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTQtNS0xLTEtMjg4MDU_871ffd14-54e6-4066-b66e-6e71d338ed72"
      unitRef="usd">1212000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtMS0xLTEtMjg4MDU_83f08eab-a2df-4790-b3f9-ef4b5bee0feb"
      unitRef="usd">318900000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtMy0xLTEtMjg4MDU_e9e09ef3-5ec4-45a3-a08c-c439c2196443"
      unitRef="usd">186911000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTUtNS0xLTEtMjg4MDU_b2faab36-6aa5-41d6-b340-f6d59d75a775"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtMS0xLTEtMjg4MDU_e9597605-2f18-4c1f-908f-ffdb1cea9438"
      unitRef="usd">39019000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtMy0xLTEtMjg4MDU_abff7cf0-84a7-4020-9385-a8244e4ba1d8"
      unitRef="usd">10725000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTYtNS0xLTEtMjg4MDU_808db385-cb1c-49db-93ea-abc0242877bf"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktMS0xLTEtMjg4MDU_63fb6e1e-3501-4102-9d4e-457e445af2e0"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktMy0xLTEtMjg4MDU_106eed98-0471-48fc-9e3f-af5d2d4cd9e8"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMTktNS0xLTEtMjg4MDU_f8615543-e5c3-4af9-bc3e-9e380fd17e14"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtMS0xLTEtMjg4MDU_ed7843d2-73d4-4ac8-a5e3-5642bcb7f1a1"
      unitRef="usdPerShare">1.59</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtMy0xLTEtMjg4MDU_494b3d87-e4ff-4ac6-997f-553615d5d8b8"
      unitRef="usdPerShare">1.02</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjQtNS0xLTEtMjg4MDU_8e75b04e-c0e7-4fda-841a-5945701f2e7a"
      unitRef="usdPerShare">1.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctMS0xLTEtMjg4MDU_8f693eac-0ed0-43d7-a424-aee887479ce4"
      unitRef="usdPerShare">1.56</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctMy0xLTEtMjg4MDU_3e3b36ba-8336-4546-bfa3-552cc8a5abed"
      unitRef="usdPerShare">1.00</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMjctNS0xLTEtMjg4MDU_2918caa7-40b3-4821-8baa-d6f3ebf1496a"
      unitRef="usdPerShare">1.16</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtMS0xLTEtMjg4MDU_8074297a-b9f3-4430-9918-12dda55f7dea"
      unitRef="shares">176463000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtMy0xLTEtMjg4MDU_5b853a55-8b54-4ab8-85ab-94570a417766"
      unitRef="shares">173489000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzAtNS0xLTEtMjg4MDU_c77ca68d-a6ce-446d-b0de-45d3571a6421"
      unitRef="shares">171194000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtMS0xLTEtMjg4MDU_2d54fb58-2f28-463c-af13-ac0b332e11de"
      unitRef="shares">179916000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtMy0xLTEtMjg4MDU_1224e0d5-9118-4472-aaba-dd4adb807a77"
      unitRef="shares">176592000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzEtNS0xLTEtMjg4MDU_38adb3d7-cdd9-40f5-a038-5310c5454671"
      unitRef="shares">175269000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d"
      unitRef="usdPerShare">0.245</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58"
      unitRef="usdPerShare">2.225</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9"
      unitRef="usdPerShare">0.205</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:NetIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy0xLTEtMS0yODgwNQ_63fb6e1e-3501-4102-9d4e-457e445af2e0"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy0zLTEtMS0yODgwNQ_106eed98-0471-48fc-9e3f-af5d2d4cd9e8"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMy01LTEtMS0yODgwNQ_f8615543-e5c3-4af9-bc3e-9e380fd17e14"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxNzg2_52204a59-a46b-41fd-9cf8-108c737acf1e"
      unitRef="usd">-2206000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxNzkz_281a6c01-4842-48c8-b3b2-009012245a92"
      unitRef="usd">981000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjpiOTZhYjU2NDE1YjM0YzZhYmRlYWIzMTg0NzE2M2RmZF8xNjQ5MjY3NDQxODAw_03075959-5971-40f2-9189-5c3fa81d8ebb"
      unitRef="usd">515000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMS0xLTEtMjg4MDU_1dd1fd40-edab-4d0d-8e68-0b91a5164637"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMS0xLTEtMjg4MDU_b742f886-5ad2-49bb-acfc-377ae728e3a1"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtMy0xLTEtMjg4MDU_5214bebf-0197-469d-af95-cfe9be899b74"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTEtNS0xLTEtMjg4MDU_6f0351b4-150f-457f-9ea2-5d4b9bc0f5b6"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMS0xLTEtMjg4MDU_8beac94e-d0d6-4dca-a1e2-cbfa7ffda116"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMS0xLTEtMjg4MDU_a73b989f-4a6f-4c86-86eb-cd252dddedf3"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtMy0xLTEtMjg4MDU_22f067fd-4e97-4ffd-af18-731efacb683c"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTMtNS0xLTEtMjg4MDU_cc084d4b-86fe-4d26-b4d7-1a14ea1d117b"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtMS0xLTEtMjg4MDU_534fb1dc-195d-4c19-b867-695a34ed9811"
      unitRef="usd">-7388000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtMy0xLTEtMjg4MDU_3775f206-6f78-44d5-83cc-28dd3ce3baca"
      unitRef="usd">2359000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTQtNS0xLTEtMjg4MDU_dcb43327-b4e4-4afc-9044-1df8ad07e075"
      unitRef="usd">3767000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMS0xLTEtMjg4MDU_343cbe48-d062-46c5-bac8-ae2ccdd12aeb"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMS0xLTEtMjg4MDU_355fb131-335d-4929-a67b-e9aae1838af7"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctMy0xLTEtMjg4MDU_bb513484-153e-4305-9078-38690be011b6"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTctNS0xLTEtMjg4MDU_202c56e2-d3d4-4e2b-aa3d-29a6dac9ecaa"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtMS0xLTEtMjg4MDU_32713708-4ac9-49d3-939f-794784f22cb7"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtMy0xLTEtMjg4MDU_ce5afdb6-b6d1-45ea-8cea-8192fb59224d"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMTgtNS0xLTEtMjg4MDU_c1fa9709-6d19-4d36-87c4-a124cfa28df1"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtMS0xLTEtMjg4MDU_99d33bc5-eb7f-428a-824f-6984bf9a790c"
      unitRef="usd">-14141000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtMy0xLTEtMjg4MDU_4068dec2-b992-4af2-9dc9-8403bedb0a50"
      unitRef="usd">3474000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjAtNS0xLTEtMjg4MDU_996918f4-c778-4941-bf45-375551e35c56"
      unitRef="usd">3226000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtMS0xLTEtMjg4MDU_64e6ce0a-3a1c-4471-a0d4-f3ef59c32ebb"
      unitRef="usd">265740000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtMy0xLTEtMjg4MDU_74fd4a6b-a4a4-4c46-aeb2-1ae966a8e8bd"
      unitRef="usd">179660000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83My9mcmFnOjMzZDY4YzU2MTBiMTRjMDVhZGZhMzk3NzU2MTIxYmMxL3RhYmxlOjI3YThhODdjYzNmMzQ2OGU4YWFiNzExYmQ5MmZiN2VmL3RhYmxlcmFuZ2U6MjdhOGE4N2NjM2YzNDY4ZThhYWI3MTFiZDkyZmI3ZWZfMjEtNS0xLTEtMjg4MDU_c28633ac-4bb9-4d63-924e-5c737a1c5f33"
      unitRef="usd">207091000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNS0xLTEtMS0yODgwNQ_e1096d69-6147-4d3e-b96e-1bd9674916b4"
      unitRef="usd">186161000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNS0zLTEtMS0yODgwNQ_ade9878f-0caf-44e3-8024-9657a143eab0"
      unitRef="usd">269073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5MzE_4fed5f3f-060e-4c3d-942d-87fb3f35b180"
      unitRef="usd">137124000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NDI_89e781cc-e420-4fc7-a6d4-759ea08f963c"
      unitRef="usd">102258000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NTE_54c9d95e-5fee-48f0-a663-9785d86bd2a1"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOmQ3MjZjNDI0YWRlODQ1ZTZhYzg4YTQ4MjdmNzliOWQ0XzEwOTk1MTE2Mjc5NTE_d649e1c1-e3dc-4e47-8349-d990f93d7ce3"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0xLTEtMS0yODgwNQ_3850fce7-5387-42e6-a071-2ef2578c3845"
      unitRef="usd">137455000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNi0zLTEtMS0yODgwNQ_a8d92f80-0e75-4e28-957f-df5f430c83a4"
      unitRef="usd">103240000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOjFkN2EyNjIyNGIxNTQ1NTg4NDIyMzM3NzBmMGNhNTNjXzEwOTk1MTE2Mjc4OTM_83a8cb10-16a4-40b6-8fe9-849f80787413"
      unitRef="usd">776000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0wLTEtMS0yODgwNS90ZXh0cmVnaW9uOjFkN2EyNjIyNGIxNTQ1NTg4NDIyMzM3NzBmMGNhNTNjXzEwOTk1MTE2Mjc4ODc_631b2888-620d-4792-b00f-1b18efca405e"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0xLTEtMS0yODgwNQ_9fe205aa-fa0d-48c7-9025-e0f13bb32411"
      unitRef="usd">130348000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNy0zLTEtMS0yODgwNQ_796591e3-6f22-4f33-a52d-4bdaf3f4e462"
      unitRef="usd">125696000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOC0xLTEtMS0yODgwNQ_5ed215b5-b7c5-4e34-83fd-c3b873c32aad"
      unitRef="usd">3990000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOC0zLTEtMS0yODgwNQ_d33258b6-8ea1-415c-9f63-16539aa1fb65"
      unitRef="usd">5632000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:InventoryNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOS0xLTEtMS0yODgwNQ_5bdad76a-64ec-46c1-b21b-8d12171416e3"
      unitRef="usd">113102000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfOS0zLTEtMS0yODgwNQ_9562517e-596c-4f2d-8daa-87b394b8b1ec"
      unitRef="usd">60830000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTAtMS0xLTEtMjg4MDU_cfe161ae-af35-4bc4-8e84-8c586656c5b6"
      unitRef="usd">68742000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTAtMy0xLTEtMjg4MDU_668696fd-2fbf-40c8-9b57-8238b525432c"
      unitRef="usd">37220000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTEtMS0xLTEtMjg4MDU_67b3f233-8f74-488f-b6b2-d0e566e93c77"
      unitRef="usd">639798000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTEtMy0xLTEtMjg4MDU_37653c80-31ee-4db7-b403-4b50d3dec2a7"
      unitRef="usd">601691000</us-gaap:AssetsCurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTM1_4dc47643-8ab9-4a72-8f4c-94d2b8d70733"
      unitRef="usd">587981000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTQ2_dbdb6e3a-9cb3-43e9-a616-4ebdc34da03e"
      unitRef="usd">390417000</us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTUx_a9ead8f8-6394-46ed-a1d6-02037a432097"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMC0xLTEtMjg4MDUvdGV4dHJlZ2lvbjo0OWM0M2Q0NDU3NDg0NzMxYmNkY2I3NTEzYWY3YWNlZl8xMDk5NTExNjI3OTUx_f370e15e-1ec4-4d36-a05d-4e0aeed10307"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent>
    <us-gaap:LongTermInvestments
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMS0xLTEtMjg4MDU_a99ced8f-2792-4e77-9233-0c6fcb703eb0"
      unitRef="usd">583748000</us-gaap:LongTermInvestments>
    <us-gaap:LongTermInvestments
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTItMy0xLTEtMjg4MDU_196cdde4-f3e6-48b7-985b-5b9952d123c4"
      unitRef="usd">395125000</us-gaap:LongTermInvestments>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTMtMS0xLTEtMjg4MDU_f744812a-9ef5-4a8b-bc1e-187e146006e7"
      unitRef="usd">77546000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTMtMy0xLTEtMjg4MDU_7d8b23d5-6d2f-4ba5-8674-bda8e740fbfb"
      unitRef="usd">79173000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTQtMS0xLTEtMjg4MDU_e6313baa-10b0-42eb-9adc-ef427838f034"
      unitRef="usd">23157000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTQtMy0xLTEtMjg4MDU_4e56fba2-53c4-4ab3-a06d-af3ad0e8096b"
      unitRef="usd">22582000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:Goodwill
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTUtMS0xLTEtMjg4MDU_3043f833-ee4e-42fb-8515-e1f73f7e262e"
      unitRef="usd">241713000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTUtMy0xLTEtMjg4MDU_547adc00-94bb-4638-8e78-fb24c837baab"
      unitRef="usd">244078000</us-gaap:Goodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTYtMS0xLTEtMjg4MDU_cedd3677-df80-45cf-b000-6fc5ea12a37a"
      unitRef="usd">11888000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTYtMy0xLTEtMjg4MDU_22238314-af54-41b4-acbf-11124afe5941"
      unitRef="usd">15555000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTctMS0xLTEtMjg4MDU_0331d5f8-5e6d-413b-8edc-68053c4018de"
      unitRef="usd">418570000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTctMy0xLTEtMjg4MDU_7ba73d4d-8f51-48c1-8154-bb1be96a69e1"
      unitRef="usd">434704000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTgtMS0xLTEtMjg4MDU_82607e59-9e18-48cf-b484-9c945717b2ee"
      unitRef="usd">7242000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTgtMy0xLTEtMjg4MDU_9516a476-b00d-4a7b-906b-9ab7efbb10e7"
      unitRef="usd">7794000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTktMS0xLTEtMjg4MDU_5f65abe9-354c-46b8-9b63-a80933d75b4e"
      unitRef="usd">2003662000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMTktMy0xLTEtMjg4MDU_8722a55f-891f-45fb-83d8-9d97f271a8a4"
      unitRef="usd">1800702000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjMtMS0xLTEtMjg4MDU_aedaf0d8-0bf5-4b2d-be80-864e72f4a791"
      unitRef="usd">44051000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjMtMy0xLTEtMjg4MDU_7c13ae19-8bff-4b2f-9b22-fbbc3c3e3b16"
      unitRef="usd">16270000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjQtMS0xLTEtMjg4MDU_6a1a4599-fb9d-4ab8-b9d7-992eb0777841"
      unitRef="usd">92432000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjQtMy0xLTEtMjg4MDU_e208c658-43c7-4ca4-bfb4-815eb0d99638"
      unitRef="usd">77264000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjUtMS0xLTEtMjg4MDU_e5c3d661-300e-4549-b155-95c70bb66897"
      unitRef="usd">8577000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjUtMy0xLTEtMjg4MDU_705eb961-50cb-4a94-a5b5-4b72cb791dad"
      unitRef="usd">9379000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjYtMS0xLTEtMjg4MDU_cc405467-25f6-4df1-bc18-6fa62bb91028"
      unitRef="usd">35743000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjYtMy0xLTEtMjg4MDU_b14d33d9-0f59-4e78-ba38-03c05750f12f"
      unitRef="usd">21274000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjctMS0xLTEtMjg4MDU_c7ba9ff7-955a-429a-b502-d017a1c18bde"
      unitRef="usd">7786000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjctMy0xLTEtMjg4MDU_33e8878e-6541-47e9-9709-19884bc5667b"
      unitRef="usd">8110000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjgtMS0xLTEtMjg4MDU_47176647-829d-4353-a19d-b8aca22e5d32"
      unitRef="usd">188589000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjgtMy0xLTEtMjg4MDU_0d85641e-de17-4ddf-b318-6a6ccbfe2311"
      unitRef="usd">132297000</us-gaap:LiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjktMS0xLTEtMjg4MDU_021575c9-a9d3-49f4-b5ae-4520acd6ed6c"
      unitRef="usd">17795000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMjktMy0xLTEtMjg4MDU_ecf93584-487b-4b48-8177-c32b1baa6419"
      unitRef="usd">18120000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzAtMS0xLTEtMjg4MDU_49db500d-ad29-49d1-9144-4682922824b2"
      unitRef="usd">293769000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzAtMy0xLTEtMjg4MDU_80e7b7d4-7266-45e7-91cf-2e0b13f3dc3c"
      unitRef="usd">314952000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzEtMS0xLTEtMjg4MDU_6b19f80c-b119-464c-bc9a-b7f7ddd3b720"
      unitRef="usd">14780000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzEtMy0xLTEtMjg4MDU_447e9c9c-73b2-4811-899b-5aceb0572beb"
      unitRef="usd">14257000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <us-gaap:AccruedIncomeTaxesNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzItMS0xLTEtMjg4MDU_783a9c03-a214-49fc-9414-b64e10254e60"
      unitRef="usd">43160000</us-gaap:AccruedIncomeTaxesNoncurrent>
    <us-gaap:AccruedIncomeTaxesNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzItMy0xLTEtMjg4MDU_66748c11-08f0-4063-871a-70986a35bb98"
      unitRef="usd">48915000</us-gaap:AccruedIncomeTaxesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzMtMS0xLTEtMjg4MDU_cb1c6531-c0e7-4c78-a659-946625d8e375"
      unitRef="usd">15476000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzMtMy0xLTEtMjg4MDU_28687061-ae12-4de4-933f-ea05c9f04dc2"
      unitRef="usd">9959000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzQtMS0xLTEtMjg4MDU_8a583769-0c08-4ddd-892d-6c5482593988"
      unitRef="usd">573569000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzQtMy0xLTEtMjg4MDU_0c9e5f46-e492-45d1-b319-1d5dfed0c043"
      unitRef="usd">538500000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzYtMS0xLTEtMjg4MDU_57896a22-5293-41f6-b3c0-23b9f778a49d"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzYtMy0xLTEtMjg4MDU_12b8c8da-9cf5-4995-8e20-a4b373c72de7"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockValueOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzgtMS0xLTEtMjg4MDU_958f6b99-2faa-404d-a489-4f836e03065f"
      unitRef="usd">0</us-gaap:PreferredStockValueOutstanding>
    <us-gaap:PreferredStockValueOutstanding
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzgtMy0xLTEtMjg4MDU_bfaa2f74-f65a-419c-9860-0c765d8643df"
      unitRef="usd">0</us-gaap:PreferredStockValueOutstanding>
    <us-gaap:CommonStockValueOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzktMS0xLTEtMjg4MDU_5234732b-dcc0-4df5-a6c9-9de2b2ad4fa9"
      unitRef="usd">351000</us-gaap:CommonStockValueOutstanding>
    <us-gaap:CommonStockValueOutstanding
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfMzktMy0xLTEtMjg4MDU_65b87bd1-01c8-4aa9-899c-b4ada6b642bc"
      unitRef="usd">352000</us-gaap:CommonStockValueOutstanding>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDAtMS0xLTEtMjg4MDU_a2797beb-1eb6-4ca7-8260-6c5a4da4f249"
      unitRef="usd">914802000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDAtMy0xLTEtMjg4MDU_8ed39b17-8a7a-4028-abcc-a05aae5928f0"
      unitRef="usd">807739000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDEtMS0xLTEtMjg4MDU_bde04d27-a450-42a6-8a85-212eb3538e67"
      unitRef="usd">562882000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDEtMy0xLTEtMjg4MDU_19bb859a-ead8-4f7a-88de-18a1d5d1e3b8"
      unitRef="usd">487912000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDItMS0xLTEtMjg4MDU_032a26c3-94c8-4cea-b5b4-f34795c11ce6"
      unitRef="usd">-47942000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDItMy0xLTEtMjg4MDU_7d39a523-6942-441d-967e-ad8d4db456fc"
      unitRef="usd">-33801000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDMtMS0xLTEtMjg4MDU_1988e870-9dfc-4330-8f7d-37fd16e0e9e4"
      unitRef="usd">1430093000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDMtMy0xLTEtMjg4MDU_608a61bc-a879-49cf-9093-260abcac0eda"
      unitRef="usd">1262202000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDQtMS0xLTEtMjg4MDU_a0df0291-c7cb-476c-a90c-e04833ce53b9"
      unitRef="usd">2003662000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF83OS9mcmFnOmEyMWZlNTQyNzU5MjQwMTVhMWE3YTFjM2M1NzAyMDkyL3RhYmxlOjIyYmY5MTU0M2U2ZjRiNmY5ZTI4NzViZjJlMmY5ZTgwL3RhYmxlcmFuZ2U6MjJiZjkxNTQzZTZmNGI2ZjllMjg3NWJmMmUyZjllODBfNDQtMy0xLTEtMjg4MDU_fbd3aa04-d7a1-4f1b-8b2e-c4ce8a86f808"
      unitRef="usd">1800702000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC0xLTEtMS0yODgwNQ_63fb6e1e-3501-4102-9d4e-457e445af2e0"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC0zLTEtMS0yODgwNQ_106eed98-0471-48fc-9e3f-af5d2d4cd9e8"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNC01LTEtMS0yODgwNQ_f8615543-e5c3-4af9-bc3e-9e380fd17e14"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:StockOptionPlanExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy0xLTEtMS0yODgwNQ_b849c884-659f-459e-8de9-cedec42e1496"
      unitRef="usd">43774000</us-gaap:StockOptionPlanExpense>
    <us-gaap:StockOptionPlanExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy0zLTEtMS0yODgwNQ_68139d48-87ed-4405-a3eb-dafdfcd1e75f"
      unitRef="usd">42661000</us-gaap:StockOptionPlanExpense>
    <us-gaap:StockOptionPlanExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNy01LTEtMS0yODgwNQ_83d3ecdb-7e67-4c86-8938-d78cf070cac5"
      unitRef="usd">45589000</us-gaap:StockOptionPlanExpense>
    <us-gaap:Depreciation
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC0xLTEtMS0yODgwNQ_7ad0dde0-8062-40d4-b256-156ba44c1d27"
      unitRef="usd">16616000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC0zLTEtMS0yODgwNQ_eb3d8953-62ca-4285-a495-255e68562146"
      unitRef="usd">22139000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOC01LTEtMS0yODgwNQ_d4fe5c28-9033-4d8f-a909-a8b49bc7b54a"
      unitRef="usd">21527000</us-gaap:Depreciation>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS0xLTEtMS0yODgwNQ_21ca1ac6-7c91-4b99-96ca-cd1f8216df00"
      unitRef="usd">-33000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS0zLTEtMS0yODgwNQ_c964abbe-0d74-4d31-b0c0-ebc9599f5f5a"
      unitRef="usd">-1817000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfOS01LTEtMS0yODgwNQ_185134a4-fd5b-4392-9f88-822148b24cf0"
      unitRef="usd">-324000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtMS0xLTEtMjg4MDU_92f9ef5b-e5e5-4b82-b012-f300953b45f2"
      unitRef="usd">3667000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtMy0xLTEtMjg4MDU_fb9f5653-7b4a-4325-b0e4-eefbf12ff5dd"
      unitRef="usd">4364000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTAtNS0xLTEtMjg4MDU_b026e7ae-d594-4359-8e0c-b2652dc9cda2"
      unitRef="usd">3373000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtMS0xLTEtMjg4MDU_291b962f-4c21-4cb7-a3fb-bd2841e60a08"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtMy0xLTEtMjg4MDU_2bf44323-5254-4bc6-8d91-548cf63b5e33"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTEtNS0xLTEtMjg4MDU_bce0a8a0-0499-42e3-99b8-8c73ea9213b4"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItMS0xLTEtMjg4MDU_4e52afca-b941-412b-b776-48fb91d649c0"
      unitRef="usd">2573000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItMy0xLTEtMjg4MDU_8bae0034-a1b3-4957-97a4-13fbf439c0ad"
      unitRef="usd">9908000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTItNS0xLTEtMjg4MDU_bb69ba6f-f956-46e8-8d2c-6b878d2fae6a"
      unitRef="usd">5296000</cgnx:ExcessAndObsoleteInventoryCharges>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtMS0xLTEtMjg4MDU_8e04c750-490d-4e60-83db-4375135f35d0"
      unitRef="usd">0</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtMy0xLTEtMjg4MDU_aab035fe-ff3a-4e4f-804f-7d0701ac24bc"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTMtNS0xLTEtMjg4MDU_b48f9060-2422-4ff8-b44a-4fec5d99b481"
      unitRef="usd">0</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtMS0xLTEtMjg4MDU_704f5b39-2f56-446b-aa87-4ac69c251488"
      unitRef="usd">-4887000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtMy0xLTEtMjg4MDU_6f4e9e96-9f49-4e60-bc12-b7a316927317"
      unitRef="usd">-1274000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTQtNS0xLTEtMjg4MDU_1b40bd8f-70bb-4ab0-ac28-01e63f1456c0"
      unitRef="usd">618000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtMS0xLTEtMjg4MDU_ee8f9841-7c75-4894-92bb-0c9341bd4a79"
      unitRef="usd">236000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtMy0xLTEtMjg4MDU_ca7bcde5-21a1-402f-8242-e09e22f3cc3f"
      unitRef="usd">4119000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTUtNS0xLTEtMjg4MDU_735f837f-2c06-4ff8-bb1e-b723dbe41897"
      unitRef="usd">1452000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtMS0xLTEtMjg4MDU_b128288e-e67d-46f8-912c-738d2edf5408"
      unitRef="usd">0</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtMy0xLTEtMjg4MDU_88c7625d-1e78-441f-b55c-14f811253ba2"
      unitRef="usd">-114000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTYtNS0xLTEtMjg4MDU_65dc70bb-607c-402f-97c9-79381ea1bbcc"
      unitRef="usd">-1401000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctMS0xLTEtMjg4MDU_fbd9b2ea-6542-4d45-93e2-a056ce3a2920"
      unitRef="usd">3118000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctMy0xLTEtMjg4MDU_cfd15470-48c7-48a1-8fe0-81f5eea7d2d7"
      unitRef="usd">3353000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTctNS0xLTEtMjg4MDU_e34f2843-6c09-4d4d-a61b-843967b895f7"
      unitRef="usd">94866000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktMS0xLTEtMjg4MDU_35f43b56-aed1-417f-8b45-978540f75312"
      unitRef="usd">4503000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktMy0xLTEtMjg4MDU_ea315f74-116b-406a-b430-2c7e7c1bdef2"
      unitRef="usd">21285000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMTktNS0xLTEtMjg4MDU_309a8d95-ff8a-48af-ab5d-88ef0158b3c1"
      unitRef="usd">-16807000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtMS0xLTEtMjg4MDU_727e9f24-aa08-4079-9ea8-5e41bbd431a2"
      unitRef="usd">-1637000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtMy0xLTEtMjg4MDU_85927654-bfe2-40ea-81b6-2bd8cc03189b"
      unitRef="usd">848000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjAtNS0xLTEtMjg4MDU_06213098-9a7d-4297-b4d6-f8fb70d78ad7"
      unitRef="usd">-3530000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtMS0xLTEtMjg4MDU_ddbd7239-d626-4b78-8c41-0679a5eaa413"
      unitRef="usd">54920000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtMy0xLTEtMjg4MDU_4b5e444b-406d-4ce5-aed5-f0eeaee64052"
      unitRef="usd">10319000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjEtNS0xLTEtMjg4MDU_76fcd120-7b87-4c53-ac0a-72fceb909dbd"
      unitRef="usd">-17841000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItMS0xLTEtMjg4MDU_23400815-b748-43ae-b422-e2a74e09779a"
      unitRef="usd">32342000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItMy0xLTEtMjg4MDU_9eb634f5-4fca-46c7-8f7e-e1a02227597d"
      unitRef="usd">9909000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjItNS0xLTEtMjg4MDU_a4331382-0b83-4a2b-a17f-267b5265ebb3"
      unitRef="usd">-7405000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtMS0xLTEtMjg4MDU_b3d93b38-f6e7-4301-a92b-d2baf809e676"
      unitRef="usd">27828000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtMy0xLTEtMjg4MDU_b83703d2-0cf2-464b-b004-7ab8e2fa8697"
      unitRef="usd">-1688000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjMtNS0xLTEtMjg4MDU_d4013814-0e07-442e-8493-7190606b3d17"
      unitRef="usd">1633000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtMS0xLTEtMjg4MDU_7c9373ed-fb77-4db6-bd55-46d8601d1049"
      unitRef="usd">16861000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtMy0xLTEtMjg4MDU_bc4edef1-7b11-44e9-aa68-70989e575b3f"
      unitRef="usd">24542000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjQtNS0xLTEtMjg4MDU_2c7ef46c-d5a4-4b0b-bbfa-1cf1f241a9ee"
      unitRef="usd">-8938000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtMS0xLTEtMjg4MDU_e5153426-86d4-479c-afa6-04ad412518ac"
      unitRef="usd">-6401000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtMy0xLTEtMjg4MDU_73478759-5d67-4fc5-8bec-8bbb2a19c2ad"
      unitRef="usd">-22973000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjUtNS0xLTEtMjg4MDU_9bafd538-e874-45f5-98b2-9454d5356a36"
      unitRef="usd">25266000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtMS0xLTEtMjg4MDU_74115d4a-578e-4352-ac3e-a75fbd64c03f"
      unitRef="usd">14417000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtMy0xLTEtMjg4MDU_2eb00f5a-351f-4c82-a8b3-f0be54cd3137"
      unitRef="usd">6571000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjYtNS0xLTEtMjg4MDU_3f8caf77-62cd-4826-9759-bb8ece72af96"
      unitRef="usd">3875000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctMS0xLTEtMjg4MDU_e1587b2f-4d0e-46e4-b6ed-757494953ad3"
      unitRef="usd">-3411000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctMy0xLTEtMjg4MDU_987dc2b8-d31a-492f-8188-f09b6c9d339a"
      unitRef="usd">-4548000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjctNS0xLTEtMjg4MDU_db62be8e-6ebe-44c4-861a-80159f88eb36"
      unitRef="usd">-4255000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtMS0xLTEtMjg4MDU_d478d2a4-2b44-4e8b-952d-58de26ceadf1"
      unitRef="usd">314065000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtMy0xLTEtMjg4MDU_6c7223e9-87b7-4727-86a2-6ae2febc16e4"
      unitRef="usd">242400000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMjgtNS0xLTEtMjg4MDU_c1015e07-1d36-4b66-a187-c21c06aba287"
      unitRef="usd">253311000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtMS0xLTEtMjg4MDU_05f03046-f493-4981-953a-553bc6d43735"
      unitRef="usd">668053000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtMy0xLTEtMjg4MDU_4839da4f-e9f6-43ff-a20f-558923da9011"
      unitRef="usd">922867000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzAtNS0xLTEtMjg4MDU_6715be55-79c7-4b44-a0e5-56c33de215b1"
      unitRef="usd">1031642000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtMS0xLTEtMjg4MDU_7dec853c-4ea4-4c46-a6eb-46f844059e20"
      unitRef="usd">430969000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtMy0xLTEtMjg4MDU_a6858fd6-712c-4786-bd21-17b586e27eb9"
      unitRef="usd">1104605000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzEtNS0xLTEtMjg4MDU_16e072bc-a863-430f-bd84-823f4073ae28"
      unitRef="usd">1062962000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItMS0xLTEtMjg4MDU_9c7f6658-6011-4975-aa81-24d90d7e2d96"
      unitRef="usd">15455000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItMy0xLTEtMjg4MDU_73ac78de-22f3-40a6-a16f-fe0231f29670"
      unitRef="usd">13303000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzItNS0xLTEtMjg4MDU_22e1311c-675b-490b-8602-59d62a2d93d1"
      unitRef="usd">21745000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtMS0xLTEtMjg4MDU_725693a7-50dd-44d7-87e2-a7fd2d614d15"
      unitRef="usd">0</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtMy0xLTEtMjg4MDU_14750bad-3ff3-4fab-8b74-aa0b584fc366"
      unitRef="usd">-1004000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzMtNS0xLTEtMjg4MDU_9c876633-f02b-4ea9-a176-daa5cb1a7593"
      unitRef="usd">166911000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtMS0xLTEtMjg4MDU_0aace99b-548d-4b22-a1e1-b0b0452de179"
      unitRef="usd">-252539000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtMy0xLTEtMjg4MDU_5b2766ee-a5dc-472a-83ff-88520f8ff306"
      unitRef="usd">169439000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzYtNS0xLTEtMjg4MDU_182431b5-0617-4277-a59f-9872153c4b56"
      unitRef="usd">-157336000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtMS0xLTEtMjg4MDU_d993735c-f54b-4dba-b9bc-a2579d0720d5"
      unitRef="usd">63292000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtMy0xLTEtMjg4MDU_f5c5d46c-4324-4a08-9db0-741fba1b955a"
      unitRef="usd">125715000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzgtNS0xLTEtMjg4MDU_88f8f469-145b-4a3c-b9a0-690449565d19"
      unitRef="usd">64581000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktMS0xLTEtMjg4MDU_082ff035-13cb-4a4c-91c3-03368ea2c275"
      unitRef="usd">161652000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktMy0xLTEtMjg4MDU_0fb56da8-da31-43e7-a003-145f364917e4"
      unitRef="usd">51036000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfMzktNS0xLTEtMjg4MDU_0630a6b0-ff03-4c45-b332-4583528ece05"
      unitRef="usd">61690000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtMS0xLTEtMjg4MDU_4f90fc6f-1b14-4a40-ae58-4eecc8d57919"
      unitRef="usd">43263000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtMy0xLTEtMjg4MDU_b8569df4-0f0d-49cb-b0e9-41d40e22700f"
      unitRef="usd">390508000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDAtNS0xLTEtMjg4MDU_5feba9ef-7f6b-436c-bfd9-83868750de5e"
      unitRef="usd">35124000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtMS0xLTEtMjg4MDU_aed0b02a-ed76-481c-b956-8003b77dd09c"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtMy0xLTEtMjg4MDU_79f32653-e61f-42fb-910b-49d28c27f0df"
      unitRef="usd">1039000</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDEtNS0xLTEtMjg4MDU_df98e00e-466a-45ad-ad2b-cf770744bf31"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItMS0xLTEtMjg4MDU_0d16b82e-81c7-4348-a680-062bb1b3c40d"
      unitRef="usd">-141623000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItMy0xLTEtMjg4MDU_d4189ae0-823b-4194-a438-f5d576d9317b"
      unitRef="usd">-316868000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDItNS0xLTEtMjg4MDU_1ef8d3fd-9279-4b45-a6eb-1e8e7a50c06e"
      unitRef="usd">-32233000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtMS0xLTEtMjg4MDU_3bd7091e-2064-4dfe-af15-50abdafa538b"
      unitRef="usd">-2815000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtMy0xLTEtMjg4MDU_3f25e3e8-c5e9-433b-9ef1-d0811e3c0b0e"
      unitRef="usd">2671000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDMtNS0xLTEtMjg4MDU_4cc698d2-8def-4a57-a844-9aa94db156c7"
      unitRef="usd">-523000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtMS0xLTEtMjg4MDU_5137d822-5a85-4777-911a-c34c6701778d"
      unitRef="usd">-82912000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtMy0xLTEtMjg4MDU_c00900fa-3501-44d7-b3c9-9222119af77e"
      unitRef="usd">97642000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDQtNS0xLTEtMjg4MDU_a76c7436-e363-40a1-b253-b904b15c1c4b"
      unitRef="usd">63219000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtMS0xLTEtMjg4MDU_322b7432-bac7-4c41-8058-cf56632eeed6"
      unitRef="usd">269073000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtMy0xLTEtMjg4MDU_9d347229-7dc5-4529-84ff-345902b1692d"
      unitRef="usd">171431000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i96c261e6b700458483d45a690ef3428a_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDUtNS0xLTEtMjg4MDU_6d38e787-247e-4ffd-8d03-4536b47623e4"
      unitRef="usd">108212000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtMS0xLTEtMjg4MDU_dbed9f0f-073b-4277-82bb-f63dc4e8f130"
      unitRef="usd">186161000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtMy0xLTEtMjg4MDU_0884c928-b4af-4fdf-a792-092adde0fd81"
      unitRef="usd">269073000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84NS9mcmFnOjQ5MGMwZjJhOWVkYTRiNDViMmU5ZDc1ZTg5NTc1OGY2L3RhYmxlOjUyYWM0N2QxNzBkMzQyNGRhMmJmM2YyNGQ0YWE0Nzg0L3RhYmxlcmFuZ2U6NTJhYzQ3ZDE3MGQzNDI0ZGEyYmYzZjI0ZDRhYTQ3ODRfNDYtNS0xLTEtMjg4MDU_e7c6e100-f886-42ad-861f-4d5b9a09a161"
      unitRef="usd">171431000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CommonStockSharesIssued
      contextRef="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_12932d92-d9ec-4b87-a89c-5f76a3af4f0c"
      unitRef="shares">170820000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="i3dd0ad0816aa4def98e84f22e19e80a7_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi00LTEtMS0yODgwNQ_aad289d9-e773-4ea0-9fdb-4321242cbdba"
      unitRef="usd">342000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id5144431cfa8410c8f5604b0516d97a6_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi02LTEtMS0yODgwNQ_42ce01a3-c7e9-49a5-8ff2-f5e3c2df6953"
      unitRef="usd">529208000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i4c4fc943007b4423b33adbf4b3ff8a57_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi04LTEtMS0yODgwNQ_f32d7e3c-37ac-4633-9879-5be886ea6bac"
      unitRef="usd">646214000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7df50ac0cf1c4b6eb205200699db5753_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0xMC0xLTEtMjg4MDU_35a63399-051e-4372-9461-b918d5a5cd52"
      unitRef="usd">-40501000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i96c261e6b700458483d45a690ef3428a_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0xMi0xLTEtMjg4MDU_5a369307-0385-4a94-bfa1-aac87b69a684"
      unitRef="usd">1135263000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy0yLTEtMS0yODgwNQ_7f580aa7-1e04-405f-9700-56349371df88"
      unitRef="shares">3018000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy00LTEtMS0yODgwNQ_7d7fa7d2-04e1-453a-ab63-20143cc9825d"
      unitRef="usd">6000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy02LTEtMS0yODgwNQ_5ed808bc-dd1f-4d59-acb3-40a8201d6feb"
      unitRef="usd">64575000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMy0xMi0xLTEtMjg4MDU_cbc0f17e-8210-435b-93f0-5b07452dee77"
      unitRef="usd">64581000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC0yLTEtMS0yODgwNQ_778b6f81-c636-424c-861e-4d8ffba6f552"
      unitRef="shares">1398000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ia0b61093361e40829a19e49f13b2aafd_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC00LTEtMS0yODgwNQ_a09d720c-5063-42fa-9d1f-fd056078d42b"
      unitRef="usd">3000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC04LTEtMS0yODgwNQ_af40cbf0-82c2-471b-a107-bd1afd1cab6f"
      unitRef="usd">61687000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNC0xMi0xLTEtMjg4MDU_5f7fd42c-941d-4b84-8a4f-b66209170e9c"
      unitRef="usd">61690000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i3f6e0d6a6cf64e53b765f2631064f2c6_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNS02LTEtMS0yODgwNQ_1e926bcd-ad7e-424f-9e17-01fcad06a482"
      unitRef="usd">45589000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNS0xMi0xLTEtMjg4MDU_ad1c96ec-05ca-4abb-9f76-45238c1d2fe9"
      unitRef="usd">45589000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNi04LTEtMS0yODgwNQ_2a91ce4e-6a2e-44e1-9e5e-95ffca274a84"
      unitRef="usd">35124000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfNi0xMi0xLTEtMjg4MDU_b3c20c7d-bc57-435d-8ec4-4545d204a165"
      unitRef="usd">35124000</us-gaap:DividendsCommonStockCash>
    <us-gaap:NetIncomeLoss
      contextRef="i6c7a8f86994847a9817d41649947ff69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfOC04LTEtMS0yODgwNQ_54ccb805-e529-4ea8-937d-c540d94e3dc0"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfOC0xMi0xLTEtMjg4MDU_e906bb71-cd36-430d-a0fa-487de71f5ab9"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTEtMTAtMS0xLTI4ODA1_f8c2a891-d7f6-4b44-8b0d-3df5aa239950"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTEtMTItMS0xLTI4ODA1_9d5f8440-39cf-43ff-ab4b-a24adb88dfab"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTItMTAtMS0xLTI4ODA1_2b0ba709-d850-4f42-9368-8491ec853344"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTItMTItMS0xLTI4ODA1_2bc6cf86-99c4-4bc1-9e1c-7fec24290f4d"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTMtMTAtMS0xLTI4ODA1_3dc8b69e-e690-4848-96e4-2d1f39770f79"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTMtMTItMS0xLTI4ODA1_56e03d7a-bf39-440b-bdea-7cbd27d26bbb"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="i453cd53948004e0aa6fa938860922977_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMi0xLTEtMjg4MDU_6bb9d6a6-2c32-4b63-9c00-82f39d7eb917"
      unitRef="shares">172440000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="i453cd53948004e0aa6fa938860922977_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtNC0xLTEtMjg4MDU_e8ec5b51-945f-4a2e-ab49-44605d4f1ed5"
      unitRef="usd">345000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i030b7b3d0bcc48ecaee75f945d4b0453_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtNi0xLTEtMjg4MDU_82e031da-accf-4b51-96cd-f01c5809a434"
      unitRef="usd">639372000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7081618970d14cb2b47071acddcb076f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtOC0xLTEtMjg4MDU_f811e34b-569a-4554-9208-69c2e2d3f56c"
      unitRef="usd">753268000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="iad4f0d348bb84191a2d66c6f05e66a42_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMTAtMS0xLTI4ODA1_1289ec3e-38e6-4081-a418-33a7f0003c2f"
      unitRef="usd">-37275000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTQtMTItMS0xLTI4ODA1_85500f67-8a6c-4551-b25b-dc0d32787aae"
      unitRef="usd">1355710000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtMi0xLTEtMjg4MDU_a3ed5db1-3681-4069-817d-acb47f626606"
      unitRef="shares">4565000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtNC0xLTEtMjg4MDU_38950b7e-6eda-4d17-9c5a-edb84bfc5915"
      unitRef="usd">9000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtNi0xLTEtMjg4MDU_c4a1b7e5-3e56-4e3a-b881-8463f75401fe"
      unitRef="usd">125706000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTUtMTItMS0xLTI4ODA1_af3dba44-8532-4757-9d47-18220f7e5121"
      unitRef="usd">125715000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtMi0xLTEtMjg4MDU_23e0e242-fd56-4415-b54e-73003fadba48"
      unitRef="shares">1215000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i1bec50af29d2444694a1f7d69fe2b058_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtNC0xLTEtMjg4MDU_ae202d14-e7ba-4256-b93a-2f3bcbcd646a"
      unitRef="usd">2000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtOC0xLTEtMjg4MDU_3b411d3d-b6bf-4b05-8e84-f749bb9105bb"
      unitRef="usd">51034000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTYtMTItMS0xLTI4ODA1_fa04ee42-a367-4c84-b60c-d452957a4756"
      unitRef="usd">51036000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i8fac328c7b7844fca914b7bdbd8ea7e3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTctNi0xLTEtMjg4MDU_b82f5302-9804-465f-baff-ad85cb8fad70"
      unitRef="usd">42661000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTctMTItMS0xLTI4ODA1_3a006046-7d63-4a33-af77-8953afa58eb6"
      unitRef="usd">42661000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTgtOC0xLTEtMjg4MDU_68c1fe5b-f850-444b-8d1b-e7372b151c44"
      unitRef="usd">390508000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTgtMTItMS0xLTI4ODA1_e93da2d1-1acb-4c11-850e-f1f72e86f41b"
      unitRef="usd">390508000</us-gaap:DividendsCommonStockCash>
    <us-gaap:NetIncomeLoss
      contextRef="i48d09c6cdb894c68b3c08b6d002654ff_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTktOC0xLTEtMjg4MDU_bbf50c3a-ff81-492d-9716-ea2ab2ba986f"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMTktMTItMS0xLTI4ODA1_07b91acd-8121-4ffd-a81f-867b3033ba4f"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjItMTAtMS0xLTI4ODA1_f8f53b28-6bc3-49a9-a068-bf7bb9d8cfc8"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjItMTItMS0xLTI4ODA1_a3a8bc7e-a749-4154-a57c-782c1eba034b"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjMtMTAtMS0xLTI4ODA1_104487a4-6bd2-4786-9954-3ab21a801042"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjMtMTItMS0xLTI4ODA1_7b82ecf7-3765-4eb7-baca-6a615e24391a"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjQtMTAtMS0xLTI4ODA1_4f6b0361-259f-43c9-a77b-a037c0d65c4d"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjQtMTItMS0xLTI4ODA1_9f0897d3-8c1e-41bb-8158-bb016f2bd6ee"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="i9c19e11e3b0440699b8af52e65c3c7df_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMi0xLTEtMjg4MDU_65d68bab-e85d-4c35-ad87-2280ebd9a81c"
      unitRef="shares">175790000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="i9c19e11e3b0440699b8af52e65c3c7df_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtNC0xLTEtMjg4MDU_e234384f-1ae1-45be-96fe-6bc95750d2e1"
      unitRef="usd">352000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i82c8153d3c304531b0e739269e49f99c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtNi0xLTEtMjg4MDU_a7a0357e-4f8a-4af2-bfa3-861616c6b849"
      unitRef="usd">807739000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i5da6d6afe29042359bdc6f1b874d4cb9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtOC0xLTEtMjg4MDU_980f5786-69fa-4a86-bff2-6353c2bf9966"
      unitRef="usd">487912000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ie93e1f918c464567bea84b17ce78960c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMTAtMS0xLTI4ODA1_c8a8be7c-c3ea-4d3b-927a-81907806da93"
      unitRef="usd">-33801000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjUtMTItMS0xLTI4ODA1_53b856ac-f584-4d9e-a82e-ae3b083dd09b"
      unitRef="usd">1262202000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtMi0xLTEtMjg4MDU_980db0b7-1174-4b8c-8b6d-fefef50e103e"
      unitRef="shares">1703000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtNC0xLTEtMjg4MDU_e862e62b-fc5b-4a1f-8a11-f5a80568a846"
      unitRef="usd">3000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtNi0xLTEtMjg4MDU_535cad92-70e3-48ef-a167-5a0a851bf97f"
      unitRef="usd">63289000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjYtMTItMS0xLTI4ODA1_688c471d-b0b2-4418-af73-544c7c8d2ed3"
      unitRef="usd">63292000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctMi0xLTEtMjg4MDU_6e532fcd-e339-42d8-a92b-9cc114580887"
      unitRef="shares">2012000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i244ddaa1d19d4552979ee78fc0a3848d_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctNC0xLTEtMjg4MDU_a8d4e631-f82a-4207-890a-a5bde56d8074"
      unitRef="usd">4000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctOC0xLTEtMjg4MDU_d8645358-eeee-4225-9edc-b4936a32a2e6"
      unitRef="usd">161648000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjctMTItMS0xLTI4ODA1_e7c1c321-ba5e-40c1-b0cf-f660d2a98497"
      unitRef="usd">161652000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i75a67c9bd3d748a19d8b927a5cd5d288_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjgtNi0xLTEtMjg4MDU_cf6a4121-c4a7-4a4b-b12f-c1d719624d8c"
      unitRef="usd">43774000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjgtMTItMS0xLTI4ODA1_155e1de6-0844-43f5-ac1e-30f01ff895f7"
      unitRef="usd">43774000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktOC0xLTEtMjg4MDU_eea0464b-8eed-482d-857b-cfafea44207c"
      unitRef="usd">43263000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktMTItMS0xLTI4ODA1_c857b2c1-3985-49b8-9d44-e400438d30ea"
      unitRef="usd">43263000</us-gaap:DividendsCommonStockCash>
    <us-gaap:NetIncomeLoss
      contextRef="i8212cb032773436bbdfb00f533e4b319_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMjktOC0xLTEtMjkxOTA_8b7ef0bb-2bcb-4e02-8d5c-e270d2a90284"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzAtMTItMS0xLTI4ODA1_61a1aefc-04d5-49cb-9631-78f5a270b48a"
      unitRef="usd">279881000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTAtMS0xLTI4ODA1_1dd1fd40-edab-4d0d-8e68-0b91a5164637"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTAtMS0xLTI4ODA1_b742f886-5ad2-49bb-acfc-377ae728e3a1"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzMtMTItMS0xLTI4ODA1_b33a68d4-bc42-4f00-96ad-5572a1b08dc7"
      unitRef="usd">-7152000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTAtMS0xLTI4ODA1_8beac94e-d0d6-4dca-a1e2-cbfa7ffda116"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTAtMS0xLTI4ODA1_a73b989f-4a6f-4c86-86eb-cd252dddedf3"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzUtMTItMS0xLTI4ODA1_2325f024-d4a6-4875-b5c0-5927528a0c57"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTAtMS0xLTI4ODA1_343cbe48-d062-46c5-bac8-ae2ccdd12aeb"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTAtMS0xLTI4ODA1_355fb131-335d-4929-a67b-e9aae1838af7"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzYtMTItMS0xLTI4ODA1_86799173-7342-48e9-a21f-823c21b1fec8"
      unitRef="usd">-6753000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="ia417c41204b44fc68c2a79deecb306f3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMi0xLTEtMjg4MDU_f2b3004e-6207-4b67-8026-e5c0690a28d8"
      unitRef="shares">175481000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="ia417c41204b44fc68c2a79deecb306f3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctNC0xLTEtMjg4MDU_50ec5a79-60c3-4f75-b490-0604deba09d3"
      unitRef="usd">351000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i279b29b9bc484ec9be070b54e58d3f78_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctNi0xLTEtMjg4MDU_e89c45b2-7984-4bc3-b53b-4f94f705c874"
      unitRef="usd">914802000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="id7e84bf16cc948edbbb96f1890b28baa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctOC0xLTEtMjg4MDU_23905f3c-69fb-4cd3-aad2-e48be69e6018"
      unitRef="usd">562882000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i09333c39ce8e4914b814b0cf653db4b2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMTAtMS0xLTI4ODA1_db0a9c88-eeb3-4a48-8df3-3977a6ae5c8e"
      unitRef="usd">-47942000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMzctMTItMS0xLTI4ODA1_90d15771-7b73-405f-851c-085481087c38"
      unitRef="usd">1430093000</us-gaap:StockholdersEquity>
    <us-gaap:SignificantAccountingPoliciesTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzg_326acf66-3c25-413d-8b88-733f9371eaaf">Summary of Significant Accounting Policies&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The accompanying consolidated financial statements reflect the application of the significant accounting policies described below.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Nature of Operations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cognex Corporation is a leading provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Use of Estimates in the Preparation of Financial Statements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S.&#160;GAAP) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and the disclosure of contingent liabilities as of the balance sheet date, and the reported amounts of revenues and expenses during the year. Actual results could differ from those estimates. Significant estimates and judgments include those related to revenue recognition, investments, inventories, intangible assets, stock-based compensation, income taxes, business acquisitions, and restructuring charges.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Basis of Consolidation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The consolidated financial statements include the accounts of Cognex Corporation and its subsidiaries, all of which are wholly-owned. All intercompany accounts and transactions have been eliminated.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Foreign Currency Translation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The financial statements of the Company&#x2019;s foreign subsidiaries, where the local currency is the functional currency, are translated using exchange rates in effect at the end of the year for assets and liabilities and average exchange rates during the year for results of operations. The resulting foreign currency translation adjustment, net of tax, is included in shareholders&#x2019; equity as accumulated other comprehensive loss.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Fair Value Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company applies a three-level valuation hierarchy for fair value measurements. The categorization of assets and liabilities within the valuation hierarchy is based on the lowest level of input that is significant to the measurement of fair value. Level&#160;1 inputs to the valuation methodology utilize unadjusted quoted market prices in active markets for identical assets and liabilities. Level 2 inputs to the valuation methodology are other observable inputs, including quoted market prices for similar assets and liabilities, quoted prices for identical and similar assets and liabilities in markets that are not active, or other inputs that are observable or can be corroborated by observable market data. Level 3 inputs to the valuation methodology are unobservable inputs based on management&#x2019;s best estimate of the inputs that market participants would use in pricing the asset or liability at the measurement date, including assumptions about risk. A change to the level of an asset or liability within the fair value hierarchy is determined at the end of a reporting period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Cash, Cash Equivalents, and Investments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#x2019;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#x2019; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounts Receivable&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company extends credit with various payment terms to customers based on an evaluation of their financial condition. Accounts that are outstanding longer than the payment terms are considered to be past due. The Company establishes an allowance against accounts receivable for credit losses when it determines receivables are at risk for collection based on the length of time the receivable has been outstanding, the customer&#x2019;s current ability to pay its obligations to the Company, and general economic and industry conditions, as well as various other factors. Receivables are written off against this allowance in the period they are determined to be uncollectible and payments subsequently received on previously written-off receivables are recorded as a recovery of the credit loss. Credit losses and recoveries related to accounts receivable are included in "Selling, general, and administrative expenses" on the Consolidated Statements of Operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Inventories&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventories are stated at the lower of cost and net realizable value. Cost is determined using standard costs, which approximates actual costs under the first-in, first-out (FIFO) method. Net realizable value is the estimated selling price in the ordinary course of business, less reasonably predictable costs of completion, disposal, and transportation.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Purchase price variances are incurred when actual costs are different than standard costs due to favorable or unfavorable market prices. Management applies judgment to recognize purchase price variances in the same period that the associated standard costs of the finished goods that consume these components are sold.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s inventory is subject to technological change or obsolescence. The Company reviews inventory quantities on hand and estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and general economic and industry conditions, and records reserves to reduce the carrying value of inventories to their net realizable value. If actual future demand is less than estimated, additional inventory write-downs would be required.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company generally disposes of obsolete inventory upon determination of obsolescence. The Company does not dispose of excess inventory immediately, due to the possibility that some of this inventory could be sold to customers as a result of differences between actual and forecasted demand. When inventory has been written down below cost, such reduced amount is considered the new cost basis for subsequent accounting purposes. As a result, the Company could recognize a higher than normal gross margin if the reserved inventory were subsequently sold.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Property, Plant, and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, plant, and equipment are stated at cost and depreciated using the straight-line method over the assets&#x2019; estimated useful lives. Buildings&#x2019; useful lives are 39 years, building improvements&#x2019; useful lives are ten years, and the useful lives of computer hardware and software, manufacturing test equipment, and furniture and fixtures range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad"&gt;two&lt;/span&gt; to ten years. Leasehold improvements are depreciated over the shorter of the estimated useful lives or the remaining terms of the leases. Maintenance and repairs are expensed when incurred; additions and improvements are capitalized. Upon retirement or disposition, the cost and related accumulated depreciation of the disposed assets are removed from the accounts, with any resulting gain or loss included in current operations.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Internal-use Software&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Internal-use software is software acquired, internally developed, or modified solely to meet the Company's internal needs, and during the software's development, no substantive plan exists to sell the software. The accounting treatment for computer software developed for internal use depends on the nature of activities performed at each stage of development. The preliminary project stage includes conceptual formulation of design alternatives, determination of system requirements, vendor demonstrations, and final selection of vendors, and during this stage costs are expensed as incurred. The application development stage includes software configuration, coding, hardware installation, and testing. During this stage, certain costs are capitalized, including external direct costs of materials and services, as well as payroll and payroll-related costs for employees who are directly associated with the project, while certain costs are expensed as incurred, including training and data conversion costs. The post-implementation stage includes support and maintenance, and during this stage costs are expensed as incurred.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Capitalization begins when both the preliminary project stage is completed and management commits to funding the project. Capitalization ceases at the point the project is substantially complete and ready for its intended use, that is, after all substantial testing is completed. Costs of specified upgrades and enhancements to internal-use software are capitalized if it is probable that those expenditures result in additional functionality. Capitalized costs are amortized on a straight-line basis over the estimated useful life.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Leases&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At inception of a contract, the Company determines whether that contract is or contains a lease by assessing whether there is an identified asset and whether the contract conveys the right to control the use of the identified asset for a period of time in exchange for consideration. The Company has control of the asset if it has the right to direct the use of the asset and obtains substantially all of the economic benefits from the use of the asset throughout the period of use.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As a practical expedient, the Company does not recognize a lease asset or lease liability for leases with a lease term of 12 months or less. In the determination of the lease term, the Company considers the existence of extension or termination options and the probability of those options being exercised.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease contracts may include lease components and non-lease components, such as common area maintenance and utilities for property leases. As a practical expedient, the Company accounts for the non-lease components together with the lease components as a single lease component for all of its leases.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company classifies a lease as a finance lease when it meets any of the following criteria at the lease commencement date: (1) the lease transfers ownership of the underlying asset to the Company by the end of the lease term; (2) the lease grants the Company an option to purchase the underlying asset that the Company is reasonably certain to exercise; (3) the lease term is for the major part of the remaining economic life of the underlying asset (the Company considers a major part to be 75% or more of the remaining economic life of the underlying asset); (4) the present value of the sum of the lease payments and any residual value guaranteed by the Company equals or exceeds substantially all of the fair value of the underlying asset (the Company considers substantially all the fair value to be 90% or more of the fair value of the underlying asset amount); or (5) the underlying asset is of such a specialized nature that it is expected to have no alternative use to the lessor at the end of the lease term. When none of the criteria above are met, the Company classifies the lease as an operating lease.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On the lease commencement date, the Company records a lease asset and lease liability on the balance sheet. The lease asset consists of: (1) the amount of the initial lease liability; (2) any lease payments made to the lessor at or before the lease commencement date, minus any lease incentives received; and (3) any initial direct cost incurred by the Company. Initial direct costs are incremental costs of a lease that would not have been incurred if the lease had not been obtained and are capitalized as part of the lease asset. The lease liability equals the present value of the future cash payments discounted using the Company's incremental borrowing rate. The Company&#x2019;s incremental borrowing rate is the rate of interest that the Company would have to pay to borrow an amount equal to the lease payments over a similar term, which is the three-month London Interbank Offered Rate (LIBOR) plus a 2% credit risk spread.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease expense equals the total cash payments recognized on a straight-line basis over the lease term. The amortization of the lease asset is calculated as the straight-line lease expense less the accretion of the interest on the lease liability each period. The lease liability is reduced by the cash payment less the interest each period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill is stated at cost. The Company evaluates the potential impairment of goodwill annually each fourth quarter and whenever events or circumstances indicate the carrying value of the goodwill may not be recoverable. The Company performs a qualitative assessment of goodwill to determine whether further impairment testing is necessary. Factors that management considers in this assessment include general economic and industry conditions, overall financial performance (both current and projected), changes in strategy, changes in the composition or carrying amount of net assets, and market capitalization. If this qualitative assessment indicates that it is more likely than not that the fair value of a reporting unit is less than its carrying value, the Company would proceed to perform a quantitative impairment test. Under this quantitative analysis, the fair value of the reporting unit is compared with its carrying value, including goodwill. If the carrying value exceeds the fair value of the reporting unit, the Company recognizes an impairment charge. The Company estimates the fair value of its reporting unit using the income approach based on a discounted cash flow model. In addition, the Company uses the market approach, which compares the reporting unit to publicly-traded companies and transactions involving &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;similar businesses, to support the conclusions based on the income approach. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Intangible Assets&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets are stated at cost and amortized over the assets&#x2019; estimated useful lives. Intangible assets are either amortized in relation to the relative cash flows anticipated from the intangible asset or using the straight-line method, depending on facts and circumstances. The useful lives of distribution networks range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e"&gt;eleven&lt;/span&gt; to twelve years, completed technologies from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c"&gt;five&lt;/span&gt; to eight years, customer relationships from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467"&gt;five&lt;/span&gt; to eight years, non-compete agreements from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3"&gt;three&lt;/span&gt; to seven years, and trademarks two years. In-process technology is an indefinite-lived intangible asset until the technology is completed, at which point it is amortized over its estimated useful life. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company evaluates the potential impairment of intangible assets whenever events or circumstances indicate the carrying value of the assets may not be recoverable. For finite-lived intangible assets that are subject to amortization, the Company follows a two-step process for impairment testing. In step one, known as the recoverability test, the carrying value of the asset is compared to the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset. If the sum of the undiscounted future cash flows is less than the carrying value, the asset is not recoverable and step two is performed. In step two, the impairment charge is measured as the amount by which the carrying value of the asset exceeds its fair value. For indefinite-lived intangible assets that are not subject to amortization, the fair value of the asset is measured and an impairment charge is recorded as the amount by which the carrying value of the asset exceeds its fair value.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Warranty Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company warrants its products to be free from defects in material and workmanship for periods primarily ranging from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79"&gt;one&lt;/span&gt; to three years from the time of sale based on the product being purchased and the terms of the customer arrangement. Warranty obligations are evaluated and recorded at the time of sale since it is probable that customers will make claims under warranties related to products that have been sold and the amount of these claims can be reasonably estimated based on historical costs to fulfill claims. Obligations may also be recorded subsequent to the time of sale whenever specific events or circumstances impacting product quality become known that would not have been taken into account using historical data.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Contingencies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Loss contingencies are accrued if the loss is probable and the amount of the loss can be reasonably estimated. Legal costs associated with potential loss contingencies are expensed as incurred.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Derivative Instruments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Derivative instruments are recorded on the Consolidated Balance Sheets at fair value. Changes in the fair value of the Company&#x2019;s economic hedges utilizing foreign currency forward contracts are included in "Foreign currency gain (loss)" on the Consolidated Statements of Operations. The Company recognizes all derivative instruments as either current assets or current liabilities at fair value on the Consolidated Balance Sheets. When the Company is engaged in more than one outstanding derivative contract with the same counterparty and also has a legally enforceable master netting agreement with that counterparty, the &#x201c;net&#x201d; mark-to-market exposure represents the netting of the positive and negative exposures with that counterparty. The cash flows from derivative instruments are presented in the same category on the Consolidated Statements of Cash Flows as the category for the cash flows from the hedged item. Generally, this accounting policy election results in cash flows related to derivative instruments being classified as an operating activity on the Consolidated Statements of Cash Flows. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue in accordance with Accounting Standards Codification (ASC) 606, &#x201c;Revenue from Contracts with Customers.&#x201d; The core principle of ASC 606 is to recognize revenue in a manner that depicts the transfer of promised goods or services to customers in an amount that reflects the consideration to which the Company expects to be entitled in exchange for those goods or services. The framework in support of this core principle includes: (1) identifying the contract with the customer; (2) identifying the performance obligations in the contract; (3) determining the transaction price; (4) allocating the transaction price to the performance obligations; and (5) recognizing revenue when (or as) the performance obligations are satisfied. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Identifying the Contract with the Customer&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company identifies contracts with customers as agreements that create enforceable rights and obligations, which typically take the form of customer contracts or purchase orders. The Company accounts for a contract when it has approval and commitment from both parties, the rights of the parties are identified, payment terms are identified, the contract has commercial substance, and collectability of consideration is probable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Identifying the Performance Obligations in the Contract&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company identifies performance obligations as promises in contracts to transfer distinct goods or services. Standard products and services that the Company regularly sells separately, which customers can benefit from either on their own or with other readily available resources and are distinct within the context of the customer contract, are accounted for as distinct performance obligations. Application-specific customer solutions that are comprised of a combination of products and services are accounted for as one performance obligation to deliver a total solution to the customer. On-site support services that are provided to the customer after the solution is deployed are accounted for as a separate performance obligation. These solutions are provided to customers in a variety of industries, including the consumer electronics and logistics industries. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Shipping and handling activities for which the Company is responsible under the terms and conditions of the sale are not accounted for as performance obligations but as fulfillment costs. These activities are required to fulfill the Company&#x2019;s promise to transfer the goods and are expensed when revenue is recognized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company does not assess whether promised goods or services are performance obligations if they are immaterial in the context of the contract. If revenue is recognized before immaterial promises have been completed, then the costs related to such immaterial promises are accrued at the time of sale.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Determining the Transaction Price&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company determines the transaction price as the amount of consideration it expects to receive in exchange for transferring promised goods or services to the customer. Amounts collected from customers for sales taxes are excluded from the transaction price. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;If a contract includes a variable amount, such as a rebate, then the Company estimates the transaction price using either the expected value or the most likely amount of consideration to be received, depending on the specific facts and circumstances. The Company includes estimated variable consideration in the transaction price only to the extent it is probable that a significant reversal of revenue will not occur when the uncertainty is resolved. The Company updates its estimate of variable consideration at the end of each reporting period to reflect changes in facts and circumstances.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company does not grant customers the explicit right to return product. However, from time to time, the Company may allow a customer to return a product. As a practical expedient, the Company estimates the transaction price using the expected value based on its history of return experience using a portfolio approach in which the Company&#x2019;s total revenue is reduced by an estimate of total customer returns. Management reasonably expects that the effect of applying a portfolio approach to a group of contracts would not differ materially from considering each contract separately.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Allocating the Transaction Price to the Performance Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company allocates the transaction price to each performance obligation at contract inception based on a relative stand-alone selling price basis, or the price at which the Company would sell the good or service separately to similar customers in similar circumstances.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Recognizing Revenue When (or As) the Performance Obligations are Satisfied&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue when it transfers the promised goods or services to the customer. Revenue for standard products is recognized at the point in time when the customer obtains control of the goods, which is typically upon delivery when the customer has legal title, physical possession, the risks and rewards of ownership, and an enforceable obligation to pay for the products. Revenue for services, which are not material, is typically recognized over the time the service is provided. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue for application-specific customer solutions is recognized at the point in time when the solution is validated, which is the point in time when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligations in the arrangement. Although the customer may have taken legal title and physical possession of the goods when they arrived at the customer&#x2019;s &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;designated site, the significant risks and rewards of ownership transfer to the customer only upon validation. Revenue for on-site support services related to these solutions is recognized over the time the service is provided. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In certain instances, an arrangement may include customer-specified acceptance provisions or performance guarantees that allow the customer to accept or reject delivered products that do not meet the customer&#x2019;s specifications. If the Company can objectively determine that control of a good or service has been transferred to the customer in accordance with the agreed-upon specifications in the contract, then customer acceptance is a formality. If acceptance provisions are presumed to be substantive, then revenue is deferred until customer acceptance. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the Company&#x2019;s standard products and services, revenue recognition and billing typically occur at the same time. For application-specific customer solutions, however, the agreement with the customer may provide for billing terms which differ from revenue recognition criteria, resulting in either deferred revenue or unbilled revenue. Credit assessments are performed to determine payment terms, which vary by region, industry, and customer. Prepayment terms result in contract liabilities for customer deposits. When credit is granted to customers, payment is typically due 30 to 90 days from billing. The Company's contracts have an original expected duration of less than one year, and therefore as a practical expedient, the Company has elected to ignore the impact of the time value of money on a contract and to expense sales commissions. The Company recognizes an asset for costs to fulfill a contract if the costs relate directly to the contract and to future performance, and the costs are expected to be recovered. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management exercises judgment when determining the amount of revenue to be recognized each period. Such judgments include, but are not limited to, assessing the customer&#x2019;s ability and intention to pay substantially all of the contract consideration when due, determining when two or more contracts should be combined and accounted for as a single contract, determining whether a contract modification has occurred, assessing whether promises are immaterial in the context of the contract, determining whether material promises in a contract represent distinct performance obligations, estimating the transaction price for a contract that contains variable consideration, determining the stand-alone selling price of each performance obligation, determining whether control is transferred over time or at a point in time for performance obligations, and assessing whether formal customer acceptance provisions are substantive.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Research and Development&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Research and development costs primarily include personnel-related costs, prototyping materials, and outside services. Research and development costs are expensed when incurred until technological feasibility has been established for the product. Thereafter, all software costs may be capitalized until the product is available for general release to customers. The Company determines technological feasibility at the time the product reaches beta in its stage of development. Historically, the time incurred between beta and general release to customers has been short, and therefore, the costs have been insignificant. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Advertising Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Advertising costs are expensed as incurred and totaled $1,965,000 in 2021, $1,443,000 in 2020, and $1,385,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). The Company has reserved a specific number of shares of its authorized but unissued shares for issuance upon the exercise of stock options or the settlement of RSUs. When a stock option is exercised or an RSU is settled, the Company issues new shares from this pool. The fair values of stock options are estimated on the grant date using a binomial lattice model. Management is responsible for determining the appropriate valuation model and estimating these fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor and the observable market price of the Company's common stock on the grant date. The fair value of RSUs is determined based on the observable market price of the Company's common stock on the grant date less the present value of expected future dividends. When determining the grant-date fair value of stock-based awards, management further considers whether an adjustment is required to the observable market price or volatility of the Company's common stock that is used in the valuation as a result of material non-public information, if that information is expected to result in a material increase in share price.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes compensation expense related to stock-based awards using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;portion of the stock option or RSU as if the award was, in substance, multiple awards. The amount of compensation expense recognized at the end of the vesting period is based on the number of awards for which the requisite service has been completed. No compensation expense is recognized for awards that are forfeited for which the employee does not render the requisite service. The term &#x201c;forfeitures&#x201d; is distinct from &#x201c;expirations&#x201d; and represents only the unvested portion of the surrendered award. The Company applies estimated forfeiture rates to its unvested awards to arrive at the amount of compensation expense that is expected to be recognized over the requisite service period. At the end of each separately vesting portion of an award, the expense that was recognized by applying the estimated forfeiture rate is compared to the expense that should be recognized based on the employee&#x2019;s service, and an increase or decrease to compensation expense is recorded to true up the final expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes a tax position in its financial statements when that tax position, based solely upon its technical merits, is more likely than not to be sustained upon examination by the relevant taxing authority. Those tax positions failing to qualify for initial recognition are recognized in the first interim period in which they meet the more likely than not standard, or are resolved through negotiation or litigation with the taxing authority, or upon expiration of the statutes of limitations. Derecognition of a tax position that was previously recognized occurs when an entity subsequently determines that a tax position no longer meets the more likely than not threshold of being sustained.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Only the portion of the liability that is expected to be paid within one year is classified as a current liability. As a result, liabilities expected to be resolved without the payment of cash (e.g., resolution due to the expiration of the statutes of limitations) or are not expected to be paid within one year are not classified as current. It is the Company&#x2019;s policy to record estimated interest and penalties as income tax expense and tax credits as a reduction in income tax expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred tax assets and liabilities are determined based on the differences between the financial statement and tax bases of assets and liabilities as measured by the enacted tax rates that will be in effect when these differences reverse. Valuation allowances are provided if, based on the weight of available evidence, it is more likely than not that some or all of the deferred tax assets will not be realized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Tax Cuts and Jobs Act of 2017 imposed a minimum tax on foreign earnings related to intangible assets, known as the Global Intangible Low-Taxed Income (GILTI) tax. In 2019, the Company elected to account for the impact of the GILTI minimum tax in deferred taxes, a change from the Company&#x2019;s initial election made in 2018 whereby the GILTI minimum tax was included in income tax expense as incurred on an annual basis. The change is considered preferable, as it appropriately matches the Company&#x2019;s current and deferred income tax implications.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sales tax in the United States and similar taxes in other jurisdictions that are collected from customers and remitted to government authorities are presented on a gross basis (i.e., a receivable from the customer with a corresponding payable to the government). Amounts collected from customers and retained by the Company during tax holidays are recognized as non-operating income when earned.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Net Income Per Share&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period. Diluted net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period plus potential dilutive common shares. Dilutive common equivalent shares consist of stock options and restricted stock units and are calculated using the treasury stock method. Common equivalent shares do not qualify as participating securities. In periods where the Company records a net loss, potential common stock equivalents are not included in the calculation of diluted net loss per share as their effect would be anti-dilutive.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Comprehensive Income&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Comprehensive income is defined as the change in equity of a company during a period from transactions and other events and circumstances, excluding transactions resulting from investments by owners and distributions to owners. Accumulated other comprehensive loss, net of tax, consists of foreign currency translation adjustment losses of $43,665,000 and $36,912,000, as of December 31, 2021 and December 31, 2020, respectively; net unrealized losses on available-for-sale investments of $3,006,000 as of December 31, 2021, and net unrealized gains on available-for-sale investments of $4,382,000 as of December 31, 2020; and losses on currency swaps, net of gains on long-term intercompany loans of $1,271,000 at each year end.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Amounts reclassified from accumulated other comprehensive loss, net of tax, to investment income on the Consolidated Statements of Operations were net realized gains of $236,000, $4,119,000, and $1,452,000 for 2021, 2020, and 2019, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Concentrations of Risk&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to concentrations of credit risk consist primarily of cash, cash equivalents, investments, and accounts receivable. The Company has certain domestic and foreign cash balances that exceed the insured limits set by the Federal Deposit Insurance Corporation (FDIC) in the United States and equivalent regulatory agencies in foreign countries. The Company primarily invests in investment-grade debt securities and has established guidelines relative to credit ratings, diversification, and maturities of its debt securities that maintain safety and liquidity. The Company has historically not experienced any significant realized losses on its debt securities.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A single customer accounted for 17% of total revenue in 2021 and 15% of total accounts receivable as of December 31, 2021. Accounts receivable from a second customer accounted for 11% of total accounts receivable as of December 31, 2021. The Company performs ongoing credit evaluations of its customers and maintains allowances for potential credit losses. The Company has historically not experienced any significant losses related to the collection of its accounts receivable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A significant portion of the Company's products is presently manufactured by a third-party contractor located in Indonesia. This contract manufacturer has agreed to provide the Company with termination notification periods and last-time-buy rights, if and when that may be applicable. Our contract manufacturer's challenges in obtaining components and maintaining production have resulted in delays, and may continue to result in delays, in meeting our delivery schedules that, as a result, delay deliveries to our customers past their requested delivery date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain key electronic and mechanical components, such as integrated circuit chips, are fundamental to the design of Cognex products. Due to the impact of the COVID-19 pandemic or other factors, we have experienced, and may continue to experience, disruptions to the supply of components for our products that have resulted, and may continue to result, in higher purchase costs, delivery costs, and manufacturing delays.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company sources components from preferred vendors that are selected based on price and performance considerations. In the event of a supply disruption from a preferred vendor, these components may typically be purchased from alternative vendors, which may result in higher purchase costs and manufacturing delays based on the time required to identify and obtain sufficient quantities from an alternative source.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain of the Company&#x2019;s products utilize components that are available from only one source. If we are unable to secure adequate supply from these sources, we may have to redesign our products, which may lead to higher costs, delays in manufacturing, and possible loss of sales.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Business Acquisitions&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company determines whether a transaction qualifies as a business combination by applying the definition of a business, which requires the assets acquired and liabilities assumed to be inputs and processes that have the ability to contribute to the creation of outputs. The Company accounts for business combinations under the acquisition method of accounting, which requires the following steps: (1) identifying the acquirer, (2) determining the acquisition date, (3) recognizing and measuring the identifiable assets acquired and the liabilities assumed, and (4) recognizing and measuring goodwill. The Company measures the identifiable assets acquired and liabilities assumed at their estimated fair values as of the acquisition date. Management is responsible for determining the appropriate valuation model and estimated fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor. Management primarily establishes fair value using the income approach based on a discounted cash flow model. The income approach requires the use of many assumptions and estimates including future revenues and expenses, as well as discount factors. Contingent consideration liabilities are reported at their estimated fair values based on probability-adjusted present values of the consideration expected to be paid, using significant inputs and estimates. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain milestones and discount rates consistent with the level of risk of achievement. The fair values of these contingent consideration liabilities are remeasured each reporting period with changes in fair value included in "Other income (expense)" on the Consolidated Statements of Operations. Goodwill is recognized as of the acquisition date as the excess of the consideration transferred over the net amount of assets acquired and liabilities assumed. Transaction costs are expensed as incurred. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Restructuring Charges&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;One-time employee termination benefits as part of a restructuring activity exist at the date the plan of termination has been communicated to employees (the &#x201c;communication date&#x201d;) and meets all of the following criteria: (1) management, having the authority to approve the action, has committed to the plan of termination, (2) the plan identifies the number of employees to be terminated, their job classifications or functions and their locations, and the expected completion date, (3) the plan establishes the terms of the benefit arrangement in sufficient detail, and (4) actions required to complete the plan indicate it is unlikely that significant changes to the plan will be made. If employees are not required to render service until they are terminated in order to receive the termination benefits or will not be retained to render service beyond a minimum retention period, a liability for the termination benefits is recognized and measured at fair value at the communication date. Otherwise, a liability is measured initially at the communication date based on the fair value of the liability as of the termination date and recognized ratably over the future service period. Changes to the fair value of the liability are recorded as restructuring adjustments. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Closures of leased offices as part of a restructuring activity prior to the end of the contractual lease term are treated as abandoned right-to-use assets when the Company ceases to use the property for economic benefit and lacks either the intent or ability to sublease. The lease asset is written down to zero as of the abandonment date. Estimates of contract termination costs assume the Company will be obligated to pay the remaining rent over the contract period, and the lease liability continues to be recorded on the balance sheet. Subsequent negotiations that result in early contract terminations are recorded as favorable restructuring adjustments.&lt;/span&gt;&lt;/div&gt;Other associated costs as part of a restructuring activity include costs to consolidate facilities, costs to relocate employees, and legal fees incurred to research local statutory requirements and prepare termination agreements. These costs are recognized in the period in which the liability is incurred, which generally corresponds to the period in which the services are rendered.</us-gaap:SignificantAccountingPoliciesTextBlock>
    <cgnx:NatureOfOperationsPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDg_40a95e71-8fc5-4f86-948a-23ff4b6514b2">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Nature of Operations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cognex Corporation is a leading provider of machine vision products that capture and analyze visual information in order to automate manufacturing and distribution tasks where vision is required.&lt;/span&gt;&lt;/div&gt;</cgnx:NatureOfOperationsPolicyTextBlock>
    <us-gaap:UseOfEstimates
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMzk_92b02fa3-65e3-45e7-91e5-1416c5d6ab90">&lt;div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Use of Estimates in the Preparation of Financial Statements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The preparation of financial statements in conformity with accounting principles generally accepted in the United States of America (U.S.&#160;GAAP) requires management to make estimates and judgments that affect the reported amounts of assets and liabilities and the disclosure of contingent liabilities as of the balance sheet date, and the reported amounts of revenues and expenses during the year. Actual results could differ from those estimates. Significant estimates and judgments include those related to revenue recognition, investments, inventories, intangible assets, stock-based compensation, income taxes, business acquisitions, and restructuring charges.&lt;/span&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
    <us-gaap:ConsolidationPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDA_b80e797b-904f-4951-9ec4-c8637f925944">&lt;div style="margin-bottom:5pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Basis of Consolidation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The consolidated financial statements include the accounts of Cognex Corporation and its subsidiaries, all of which are wholly-owned. All intercompany accounts and transactions have been eliminated.&lt;/span&gt;&lt;/div&gt;</us-gaap:ConsolidationPolicyTextBlock>
    <us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNzE_7a7986c5-7d39-4a06-8579-668aaffa6260">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Foreign Currency Translation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The financial statements of the Company&#x2019;s foreign subsidiaries, where the local currency is the functional currency, are translated using exchange rates in effect at the end of the year for assets and liabilities and average exchange rates during the year for results of operations. The resulting foreign currency translation adjustment, net of tax, is included in shareholders&#x2019; equity as accumulated other comprehensive loss.&lt;/span&gt;&lt;/div&gt;</us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock>
    <us-gaap:FairValueOfFinancialInstrumentsPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMjg_735557e8-5540-494f-881b-cb9b5f24fded">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Fair Value Measurements&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company applies a three-level valuation hierarchy for fair value measurements. The categorization of assets and liabilities within the valuation hierarchy is based on the lowest level of input that is significant to the measurement of fair value. Level&#160;1 inputs to the valuation methodology utilize unadjusted quoted market prices in active markets for identical assets and liabilities. Level 2 inputs to the valuation methodology are other observable inputs, including quoted market prices for similar assets and liabilities, quoted prices for identical and similar assets and liabilities in markets that are not active, or other inputs that are observable or can be corroborated by observable market data. Level 3 inputs to the valuation methodology are unobservable inputs based on management&#x2019;s best estimate of the inputs that market participants would use in pricing the asset or liability at the measurement date, including assumptions about risk. A change to the level of an asset or liability within the fair value hierarchy is determined at the end of a reporting period.&lt;/span&gt;&lt;/div&gt;</us-gaap:FairValueOfFinancialInstrumentsPolicy>
    <us-gaap:InvestmentPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDg_511d7744-cfcd-41c7-9dda-5c383f7fe749">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Cash, Cash Equivalents, and Investments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#x2019;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#x2019; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of &lt;/span&gt;&lt;/div&gt;Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.</us-gaap:InvestmentPolicyTextBlock>
    <us-gaap:CashAndCashEquivalentsPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDg_ff03e124-fe84-4397-963f-d2419f8c685a">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Cash, Cash Equivalents, and Investments&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Money market instruments, as well as debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Debt securities with original maturities greater than three months and remaining maturities of one year or less are classified as current investments. Debt securities with remaining maturities greater than one year are classified as non-current investments. It is the Company&#x2019;s policy to invest in investment-grade debt securities with effective maturities that do not exceed ten years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Debt securities with original maturities greater than three months are designated as available-for-sale and are reported at fair value, with unrealized gains and losses, net of tax, included in shareholders&#x2019; equity as accumulated other comprehensive loss. Realized gains and losses are calculated using the specific identification method. Realized gains and losses, interest income, and the amortization of the discount or premium on debt securities arising at acquisition, are included in "Investment income" on the Consolidated Statements of Operations. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management monitors its debt securities to determine whether a loss exists related to the credit quality of the issuer. If the present value of the cash flows expected to be collected from the security is less than the amortized cost basis of the security, then a credit loss exists and an allowance against the security for credit losses is recorded. The allowance is limited to the amount by which fair value is below amortized cost, recognizing that the investment could be sold at fair value. Credit losses continue to be remeasured in subsequent reporting periods. Credit losses and recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of &lt;/span&gt;&lt;/div&gt;Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows.</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
    <cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzU1Ng_f57ac132-56c4-4ce0-9d84-4cbb0128d3f8">P10Y</cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum>
    <us-gaap:TradeAndOtherAccountsReceivablePolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyMDk_36eaeb9f-5c42-4e50-8aca-6874964bed10">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounts Receivable&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company extends credit with various payment terms to customers based on an evaluation of their financial condition. Accounts that are outstanding longer than the payment terms are considered to be past due. The Company establishes an allowance against accounts receivable for credit losses when it determines receivables are at risk for collection based on the length of time the receivable has been outstanding, the customer&#x2019;s current ability to pay its obligations to the Company, and general economic and industry conditions, as well as various other factors. Receivables are written off against this allowance in the period they are determined to be uncollectible and payments subsequently received on previously written-off receivables are recorded as a recovery of the credit loss. Credit losses and recoveries related to accounts receivable are included in "Selling, general, and administrative expenses" on the Consolidated Statements of Operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:TradeAndOtherAccountsReceivablePolicy>
    <us-gaap:InventoryPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMTA_3cd453d6-59b9-436b-a1ee-60f05114c067">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Inventories&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventories are stated at the lower of cost and net realizable value. Cost is determined using standard costs, which approximates actual costs under the first-in, first-out (FIFO) method. Net realizable value is the estimated selling price in the ordinary course of business, less reasonably predictable costs of completion, disposal, and transportation.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Purchase price variances are incurred when actual costs are different than standard costs due to favorable or unfavorable market prices. Management applies judgment to recognize purchase price variances in the same period that the associated standard costs of the finished goods that consume these components are sold.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s inventory is subject to technological change or obsolescence. The Company reviews inventory quantities on hand and estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and general economic and industry conditions, and records reserves to reduce the carrying value of inventories to their net realizable value. If actual future demand is less than estimated, additional inventory write-downs would be required.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company generally disposes of obsolete inventory upon determination of obsolescence. The Company does not dispose of excess inventory immediately, due to the possibility that some of this inventory could be sold to customers as a result of differences between actual and forecasted demand. When inventory has been written down below cost, such reduced amount is considered the new cost basis for subsequent accounting purposes. As a result, the Company could recognize a higher than normal gross margin if the reserved inventory were subsequently sold.&lt;/span&gt;&lt;/div&gt;</us-gaap:InventoryPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDg_58199548-55d7-4c46-92cc-8f17073a8956">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Property, Plant, and Equipment&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, plant, and equipment are stated at cost and depreciated using the straight-line method over the assets&#x2019; estimated useful lives. Buildings&#x2019; useful lives are 39 years, building improvements&#x2019; useful lives are ten years, and the useful lives of computer hardware and software, manufacturing test equipment, and furniture and fixtures range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyMQ_c33774f8-7ea1-4d45-9f46-f9e48f3888ad"&gt;two&lt;/span&gt; to ten years. Leasehold improvements are depreciated over the shorter of the estimated useful lives or the remaining terms of the leases. Maintenance and repairs are expensed when incurred; additions and improvements are capitalized. Upon retirement or disposition, the cost and related accumulated depreciation of the disposed assets are removed from the accounts, with any resulting gain or loss included in current operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i042f17eb78834accb0d70fa7b6537a83_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzY0OQ_25b38ae6-4efa-4875-95b3-7d0018ce1abf">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="id801c8716b924358a2daa2c6f91c5f88_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzY5Mw_292a1262-c849-4e16-bfd1-497c5f0d18b1">P10Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i12cf82d7d05c43c78d4287e35cb1a678_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNzgyNw_4e603ea9-03b7-4528-a63d-b919f3d83b7d">P10Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:InternalUseSoftwarePolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDk_7b3189b7-7bb6-41cf-b0d3-d9dd47614d59">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Internal-use Software&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Internal-use software is software acquired, internally developed, or modified solely to meet the Company's internal needs, and during the software's development, no substantive plan exists to sell the software. The accounting treatment for computer software developed for internal use depends on the nature of activities performed at each stage of development. The preliminary project stage includes conceptual formulation of design alternatives, determination of system requirements, vendor demonstrations, and final selection of vendors, and during this stage costs are expensed as incurred. The application development stage includes software configuration, coding, hardware installation, and testing. During this stage, certain costs are capitalized, including external direct costs of materials and services, as well as payroll and payroll-related costs for employees who are directly associated with the project, while certain costs are expensed as incurred, including training and data conversion costs. The post-implementation stage includes support and maintenance, and during this stage costs are expensed as incurred.&lt;/span&gt;&lt;/div&gt;Capitalization begins when both the preliminary project stage is completed and management commits to funding the project. Capitalization ceases at the point the project is substantially complete and ready for its intended use, that is, after all substantial testing is completed. Costs of specified upgrades and enhancements to internal-use software are capitalized if it is probable that those expenditures result in additional functionality. Capitalized costs are amortized on a straight-line basis over the estimated useful life.</us-gaap:InternalUseSoftwarePolicy>
    <us-gaap:LesseeLeasesPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExOTY_5b85a01f-8014-4acd-8a40-afe048a4fd43">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Leases&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;At inception of a contract, the Company determines whether that contract is or contains a lease by assessing whether there is an identified asset and whether the contract conveys the right to control the use of the identified asset for a period of time in exchange for consideration. The Company has control of the asset if it has the right to direct the use of the asset and obtains substantially all of the economic benefits from the use of the asset throughout the period of use.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As a practical expedient, the Company does not recognize a lease asset or lease liability for leases with a lease term of 12 months or less. In the determination of the lease term, the Company considers the existence of extension or termination options and the probability of those options being exercised.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Lease contracts may include lease components and non-lease components, such as common area maintenance and utilities for property leases. As a practical expedient, the Company accounts for the non-lease components together with the lease components as a single lease component for all of its leases.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company classifies a lease as a finance lease when it meets any of the following criteria at the lease commencement date: (1) the lease transfers ownership of the underlying asset to the Company by the end of the lease term; (2) the lease grants the Company an option to purchase the underlying asset that the Company is reasonably certain to exercise; (3) the lease term is for the major part of the remaining economic life of the underlying asset (the Company considers a major part to be 75% or more of the remaining economic life of the underlying asset); (4) the present value of the sum of the lease payments and any residual value guaranteed by the Company equals or exceeds substantially all of the fair value of the underlying asset (the Company considers substantially all the fair value to be 90% or more of the fair value of the underlying asset amount); or (5) the underlying asset is of such a specialized nature that it is expected to have no alternative use to the lessor at the end of the lease term. When none of the criteria above are met, the Company classifies the lease as an operating lease.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On the lease commencement date, the Company records a lease asset and lease liability on the balance sheet. The lease asset consists of: (1) the amount of the initial lease liability; (2) any lease payments made to the lessor at or before the lease commencement date, minus any lease incentives received; and (3) any initial direct cost incurred by the Company. Initial direct costs are incremental costs of a lease that would not have been incurred if the lease had not been obtained and are capitalized as part of the lease asset. The lease liability equals the present value of the future cash payments discounted using the Company's incremental borrowing rate. The Company&#x2019;s incremental borrowing rate is the rate of interest that the Company would have to pay to borrow an amount equal to the lease payments over a similar term, which is the three-month London Interbank Offered Rate (LIBOR) plus a 2% credit risk spread.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Operating lease expense equals the total cash payments recognized on a straight-line basis over the lease term. The amortization of the lease asset is calculated as the straight-line lease expense less the accretion of the interest on the lease liability each period. The lease liability is reduced by the cash payment less the interest each period.&lt;/span&gt;&lt;/div&gt;</us-gaap:LesseeLeasesPolicyTextBlock>
    <us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMjE_007cb5ed-8e52-4123-a2d2-29ae3e6b0b5e">&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Goodwill&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Goodwill is stated at cost. The Company evaluates the potential impairment of goodwill annually each fourth quarter and whenever events or circumstances indicate the carrying value of the goodwill may not be recoverable. The Company performs a qualitative assessment of goodwill to determine whether further impairment testing is necessary. Factors that management considers in this assessment include general economic and industry conditions, overall financial performance (both current and projected), changes in strategy, changes in the composition or carrying amount of net assets, and market capitalization. If this qualitative assessment indicates that it is more likely than not that the fair value of a reporting unit is less than its carrying value, the Company would proceed to perform a quantitative impairment test. Under this quantitative analysis, the fair value of the reporting unit is compared with its carrying value, including goodwill. If the carrying value exceeds the fair value of the reporting unit, the Company recognizes an impairment charge. The Company estimates the fair value of its reporting unit using the income approach based on a discounted cash flow model. In addition, the Company uses the market approach, which compares the reporting unit to publicly-traded companies and transactions involving &lt;/span&gt;&lt;/div&gt;similar businesses, to support the conclusions based on the income approach.</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:IntangibleAssetsFiniteLivedPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzQ_73b8b71b-a7cb-4b80-84fe-acea0d134fb9">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Intangible Assets&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets are stated at cost and amortized over the assets&#x2019; estimated useful lives. Intangible assets are either amortized in relation to the relative cash flows anticipated from the intangible asset or using the straight-line method, depending on facts and circumstances. The useful lives of distribution networks range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUyOTQ_5ce0e008-7055-453c-8ab4-01cc6d71497e"&gt;eleven&lt;/span&gt; to twelve years, completed technologies from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMzU_a0e5581d-45c8-4009-8aef-5032532f120c"&gt;five&lt;/span&gt; to eight years, customer relationships from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNzY_6d2ebdfe-29d5-4397-b25e-08f04b35e467"&gt;five&lt;/span&gt; to eight years, non-compete agreements from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MTc_c368a7b6-2b8c-45a1-af82-100a86daedb3"&gt;three&lt;/span&gt; to seven years, and trademarks two years. In-process technology is an indefinite-lived intangible asset until the technology is completed, at which point it is amortized over its estimated useful life. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company evaluates the potential impairment of intangible assets whenever events or circumstances indicate the carrying value of the assets may not be recoverable. For finite-lived intangible assets that are subject to amortization, the Company follows a two-step process for impairment testing. In step one, known as the recoverability test, the carrying value of the asset is compared to the sum of the undiscounted cash flows expected to result from the use and eventual disposition of the asset. If the sum of the undiscounted future cash flows is less than the carrying value, the asset is not recoverable and step two is performed. In step two, the impairment charge is measured as the amount by which the carrying value of the asset exceeds its fair value. For indefinite-lived intangible assets that are not subject to amortization, the fair value of the asset is measured and an impairment charge is recorded as the amount by which the carrying value of the asset exceeds its fair value.&lt;/span&gt;&lt;/div&gt;</us-gaap:IntangibleAssetsFiniteLivedPolicy>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i826aff0c969544a5a804571eeeecac12_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzMDA_cf5fa3a6-7d37-4b6c-93dc-315b3c59acd8">P12Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i7caad8bad2f949faa4c2da1d3c09973c_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzNDE_eb6748f6-53fc-40e8-ba75-2751376bac1e">P8Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ic244bf99eff947c5a9ba44ab7a5b9152_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTUzODI_b9d4ce04-6629-4f8b-a2a6-c6e001b6e4ea">P8Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i8f47b56746584e8cb790dd66dabcb5bd_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0MjM_f60735f5-27a8-4df5-9662-906a00028bdb">P7Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i498bff2ae83341f19a665c2ba6f5f152_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTU0NDI_4ed52dfa-3101-42c9-b3d0-520425239e98">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:StandardProductWarrantyPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTE_b2526291-1d10-4fe9-bc79-15c4c6b8ead5">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Warranty Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company warrants its products to be free from defects in material and workmanship for periods primarily ranging from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NDk_4673adf5-908a-4c87-aadc-eb029c283b79"&gt;one&lt;/span&gt; to three years from the time of sale based on the product being purchased and the terms of the customer arrangement. Warranty obligations are evaluated and recorded at the time of sale since it is probable that customers will make claims under warranties related to products that have been sold and the amount of these claims can be reasonably estimated based on historical costs to fulfill claims. Obligations may also be recorded subsequent to the time of sale whenever specific events or circumstances impacting product quality become known that would not have been taken into account using historical data.&lt;/span&gt;&lt;/div&gt;</us-gaap:StandardProductWarrantyPolicy>
    <cgnx:ProductWarrantyPeriod
      contextRef="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMTY3NTU_ac11a9af-6bd0-4440-842b-72f958b0992a">P3Y</cgnx:ProductWarrantyPeriod>
    <us-gaap:CommitmentsAndContingenciesPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTI_b0cdc071-9f3a-4e56-a5c1-a0ae52bf3876">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Contingencies&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Loss contingencies are accrued if the loss is probable and the amount of the loss can be reasonably estimated. Legal costs associated with potential loss contingencies are expensed as incurred.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesPolicyTextBlock>
    <us-gaap:DerivativesPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExODQ_7e2aef9a-2d70-457e-afd3-fef228649085">Derivative InstrumentsDerivative instruments are recorded on the Consolidated Balance Sheets at fair value. Changes in the fair value of the Company&#x2019;s economic hedges utilizing foreign currency forward contracts are included in "Foreign currency gain (loss)" on the Consolidated Statements of Operations. The Company recognizes all derivative instruments as either current assets or current liabilities at fair value on the Consolidated Balance Sheets. When the Company is engaged in more than one outstanding derivative contract with the same counterparty and also has a legally enforceable master netting agreement with that counterparty, the &#x201c;net&#x201d; mark-to-market exposure represents the netting of the positive and negative exposures with that counterparty. The cash flows from derivative instruments are presented in the same category on the Consolidated Statements of Cash Flows as the category for the cash flows from the hedged item. Generally, this accounting policy election results in cash flows related to derivative instruments being classified as an operating activity on the Consolidated Statements of Cash Flows.</us-gaap:DerivativesPolicyTextBlock>
    <us-gaap:RevenueRecognitionPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExMjY_02e9b072-022a-4fc1-b919-a0b77545bd94">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Revenue Recognition&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue in accordance with Accounting Standards Codification (ASC) 606, &#x201c;Revenue from Contracts with Customers.&#x201d; The core principle of ASC 606 is to recognize revenue in a manner that depicts the transfer of promised goods or services to customers in an amount that reflects the consideration to which the Company expects to be entitled in exchange for those goods or services. The framework in support of this core principle includes: (1) identifying the contract with the customer; (2) identifying the performance obligations in the contract; (3) determining the transaction price; (4) allocating the transaction price to the performance obligations; and (5) recognizing revenue when (or as) the performance obligations are satisfied. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Identifying the Contract with the Customer&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company identifies contracts with customers as agreements that create enforceable rights and obligations, which typically take the form of customer contracts or purchase orders. The Company accounts for a contract when it has approval and commitment from both parties, the rights of the parties are identified, payment terms are identified, the contract has commercial substance, and collectability of consideration is probable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Identifying the Performance Obligations in the Contract&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company identifies performance obligations as promises in contracts to transfer distinct goods or services. Standard products and services that the Company regularly sells separately, which customers can benefit from either on their own or with other readily available resources and are distinct within the context of the customer contract, are accounted for as distinct performance obligations. Application-specific customer solutions that are comprised of a combination of products and services are accounted for as one performance obligation to deliver a total solution to the customer. On-site support services that are provided to the customer after the solution is deployed are accounted for as a separate performance obligation. These solutions are provided to customers in a variety of industries, including the consumer electronics and logistics industries. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Shipping and handling activities for which the Company is responsible under the terms and conditions of the sale are not accounted for as performance obligations but as fulfillment costs. These activities are required to fulfill the Company&#x2019;s promise to transfer the goods and are expensed when revenue is recognized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company does not assess whether promised goods or services are performance obligations if they are immaterial in the context of the contract. If revenue is recognized before immaterial promises have been completed, then the costs related to such immaterial promises are accrued at the time of sale.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Determining the Transaction Price&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company determines the transaction price as the amount of consideration it expects to receive in exchange for transferring promised goods or services to the customer. Amounts collected from customers for sales taxes are excluded from the transaction price. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;If a contract includes a variable amount, such as a rebate, then the Company estimates the transaction price using either the expected value or the most likely amount of consideration to be received, depending on the specific facts and circumstances. The Company includes estimated variable consideration in the transaction price only to the extent it is probable that a significant reversal of revenue will not occur when the uncertainty is resolved. The Company updates its estimate of variable consideration at the end of each reporting period to reflect changes in facts and circumstances.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company does not grant customers the explicit right to return product. However, from time to time, the Company may allow a customer to return a product. As a practical expedient, the Company estimates the transaction price using the expected value based on its history of return experience using a portfolio approach in which the Company&#x2019;s total revenue is reduced by an estimate of total customer returns. Management reasonably expects that the effect of applying a portfolio approach to a group of contracts would not differ materially from considering each contract separately.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Allocating the Transaction Price to the Performance Obligations&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company allocates the transaction price to each performance obligation at contract inception based on a relative stand-alone selling price basis, or the price at which the Company would sell the good or service separately to similar customers in similar circumstances.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Recognizing Revenue When (or As) the Performance Obligations are Satisfied&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes revenue when it transfers the promised goods or services to the customer. Revenue for standard products is recognized at the point in time when the customer obtains control of the goods, which is typically upon delivery when the customer has legal title, physical possession, the risks and rewards of ownership, and an enforceable obligation to pay for the products. Revenue for services, which are not material, is typically recognized over the time the service is provided. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue for application-specific customer solutions is recognized at the point in time when the solution is validated, which is the point in time when the Company can objectively determine that the agreed-upon specifications in the contract have been met and the customer will accept the performance obligations in the arrangement. Although the customer may have taken legal title and physical possession of the goods when they arrived at the customer&#x2019;s &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;designated site, the significant risks and rewards of ownership transfer to the customer only upon validation. Revenue for on-site support services related to these solutions is recognized over the time the service is provided. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In certain instances, an arrangement may include customer-specified acceptance provisions or performance guarantees that allow the customer to accept or reject delivered products that do not meet the customer&#x2019;s specifications. If the Company can objectively determine that control of a good or service has been transferred to the customer in accordance with the agreed-upon specifications in the contract, then customer acceptance is a formality. If acceptance provisions are presumed to be substantive, then revenue is deferred until customer acceptance. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For the Company&#x2019;s standard products and services, revenue recognition and billing typically occur at the same time. For application-specific customer solutions, however, the agreement with the customer may provide for billing terms which differ from revenue recognition criteria, resulting in either deferred revenue or unbilled revenue. Credit assessments are performed to determine payment terms, which vary by region, industry, and customer. Prepayment terms result in contract liabilities for customer deposits. When credit is granted to customers, payment is typically due 30 to 90 days from billing. The Company's contracts have an original expected duration of less than one year, and therefore as a practical expedient, the Company has elected to ignore the impact of the time value of money on a contract and to expense sales commissions. The Company recognizes an asset for costs to fulfill a contract if the costs relate directly to the contract and to future performance, and the costs are expected to be recovered. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management exercises judgment when determining the amount of revenue to be recognized each period. Such judgments include, but are not limited to, assessing the customer&#x2019;s ability and intention to pay substantially all of the contract consideration when due, determining when two or more contracts should be combined and accounted for as a single contract, determining whether a contract modification has occurred, assessing whether promises are immaterial in the context of the contract, determining whether material promises in a contract represent distinct performance obligations, estimating the transaction price for a contract that contains variable consideration, determining the stand-alone selling price of each performance obligation, determining whether control is transferred over time or at a point in time for performance obligations, and assessing whether formal customer acceptance provisions are substantive.&lt;/span&gt;&lt;/div&gt;</us-gaap:RevenueRecognitionPolicyTextBlock>
    <cgnx:RevenuePaymentTerms
      contextRef="i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjU1NDg_7da7b860-ec25-4880-b46f-e89ea06213f7">P30D</cgnx:RevenuePaymentTerms>
    <cgnx:RevenuePaymentTerms
      contextRef="i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjU1NTQ_239f2b9c-9f21-4dd7-bbaa-d260cd566682">P90D</cgnx:RevenuePaymentTerms>
    <us-gaap:ResearchDevelopmentAndComputerSoftwarePolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExOTg_e2f841f3-4fa2-48f4-a42f-0f5fbe995744">Research and DevelopmentResearch and development costs primarily include personnel-related costs, prototyping materials, and outside services. Research and development costs are expensed when incurred until technological feasibility has been established for the product. Thereafter, all software costs may be capitalized until the product is available for general release to customers. The Company determines technological feasibility at the time the product reaches beta in its stage of development. Historically, the time incurred between beta and general release to customers has been short, and therefore, the costs have been insignificant.</us-gaap:ResearchDevelopmentAndComputerSoftwarePolicyTextBlock>
    <us-gaap:AdvertisingCostsPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyOTM_0e92433c-7a40-416e-95d7-b4b32f164b19">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Advertising Costs&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Advertising costs are expensed as incurred and totaled $1,965,000 in 2021, $1,443,000 in 2020, and $1,385,000 in 2019.&lt;/span&gt;&lt;/div&gt;</us-gaap:AdvertisingCostsPolicyTextBlock>
    <us-gaap:AdvertisingExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NDA_af6899b7-cc2e-48b9-999b-e9f00c922f62"
      unitRef="usd">1965000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NTA_b27be2e8-b1fa-4fdd-90bc-53cb1eea09b9"
      unitRef="usd">1443000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMjc2NjQ_8c970d1e-a17d-442c-8a2f-815111214a58"
      unitRef="usd">1385000</us-gaap:AdvertisingExpense>
    <us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDU_841f31f5-1149-4e78-9978-9a9f204168bd">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock-Based Compensation&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). The Company has reserved a specific number of shares of its authorized but unissued shares for issuance upon the exercise of stock options or the settlement of RSUs. When a stock option is exercised or an RSU is settled, the Company issues new shares from this pool. The fair values of stock options are estimated on the grant date using a binomial lattice model. Management is responsible for determining the appropriate valuation model and estimating these fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor and the observable market price of the Company's common stock on the grant date. The fair value of RSUs is determined based on the observable market price of the Company's common stock on the grant date less the present value of expected future dividends. When determining the grant-date fair value of stock-based awards, management further considers whether an adjustment is required to the observable market price or volatility of the Company's common stock that is used in the valuation as a result of material non-public information, if that information is expected to result in a material increase in share price.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes compensation expense related to stock-based awards using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting &lt;/span&gt;&lt;/div&gt;portion of the stock option or RSU as if the award was, in substance, multiple awards. The amount of compensation expense recognized at the end of the vesting period is based on the number of awards for which the requisite service has been completed. No compensation expense is recognized for awards that are forfeited for which the employee does not render the requisite service. The term &#x201c;forfeitures&#x201d; is distinct from &#x201c;expirations&#x201d; and represents only the unvested portion of the surrendered award. The Company applies estimated forfeiture rates to its unvested awards to arrive at the amount of compensation expense that is expected to be recognized over the requisite service period. At the end of each separately vesting portion of an award, the expense that was recognized by applying the estimated forfeiture rate is compared to the expense that should be recognized based on the employee&#x2019;s service, and an increase or decrease to compensation expense is recorded to true up the final expense.</us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy>
    <us-gaap:IncomeTaxPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDM_fd9733c2-029b-43c7-83dc-adf21a465c94">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Taxes&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company recognizes a tax position in its financial statements when that tax position, based solely upon its technical merits, is more likely than not to be sustained upon examination by the relevant taxing authority. Those tax positions failing to qualify for initial recognition are recognized in the first interim period in which they meet the more likely than not standard, or are resolved through negotiation or litigation with the taxing authority, or upon expiration of the statutes of limitations. Derecognition of a tax position that was previously recognized occurs when an entity subsequently determines that a tax position no longer meets the more likely than not threshold of being sustained.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Only the portion of the liability that is expected to be paid within one year is classified as a current liability. As a result, liabilities expected to be resolved without the payment of cash (e.g., resolution due to the expiration of the statutes of limitations) or are not expected to be paid within one year are not classified as current. It is the Company&#x2019;s policy to record estimated interest and penalties as income tax expense and tax credits as a reduction in income tax expense.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred tax assets and liabilities are determined based on the differences between the financial statement and tax bases of assets and liabilities as measured by the enacted tax rates that will be in effect when these differences reverse. Valuation allowances are provided if, based on the weight of available evidence, it is more likely than not that some or all of the deferred tax assets will not be realized.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Tax Cuts and Jobs Act of 2017 imposed a minimum tax on foreign earnings related to intangible assets, known as the Global Intangible Low-Taxed Income (GILTI) tax. In 2019, the Company elected to account for the impact of the GILTI minimum tax in deferred taxes, a change from the Company&#x2019;s initial election made in 2018 whereby the GILTI minimum tax was included in income tax expense as incurred on an annual basis. The change is considered preferable, as it appropriately matches the Company&#x2019;s current and deferred income tax implications.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sales tax in the United States and similar taxes in other jurisdictions that are collected from customers and remitted to government authorities are presented on a gross basis (i.e., a receivable from the customer with a corresponding payable to the government). Amounts collected from customers and retained by the Company during tax holidays are recognized as non-operating income when earned.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxPolicyTextBlock>
    <us-gaap:EarningsPerSharePolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNzA_81793403-2f29-4898-9a2b-467108a6964d">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Net Income Per Share&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Basic net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period. Diluted net income per share is computed by dividing net income available to common shareholders by the weighted-average number of common shares outstanding for the period plus potential dilutive common shares. Dilutive common equivalent shares consist of stock options and restricted stock units and are calculated using the treasury stock method. Common equivalent shares do not qualify as participating securities. In periods where the Company records a net loss, potential common stock equivalents are not included in the calculation of diluted net loss per share as their effect would be anti-dilutive.&lt;/span&gt;&lt;/div&gt;</us-gaap:EarningsPerSharePolicyTextBlock>
    <us-gaap:ComprehensiveIncomePolicyPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyODU_b1836693-5c68-4431-bdda-4c544449ae87">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Comprehensive Income&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Comprehensive income is defined as the change in equity of a company during a period from transactions and other events and circumstances, excluding transactions resulting from investments by owners and distributions to owners. Accumulated other comprehensive loss, net of tax, consists of foreign currency translation adjustment losses of $43,665,000 and $36,912,000, as of December 31, 2021 and December 31, 2020, respectively; net unrealized losses on available-for-sale investments of $3,006,000 as of December 31, 2021, and net unrealized gains on available-for-sale investments of $4,382,000 as of December 31, 2020; and losses on currency swaps, net of gains on long-term intercompany loans of $1,271,000 at each year end.&lt;/span&gt;&lt;/div&gt;Amounts reclassified from accumulated other comprehensive loss, net of tax, to investment income on the Consolidated Statements of Operations were net realized gains of $236,000, $4,119,000, and $1,452,000 for 2021, 2020, and 2019, respectively.</us-gaap:ComprehensiveIncomePolicyPolicyTextBlock>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM0NzE_9c9bf77a-d596-4384-afb6-e7c1ad2f0aa9"
      unitRef="usd">43665000</us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM0Nzg_46f3a51e-99dc-498e-b05d-fc5f180416ab"
      unitRef="usd">36912000</us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM1OTc_4dd4a6cd-fb74-45c2-988c-e7f4fb40199f"
      unitRef="usd">3006000</us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM2MDQ_44b370e2-aa0a-4ede-9d7c-24fa63830c99"
      unitRef="usd">4382000</us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM3NDY_d4b45a54-80b8-4114-8de7-471f0a78de42"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia081105dd8bd4aaaa1265cbf9c24acc2_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5MzI_8f2f17b3-8683-4362-80af-a417feee6468"
      unitRef="usd">236000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i8c44a3dba82a42458c156905bedae3bf_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5MzY_af919498-2de1-4b0d-b9b1-125cfc5720d3"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i11575d448348449484334a63f5c382ec_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfMzM5NDQ_a300473a-0c18-4c6d-9807-d6c13674da6f"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <cgnx:ConcentrationsOfRiskPolicyPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDEyNDA_45b173c8-d310-4580-93a9-fe0ae4b0222e">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Concentrations of Risk&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Financial instruments that potentially subject the Company to concentrations of credit risk consist primarily of cash, cash equivalents, investments, and accounts receivable. The Company has certain domestic and foreign cash balances that exceed the insured limits set by the Federal Deposit Insurance Corporation (FDIC) in the United States and equivalent regulatory agencies in foreign countries. The Company primarily invests in investment-grade debt securities and has established guidelines relative to credit ratings, diversification, and maturities of its debt securities that maintain safety and liquidity. The Company has historically not experienced any significant realized losses on its debt securities.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A single customer accounted for 17% of total revenue in 2021 and 15% of total accounts receivable as of December 31, 2021. Accounts receivable from a second customer accounted for 11% of total accounts receivable as of December 31, 2021. The Company performs ongoing credit evaluations of its customers and maintains allowances for potential credit losses. The Company has historically not experienced any significant losses related to the collection of its accounts receivable.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A significant portion of the Company's products is presently manufactured by a third-party contractor located in Indonesia. This contract manufacturer has agreed to provide the Company with termination notification periods and last-time-buy rights, if and when that may be applicable. Our contract manufacturer's challenges in obtaining components and maintaining production have resulted in delays, and may continue to result in delays, in meeting our delivery schedules that, as a result, delay deliveries to our customers past their requested delivery date. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain key electronic and mechanical components, such as integrated circuit chips, are fundamental to the design of Cognex products. Due to the impact of the COVID-19 pandemic or other factors, we have experienced, and may continue to experience, disruptions to the supply of components for our products that have resulted, and may continue to result, in higher purchase costs, delivery costs, and manufacturing delays.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company sources components from preferred vendors that are selected based on price and performance considerations. In the event of a supply disruption from a preferred vendor, these components may typically be purchased from alternative vendors, which may result in higher purchase costs and manufacturing delays based on the time required to identify and obtain sufficient quantities from an alternative source.&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:12pt;font-weight:400;line-height:120%"&gt; &lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Certain of the Company&#x2019;s products utilize components that are available from only one source. If we are unable to secure adequate supply from these sources, we may have to redesign our products, which may lead to higher costs, delays in manufacturing, and possible loss of sales.&lt;/span&gt;&lt;/div&gt;</cgnx:ConcentrationsOfRiskPolicyPolicyTextBlock>
    <us-gaap:BusinessCombinationsPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNDc_006eea2e-4221-4544-b34d-9cfd0027f057">Business AcquisitionsThe Company determines whether a transaction qualifies as a business combination by applying the definition of a business, which requires the assets acquired and liabilities assumed to be inputs and processes that have the ability to contribute to the creation of outputs. The Company accounts for business combinations under the acquisition method of accounting, which requires the following steps: (1) identifying the acquirer, (2) determining the acquisition date, (3) recognizing and measuring the identifiable assets acquired and the liabilities assumed, and (4) recognizing and measuring goodwill. The Company measures the identifiable assets acquired and liabilities assumed at their estimated fair values as of the acquisition date. Management is responsible for determining the appropriate valuation model and estimated fair values, and in doing so, considers a number of factors, including information provided by an outside valuation advisor. Management primarily establishes fair value using the income approach based on a discounted cash flow model. The income approach requires the use of many assumptions and estimates including future revenues and expenses, as well as discount factors. Contingent consideration liabilities are reported at their estimated fair values based on probability-adjusted present values of the consideration expected to be paid, using significant inputs and estimates. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain milestones and discount rates consistent with the level of risk of achievement. The fair values of these contingent consideration liabilities are remeasured each reporting period with changes in fair value included in "Other income (expense)" on the Consolidated Statements of Operations. Goodwill is recognized as of the acquisition date as the excess of the consideration transferred over the net amount of assets acquired and liabilities assumed. Transaction costs are expensed as incurred.</us-gaap:BusinessCombinationsPolicy>
    <us-gaap:CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF85Ny9mcmFnOmQ4NjY4ZjBjNzNjMDQyOTg5ZjVmN2NjNDQ2M2U5YTc2L3RleHRyZWdpb246ZDg2NjhmMGM3M2MwNDI5ODlmNWY3Y2M0NDYzZTlhNzZfNDExNTc_3d628cf2-62d7-4d03-a0b3-09a2a20dcc78">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Restructuring Charges&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;One-time employee termination benefits as part of a restructuring activity exist at the date the plan of termination has been communicated to employees (the &#x201c;communication date&#x201d;) and meets all of the following criteria: (1) management, having the authority to approve the action, has committed to the plan of termination, (2) the plan identifies the number of employees to be terminated, their job classifications or functions and their locations, and the expected completion date, (3) the plan establishes the terms of the benefit arrangement in sufficient detail, and (4) actions required to complete the plan indicate it is unlikely that significant changes to the plan will be made. If employees are not required to render service until they are terminated in order to receive the termination benefits or will not be retained to render service beyond a minimum retention period, a liability for the termination benefits is recognized and measured at fair value at the communication date. Otherwise, a liability is measured initially at the communication date based on the fair value of the liability as of the termination date and recognized ratably over the future service period. Changes to the fair value of the liability are recorded as restructuring adjustments. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Closures of leased offices as part of a restructuring activity prior to the end of the contractual lease term are treated as abandoned right-to-use assets when the Company ceases to use the property for economic benefit and lacks either the intent or ability to sublease. The lease asset is written down to zero as of the abandonment date. Estimates of contract termination costs assume the Company will be obligated to pay the remaining rent over the contract period, and the lease liability continues to be recorded on the balance sheet. Subsequent negotiations that result in early contract terminations are recorded as favorable restructuring adjustments.&lt;/span&gt;&lt;/div&gt;Other associated costs as part of a restructuring activity include costs to consolidate facilities, costs to relocate employees, and legal fees incurred to research local statutory requirements and prepare termination agreements. These costs are recognized in the period in which the liability is incurred, which generally corresponds to the period in which the services are rendered.</us-gaap:CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy>
    <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDMvZnJhZzpmNzQ4MDI0NDk3MTU0OTI1YTM5ZDhjZDQxNDM1Y2E0MC90ZXh0cmVnaW9uOmY3NDgwMjQ0OTcxNTQ5MjVhMzlkOGNkNDE0MzVjYTQwXzUyODU_b2a7d890-c79b-4ead-b6b9-465408872df6">New Pronouncements&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2019-12, "Simplifying the Accounting for Income Taxes"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU eliminate certain exceptions related to the approach for intraperiod tax allocation, the methodology for calculating income taxes in an interim period, and the recognition of deferred tax liabilities for outside basis differences. They also clarify and simplify other aspects of the accounting for income taxes. The Company adopted ASU 2019-12 on January 1, 2021. Upon adoption, ASU 2019-12 did not have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2020-08, "Codification Improvements to Subtopic 310-20, Receivables - Nonrefundable Fees and Other Costs"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU clarify that for each reporting period, for callable debt with multiple call dates and call prices that may change at each call date, to the extent that the amortized cost basis of an individual callable debt security exceeds the amount repayable by the issuer at the next call date, the excess is amortized to the next call date. The Company adopted ASU 2020-08 on January 1, 2021. Upon adoption, ASU 2020-08 did not have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2020-04, "Reference Rate Reform (Topic 848): Facilitation of the Effects of Reference Rate Reform on Financial Reporting" and (ASU) 2021-01, "Reference Rate Reform (Topic 848): Scope"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in these ASUs apply to all entities that have contracts, hedging relationships, and other transactions that reference LIBOR or another reference rate expected to be discontinued because of reference rate reform. Together, the ASUs provide optional expedients and exceptions for applying generally accepted accounting principles (GAAP) to contracts, hedging relationships, and other transactions affected by reference rate reform if certain criteria are met. The expedients and exceptions provided by the amendments do not apply to contract modifications made and hedging relationships entered into or evaluated after December 31, 2022, except for hedging relationships existing as of December 31, 2022 that an entity has elected certain optional expedients for and that are retained through the end of the hedging relationship. The amendments in these ASUs are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 or ASU 2021-01 to have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2021-08, "Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU primarily address the accounting for contract assets and contract liabilities related to revenue contracts with customers in a business combination. The ASU clarifies that an acquirer should account for the related revenue contracts in accordance with Accounting Standards Codification 606 as if the acquirer had originated the contracts. The amendments in this ASU are effective for fiscal years beginning after December 15, 2022, including interim periods within those fiscal years, although early adoption is permitted. The amendments in the ASU should be applied prospectively to business combinations occurring on or after the effective date of the amendments. The expected financial statement impact of this new accounting standard cannot be reasonably estimated at this time, as the impact in future periods will depend on the contract assets and contract liabilities acquired in future business combinations. Management does not expect this ASU to have a material impact on the Company's disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDMvZnJhZzpmNzQ4MDI0NDk3MTU0OTI1YTM5ZDhjZDQxNDM1Y2E0MC90ZXh0cmVnaW9uOmY3NDgwMjQ0OTcxNTQ5MjVhMzlkOGNkNDE0MzVjYTQwXzUyODc_289363b3-7e29-4e39-b5a2-9d15f609ff0f">New Pronouncements&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2019-12, "Simplifying the Accounting for Income Taxes"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU eliminate certain exceptions related to the approach for intraperiod tax allocation, the methodology for calculating income taxes in an interim period, and the recognition of deferred tax liabilities for outside basis differences. They also clarify and simplify other aspects of the accounting for income taxes. The Company adopted ASU 2019-12 on January 1, 2021. Upon adoption, ASU 2019-12 did not have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2020-08, "Codification Improvements to Subtopic 310-20, Receivables - Nonrefundable Fees and Other Costs"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU clarify that for each reporting period, for callable debt with multiple call dates and call prices that may change at each call date, to the extent that the amortized cost basis of an individual callable debt security exceeds the amount repayable by the issuer at the next call date, the excess is amortized to the next call date. The Company adopted ASU 2020-08 on January 1, 2021. Upon adoption, ASU 2020-08 did not have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2020-04, "Reference Rate Reform (Topic 848): Facilitation of the Effects of Reference Rate Reform on Financial Reporting" and (ASU) 2021-01, "Reference Rate Reform (Topic 848): Scope"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in these ASUs apply to all entities that have contracts, hedging relationships, and other transactions that reference LIBOR or another reference rate expected to be discontinued because of reference rate reform. Together, the ASUs provide optional expedients and exceptions for applying generally accepted accounting principles (GAAP) to contracts, hedging relationships, and other transactions affected by reference rate reform if certain criteria are met. The expedients and exceptions provided by the amendments do not apply to contract modifications made and hedging relationships entered into or evaluated after December 31, 2022, except for hedging relationships existing as of December 31, 2022 that an entity has elected certain optional expedients for and that are retained through the end of the hedging relationship. The amendments in these ASUs are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 or ASU 2021-01 to have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounting Standards Update (ASU) 2021-08, "Business Combinations (Topic 805): Accounting for Contract Assets and Contract Liabilities from Contracts with Customers"&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The amendments in this ASU primarily address the accounting for contract assets and contract liabilities related to revenue contracts with customers in a business combination. The ASU clarifies that an acquirer should account for the related revenue contracts in accordance with Accounting Standards Codification 606 as if the acquirer had originated the contracts. The amendments in this ASU are effective for fiscal years beginning after December 15, 2022, including interim periods within those fiscal years, although early adoption is permitted. The amendments in the ASU should be applied prospectively to business combinations occurring on or after the effective date of the amendments. The expected financial statement impact of this new accounting standard cannot be reasonably estimated at this time, as the impact in future periods will depend on the contract assets and contract liabilities acquired in future business combinations. Management does not expect this ASU to have a material impact on the Company's disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock>
    <us-gaap:FairValueDisclosuresTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5MjY_584d2dca-b571-47ff-9573-37d5ac6d1da6">Fair Value Measurements&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Financial Assets and Liabilities that are Measured at Fair Value on a Recurring Basis&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:93.421%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:50.386%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.549%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.549%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.552%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Quoted&#160;Prices&#160;in&lt;br/&gt;Active Markets&lt;br/&gt;for Identical&lt;br/&gt;Assets (Level&#160;1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Significant&#160;Other&lt;br/&gt;Observable&lt;br/&gt;Inputs (Level&#160;2)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unobservable Inputs                       (Level 3)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market instruments&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;537&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,595&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,665&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;230&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s money market instruments are reported at fair value based on the daily market price for identical assets in active markets, and are therefore classified as Level 1. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s debt securities and forward contracts are reported at fair value based on model-driven valuations in which all significant inputs are observable or can be derived from or corroborated by observable market data for substantially the full term of the asset or liability, and are therefore classified as Level 2. Management is responsible for estimating the fair value of these financial assets and liabilities, and in doing so, considers valuations provided by a large, third-party pricing service. For debt securities, this service maintains regular contact with market makers, brokers, dealers, and analysts to gather information on market movement, direction, trends, and other specific data. They use this information to structure yield curves for various types of debt securities and arrive at the daily valuations. The Company's forward contracts are typically traded or executed in over-the-counter markets with a high degree of pricing transparency. The market participants are generally large commercial banks.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company's contingent consideration liabilities are reported at fair value based on probability-adjusted present values of the consideration expected to be paid using significant inputs that are not observable in the market, and are therefore classified as Level 3. Key assumptions used in these estimates include probability assessments with respect to the likelihood of achieving certain revenue milestones. The fair values of these contingent consideration liabilities were calculated using discount rates consistent with the level of risk of achievement, and are remeasured each reporting period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the activity for the Company's liabilities measured at fair value using Level 3 inputs (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.303%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.497%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fair value adjustment to Chiaro contingent consideration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(114)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Payment of Chiaro contingent consideration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,039)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of the contingent consideration liability related to the Company's acquisition of GVi Ventures, Inc. in 2017 was written down to zero in 2019 resulting from a lower level of revenue in the Americas' automotive industry, and the balance remains at zero as of December 31, 2021. The undiscounted potential outcomes related to future contingent consideration range from $0 to $2,500,000 based on certain revenue levels through April of 2022. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Non-financial Assets that are Measured at Fair Value on a Non-recurring Basis&lt;/span&gt;&lt;/div&gt;Non-financial assets, such as property, plant and equipment, operating lease assets, goodwill, and intangible assets, are required to be measured at fair value only when an impairment loss is recognized. The Company evaluates these long-lived assets for impairment whenever events or changes in circumstances, referred to as "triggering events," indicate the carrying value may not be recoverable. The adverse impact of the COVID-19 pandemic on our business in 2020 triggered a review of long-lived assets for potential impairment as of May 26, 2020, which resulted in operating lease asset impairment charges of $3,427,000 (refer to Notes 7 and 22) that were included in "Restructuring charges" on the Consolidated Statements of Operations, and intangible asset impairment charges of $19,571,000 (refer to Note 9) in the second quarter of 2020. These fair value measurements were based on the present values of future cash flows using significant inputs that are not observable in the market, and were therefore classified as Level 3. The Company did not record impairment charges related to non-financial assets in 2021 or 2019.</us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5MzY_89f5bc36-39ed-4184-8f6d-fcc3d2ebdfe8">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the financial assets and liabilities measured at fair value on a recurring basis as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:93.421%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:50.386%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.549%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.549%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.552%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Quoted&#160;Prices&#160;in&lt;br/&gt;Active Markets&lt;br/&gt;for Identical&lt;br/&gt;Assets (Level&#160;1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Significant&#160;Other&lt;br/&gt;Observable&lt;br/&gt;Inputs (Level&#160;2)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unobservable Inputs                       (Level 3)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market instruments&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;537&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,595&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,665&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;230&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock>
    <cgnx:MoneyMarketInstrumentsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtMS0xLTEtMjg4MDU_4d8b809e-afd5-49fd-93ed-fffa917a2512"
      unitRef="usd">537000</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:MoneyMarketInstrumentsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtMy0xLTEtMjg4MDU_9a5a0eab-31b1-4816-bbf6-9faf2e8a9e76"
      unitRef="usd">0</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:MoneyMarketInstrumentsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzMtNS0xLTEtMjg4MDU_f3201f3c-680a-4a4a-bf03-36bbb1d80da7"
      unitRef="usd">0</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtMS0xLTEtMjg4MDU_381d1683-db2c-46eb-ba21-62ca7b02109d"
      unitRef="usd">0</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtMy0xLTEtMjg4MDU_0a105753-0490-4e1c-a932-2453c4ef110a"
      unitRef="usd">554306000</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzQtNS0xLTEtMjg4MDU_56aa9db1-a93e-4d5e-93d0-b8af6b6488a8"
      unitRef="usd">0</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMS0xLTEtMzM4NzY_81204fa0-9e2a-4dde-b37e-e1cb373bde67"
      unitRef="usd">0</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMy0xLTEtMzM4NzY_224016f1-e86d-43a4-848b-d23e6130c923"
      unitRef="usd">81595000</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNS0xLTEtMzM4NzY_26d2a189-e016-41f2-9808-7eb5a5105bc1"
      unitRef="usd">0</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMS0xLTEtMjg4MDU_e0c8a484-d89b-48ed-aa2f-48da3db5ab72"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtMy0xLTEtMjg4MDU_543fef45-f140-4a55-9789-3d8f63fc6bbd"
      unitRef="usd">58665000</cgnx:TreasuryBillsFairValueDisclosure>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNC0xLTEtMjg4MDU_3b960cea-462f-4773-b7ef-bf27cf9c96ba"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzUtNS0xLTEtMjg4MDU_9fce6006-aaf3-4276-a482-c6d7cb6d3232"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtMS0xLTEtMjg4MDU_08b49866-b262-4359-90dd-ab7d4ffba5ed"
      unitRef="usd">0</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtMy0xLTEtMjg4MDU_0006b433-cec8-4713-89a6-f66f6930b667"
      unitRef="usd">18879000</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzgtNS0xLTEtMjg4MDU_90dec2f9-8c0e-4bc7-bf7c-d31eb3dad849"
      unitRef="usd">0</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMS0xLTEtMzQxNjk_688a8752-50fa-4192-8ce1-6416064325a1"
      unitRef="usd">0</cgnx:MunicipalBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMy0xLTEtMzQxNjk_1c85d034-dc24-4e46-b6db-d72d11fa6384"
      unitRef="usd">5639000</cgnx:MunicipalBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktNS0xLTEtMzQxNjk_3df4ce89-76e5-4ab4-ae06-5c6404864766"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMS0xLTEtMjg4MDU_bc50c8fd-999d-4276-8697-94abc3f8708a"
      unitRef="usd">0</cgnx:SovereignBondsFairValueDisclosure>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktMy0xLTEtMjg4MDU_e1e0c34a-7bed-4fb6-b8a1-4992be701ff7"
      unitRef="usd">2119000</cgnx:SovereignBondsFairValueDisclosure>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzktNS0xLTEtMjg4MDU_944ad573-5cf4-48fe-8aa2-72899362e651"
      unitRef="usd">0</cgnx:SovereignBondsFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTEtMS0xLTI4ODA1_4bd1c2d9-f7e2-4c8e-b4f7-34fb2032114e"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTMtMS0xLTI4ODA1_3cadf306-3ea1-494f-8f0b-a62541522929"
      unitRef="usd">39000</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzEzLTUtMS0xLTI4ODA1_53d641bf-597c-4e37-86f6-959cbd253cb9"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="ib0c023c21ea94cfda67a9aed5e4824e6_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTEtMS0xLTI4ODA1_8bd626b9-a162-4bc0-86fd-6c7422241016"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="i596d75bc930d4fa195d274ceea0712fa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTMtMS0xLTI4ODA1_42cff970-b437-42cf-a94b-83b9473d8117"
      unitRef="usd">230000</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="i18231fa7d3004cc8abb3dccaed931dfe_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTpkZDY5MTI1NDNjOTU0OWZhOGI2NGRiNDc5NGM4Mjg2NC90YWJsZXJhbmdlOmRkNjkxMjU0M2M5NTQ5ZmE4YjY0ZGI0Nzk0YzgyODY0XzE2LTUtMS0xLTI4ODA1_e7b85bab-e65a-40b2-a01d-4d2e5aa3bda2"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM5NDA_54cfd824-710e-46a1-9af6-47ddb95a520b">&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the activity for the Company's liabilities measured at fair value using Level 3 inputs (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.303%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.497%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,153&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fair value adjustment to Chiaro contingent consideration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(114)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Payment of Chiaro contingent consideration&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,039)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzAtMS0xLTEtMjg4MDU_cb723200-da00-4dea-a849-5bca4a35ab5e"
      unitRef="usd">1153000</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:LiabilitiesFairValueAdjustment
      contextRef="icbe413b8380b4b74b96766d056cfe1be_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzMtMS0xLTEtMjg4MDU_ff776ed7-15b7-4544-81b5-7e1fed8e467e"
      unitRef="usd">-114000</us-gaap:LiabilitiesFairValueAdjustment>
    <us-gaap:LiabilitiesFairValueAdjustment
      contextRef="i7916769b28254833942a005f3b6b3b20_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzUtMS0xLTEtMjg4MDU_ecc4828f-2cd6-4979-8abb-150cf9b54181"
      unitRef="usd">-1039000</us-gaap:LiabilitiesFairValueAdjustment>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzctMS0xLTEtMjg4MDU_6a77ff5f-ffb2-47f3-af04-66c071e48d7d"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90YWJsZTo3YWY1YmVjNzI3MWY0N2Q4OGNjNDc2YzFhYzRhNGQ0Zi90YWJsZXJhbmdlOjdhZjViZWM3MjcxZjQ3ZDg4Y2M0NzZjMWFjNGE0ZDRmXzEyLTEtMS0xLTI4ODA1_ba816db4-fec3-4892-b408-4bac1e262a7f"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="i1ba31dc29f6e4fd583635b026a78c70e_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzIzNzU_b6a24fb9-8489-4136-96b3-ac2a31674a5a"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="iff8191abdb834fa281b3e2476e14a7dc_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI1MDg_ad7d19b1-14c8-4cc3-bba5-49be021eb3a1"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow
      contextRef="id9c74275ab59442fb9ded8deb5674d28_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI2MjY_ea977ed5-ed25-415e-a900-0f85c538e717"
      unitRef="usd">0</us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh
      contextRef="i7222cc20036644a3b44ea75faaa45733_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzI2MzI_db7e079a-2224-45ef-849a-6a479abf30c0"
      unitRef="usd">2500000</us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM0NjE_f1673ba8-4cf4-4c72-b243-5ddb7b8d9391"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMDkvZnJhZzozMWEyZjI1YTAwOGI0NmIyOWI1YWE3ZTU4ZGZhNTk4Yi90ZXh0cmVnaW9uOjMxYTJmMjVhMDA4YjQ2YjI5YjVhYTdlNThkZmE1OThiXzM2MjQ_d118fa41-3893-44b4-8413-91dead33fcc1"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MjE_38351454-2f9f-4eb1-8a24-5a1fe91f10e3">Cash, Cash Equivalents, and Investments&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash, cash equivalents, and investments consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:65.175%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.322%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.470%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;185,624&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;266,609&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market instruments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;537&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,464&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash and cash equivalents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;186,161&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;269,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,088&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;32,714&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;37,655&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;18,912&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,403&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,998&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,303&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,802&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,660&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current investments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;137,455&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;103,240&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;481,218&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;203,428&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,940&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;67,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39,753&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;16,077&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,006&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,119&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,440&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;641&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,735&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current investments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;583,748&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;395,125&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;907,364&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;767,438&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s cash balance included foreign bank balances totaling $142,009,000 and $225,853,000 as of December&#160;31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Corporate bonds consist of debt securities issued by both domestic and foreign companies; asset-backed securities consist of debt securities collateralized by pools of receivables or loans with credit enhancement; treasury bills consist of debt securities issued by the U.S. government; municipal bonds consist of debt securities issued by state and local government entities; agency bonds consist of domestic or foreign obligations of government agencies and government-sponsored enterprises that have government backing; and sovereign bonds consist of direct debt issued by foreign governments. All of the Company's securities as of December 31, 2021 and 2020 were denominated in U.S. Dollars.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued interest receivable is included in "Prepaid expenses and other current assets" on the Consolidated Balance Sheets and amounted to $3,037,000 and $1,560,000 as of December 31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s available-for-sale investments as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:36.583%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.709%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.005%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Amortized&lt;br/&gt;Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Unrealized&lt;br/&gt;Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;72,863&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(26)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,088&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,568&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;112&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(25)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,655&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,864&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,912&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,029&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;485,140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,477)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;481,218&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;44,197&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(302)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,940&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(33)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,128&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,141&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;635&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;725,105&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,069&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,971)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;721,203&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s gross unrealized losses and fair values for available-for-sale investments in an unrealized loss position as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:34.289%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.885%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.328%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Loss&lt;br/&gt;Position For Less than&lt;br/&gt;12 Months&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Loss&lt;br/&gt;Position For Greater than&lt;br/&gt;12 Months&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;431,652&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,470)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(33)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;434,762&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,503)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,980&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;806&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(10)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51,786&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(327)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,040&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,040&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency Bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;525,868&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,896)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,808&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(75)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;533,676&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,971)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Management monitors debt securities that are in an unrealized loss position to determine whether a loss exists related to the credit quality of the issuer. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts of expected future cash flows. Based on this evaluation, no allowance for credit losses on debt securities was recorded as of December 31, 2021.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Decreases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(160)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;The Company recorded gross realized gains on the sale of debt securities totaling $246,000 in 2021, $4,283,000 in 2020, and $1,581,000 in 2019, and gross realized losses on the sale of debt securities totaling $10,000 in 2021, $164,000 in 2020, and $129,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the effective maturity dates of the Company&#x2019;s available-for-sale investments as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:34.876%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.206%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.913%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.297%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:7.857%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:7.857%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.624%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&amp;lt;1&#160;Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;1-2&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2-3&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;3-4&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;4-5&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,088&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;205,331&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;175,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;64,356&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,539&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,655&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,668&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,092&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,810&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,595&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,912&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,665&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,052&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,067&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;137,455&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;285,172&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;181,712&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,515&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,349&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;721,203&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock>
    <cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0Mjk_2759fc2f-1792-42ff-9b4e-0c21eac9d0a4">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash, cash equivalents, and investments consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:65.175%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.322%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.470%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;185,624&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;266,609&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Money market instruments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;537&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,464&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash and cash equivalents&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;186,161&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;269,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,088&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;32,714&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;37,655&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;18,912&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,403&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,998&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,303&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,802&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,660&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current investments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;137,455&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;103,240&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;481,218&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;203,428&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,940&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;67,058&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39,753&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96,458&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;16,077&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,006&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,119&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,440&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;641&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,735&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current investments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;583,748&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;395,125&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;907,364&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;767,438&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock>
    <us-gaap:Cash
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzItMS0xLTEtMjg4MDU_a4bb867f-9f0a-49fe-a601-a059f7f1c133"
      unitRef="usd">185624000</us-gaap:Cash>
    <us-gaap:Cash
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzItMy0xLTEtMjg4MDU_a8b37101-8355-429e-8ba8-6480714e2dd9"
      unitRef="usd">266609000</us-gaap:Cash>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzQtMS0xLTEtMjg4MDU_3c58acfc-ca41-44ab-a8f3-d76ed53d28ad"
      unitRef="usd">537000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzQtMy0xLTEtMjg4MDU_3ca52bf9-2bea-4d1f-adb8-98ca733cfb1d"
      unitRef="usd">2464000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzUtMS0xLTEtMjg4MDU_ac300beb-8cef-4372-b55c-71a4bb802764"
      unitRef="usd">186161000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzUtMy0xLTEtMjg4MDU_2393e22d-0cea-48d7-a18a-aec4a6ab4677"
      unitRef="usd">269073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMS0xLTEtMzM4ODI_c9fcdff4-ccfc-421f-a7ce-00312585da57"
      unitRef="usd">73088000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMy0xLTEtMzM4ODI_1a685299-bfa8-40d3-93a9-f75e6fbe9ea5"
      unitRef="usd">32714000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMS0xLTEtMzM4ODY_809bcb71-d4b5-40a2-a3bc-4f2d30b99e62"
      unitRef="usd">37655000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="iba5325337fb447629dd40761b20085ac_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMy0xLTEtMzM4ODY_5d20df4d-232e-49b6-9595-44dfbffa1391"
      unitRef="usd">25160000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i4f034dcc34ec4f97b1b287538da11e25_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMS0xLTEtMjg4MDU_077d904c-3fc4-439b-b002-8c2cc7cbe6f0"
      unitRef="usd">18912000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="id45501f2632647e7bbcd9975d9d5f9b8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzYtMy0xLTEtMjg4MDU_02371b32-d126-4e53-99a4-2e083eb3f518"
      unitRef="usd">35403000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMS0xLTEtMjg4MDU_0de4ea39-5e43-4184-8470-c37dd4a9be22"
      unitRef="usd">4998000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i70319cf3a4cf43499a8860f2430ec150_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzctMy0xLTEtMjg4MDU_9deec0e7-ee4a-41ab-bb21-f2f7392e4dd1"
      unitRef="usd">1303000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzgtMS0xLTEtMjg4MDU_cfa65401-cdc0-4d37-bd0d-1dac53b10cbd"
      unitRef="usd">2802000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzgtMy0xLTEtMjg4MDU_6e3c2506-01a1-4b71-9549-af4dabbbcd2c"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzktMS0xLTEtMjg4MDU_b3d71643-9236-495d-b4c6-5e45185d3741"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzktMy0xLTEtMjg4MDU_6a2e6058-5847-41ef-93e4-45ffc362e7a3"
      unitRef="usd">8660000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE1LTEtMS0xLTI4ODA1_78d3501a-20b0-4152-82a4-14db31298814"
      unitRef="usd">137455000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE1LTMtMS0xLTI4ODA1_33187824-45ff-4f30-996a-a7b0e501eb1e"
      unitRef="usd">103240000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE2LTEtMS0xLTI4ODA1_332ba45c-1ca8-493b-9bf1-7b44a47ff255"
      unitRef="usd">481218000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i80e0e9f13cd94edeb850daaf5cbf340a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE2LTMtMS0xLTI4ODA1_6c59cf0d-7fc4-413c-b93a-25b4a480e6a2"
      unitRef="usd">203428000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTEtMS0xLTMzODk5_cd25539e-811d-4358-b2b3-b987196e36db"
      unitRef="usd">43940000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="iba5325337fb447629dd40761b20085ac_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTMtMS0xLTMzODk5_44434eb5-ebb7-44a0-bedb-63035b88c26d"
      unitRef="usd">67058000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i4f034dcc34ec4f97b1b287538da11e25_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTEtMS0xLTI4ODA1_57b12480-7c98-4b69-93d3-c0302dae843f"
      unitRef="usd">39753000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="id45501f2632647e7bbcd9975d9d5f9b8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE3LTMtMS0xLTI4ODA1_1cf548b3-7fd5-407c-8f21-6179e3a150f1"
      unitRef="usd">96458000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE5LTEtMS0xLTI4ODA1_2da88d00-0c82-40f6-8993-31bb9be85faf"
      unitRef="usd">16077000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i1fc3fbc333a64fb2a5e6449b7f32a8a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzE5LTMtMS0xLTI4ODA1_7940c3f6-e492-43e7-96ff-115fb034b3ad"
      unitRef="usd">19006000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIxLTEtMS0xLTMzOTAz_c4bd9630-93c2-403a-9bc0-32b6b723842a"
      unitRef="usd">2119000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i1bbde01d9d9f47dab768ca3b0748fef3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIxLTMtMS0xLTMzOTAz_72e1dc92-8ed8-41cd-a2a1-e2db75fd3df9"
      unitRef="usd">3440000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIwLTEtMS0xLTI4ODA1_7814fced-79b7-4e48-8b62-05ef0befa8aa"
      unitRef="usd">641000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i70319cf3a4cf43499a8860f2430ec150_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIwLTMtMS0xLTI4ODA1_1fe493bd-b056-4487-896f-653ea7958083"
      unitRef="usd">5735000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:LongTermInvestments
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIyLTEtMS0xLTI4ODA1_79a3949a-c4c9-4236-a5fa-1fca52174dd7"
      unitRef="usd">583748000</us-gaap:LongTermInvestments>
    <us-gaap:LongTermInvestments
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIyLTMtMS0xLTI4ODA1_bf338f76-7934-445d-a960-c73712c1f6b4"
      unitRef="usd">395125000</us-gaap:LongTermInvestments>
    <cgnx:CashCashEquivalentsShortTermAndLongTermInvestments
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIzLTEtMS0xLTI4ODA1_fb050c13-8d80-4306-9306-34bdf6ca7e8a"
      unitRef="usd">907364000</cgnx:CashCashEquivalentsShortTermAndLongTermInvestments>
    <cgnx:CashCashEquivalentsShortTermAndLongTermInvestments
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0YzlmNTczNzM5ODY0MWJjYmQ3N2I4NWQwMWJjNDIzOC90YWJsZXJhbmdlOjRjOWY1NzM3Mzk4NjQxYmNiZDc3Yjg1ZDAxYmM0MjM4XzIzLTMtMS0xLTI4ODA1_2a9a508a-6608-48be-b119-c381276308c2"
      unitRef="usd">767438000</cgnx:CashCashEquivalentsShortTermAndLongTermInvestments>
    <cgnx:DueFromForeignBanks
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIwNQ_de33ebe7-ed8c-4b6e-b3eb-f79974d9d0ea"
      unitRef="usd">142009000</cgnx:DueFromForeignBanks>
    <cgnx:DueFromForeignBanks
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMg_14d8038e-feed-45f8-851c-e0205c6e4944"
      unitRef="usd">225853000</cgnx:DueFromForeignBanks>
    <us-gaap:InterestReceivable
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzEyNTY_dc8d863a-81da-419c-be58-ef6817b36151"
      unitRef="usd">3037000</us-gaap:InterestReceivable>
    <us-gaap:InterestReceivable
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzEyNjM_552c30d3-7db3-4889-82f8-4229ccfb66b9"
      unitRef="usd">1560000</us-gaap:InterestReceivable>
    <us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MTc_15820db2-3b33-411b-b9d6-dd50df2720dc">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s available-for-sale investments as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:36.583%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.709%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.005%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Amortized&lt;br/&gt;Cost&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Unrealized&lt;br/&gt;Gains&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;72,863&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(26)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,088&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,568&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;112&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(25)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,655&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,864&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,912&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,029&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;485,140&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,477)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;481,218&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;44,197&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(302)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43,940&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,740&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;46&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(33)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,128&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,141&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;635&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;725,105&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,069&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,971)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;721,203&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtMS0xLTEtMjg4MDU_bc441cb6-e400-4d60-8813-e11787837ee8"
      unitRef="usd">72863000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtMy0xLTEtMjg4MDU_7d951226-3b08-47ae-8939-99cc3512f4f1"
      unitRef="usd">251000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtNS0xLTEtMjg4MDU_a5c3d586-c08e-47b9-ad74-a63d1aa71ac0"
      unitRef="usd">26000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5270f007445d4f288628feb6aa72bd8d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzMtNy0xLTEtMjg4MDU_ab7548db-ecf0-479d-8bf3-cc848d08f1af"
      unitRef="usd">73088000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtMS0xLTEtMjg4MDU_c85cb2f8-f910-4191-a177-7c073f42e0a1"
      unitRef="usd">37568000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtMy0xLTEtMjg4MDU_e99c4b17-efc7-4912-bef1-52a4077d74e3"
      unitRef="usd">112000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtNS0xLTEtMjg4MDU_79a3468f-8ed0-4ca3-b944-64b46d54ce94"
      unitRef="usd">25000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i0bb7d91c89c140edb09cd5c36634ea3a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzQtNy0xLTEtMjg4MDU_f08b0f54-76ed-487f-b085-0f550cb1aa5d"
      unitRef="usd">37655000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMS0xLTEtMzM5MjI_af18defe-5733-4ddc-adbc-690c6a5ac1f7"
      unitRef="usd">18864000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMy0xLTEtMzM5MjI_9af008c1-9f35-416c-8009-27cf9cb4dfa8"
      unitRef="usd">51000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNS0xLTEtMzM5MjI_de0a7189-334e-4eb6-b750-395731c7a630"
      unitRef="usd">3000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5bcf06fc6e654f668da80ed998328a22_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNy0xLTEtMzM5MjI_5c4633e2-d93f-4949-91e4-393a19c0f179"
      unitRef="usd">18912000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMS0xLTEtMjg4MDU_2fa07f90-de6e-45fd-a0ad-7ca49fdbbef6"
      unitRef="usd">5029000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctMy0xLTEtMjg4MDU_6bbbb113-22ca-4952-8aad-c668ebfe0f58"
      unitRef="usd">1000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNS0xLTEtMjg4MDU_a088e4f4-310e-448a-8fa9-ccf7e2c95d1b"
      unitRef="usd">32000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ibeb1eba6e1a94b98aaa8ea87f184efb0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzctNy0xLTEtMjg4MDU_48d20728-76e7-482a-9095-4fa1f02811fc"
      unitRef="usd">4998000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtMS0xLTEtMzM5Mjk_ffb76243-44e4-4eda-925e-cd75be0639c2"
      unitRef="usd">2800000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtMy0xLTEtMzM5Mjk_942dad3b-9b3c-4d66-8a4a-a5c694aa120c"
      unitRef="usd">2000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtNS0xLTEtMzM5Mjk_c5226c1c-0e0d-41da-b67f-9a0f5eafed8e"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i6ec0d0fb26044e35997ce16c3db61e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzgtNy0xLTEtMzM5Mjk_1ae752eb-a2c6-47f5-83ba-efb7084a0f66"
      unitRef="usd">2802000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTEtMS0xLTI4ODA1_2fcf580e-42ee-4b80-9be3-fa97207b38d7"
      unitRef="usd">485140000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTMtMS0xLTI4ODA1_f96e51e4-5673-4ffd-b083-4f1e59f1babe"
      unitRef="usd">555000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTUtMS0xLTI4ODA1_16ad477a-5132-4a08-a64b-11b272cfaf6f"
      unitRef="usd">4477000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i576160d57c9b437b9a770c73f2dfb9e0_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEwLTctMS0xLTI4ODA1_777b0f59-b46a-4fdf-aaa3-8f70f6f2bde3"
      unitRef="usd">481218000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTEtMS0xLTMzOTU4_c40d5b38-a23b-4a74-8d73-3a171738edbe"
      unitRef="usd">44197000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTMtMS0xLTMzOTU4_f85b3146-8b2f-476c-999f-57a75edc3ca0"
      unitRef="usd">45000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTUtMS0xLTMzOTU4_fdaa79fd-a024-4bec-b2e4-a4931ae6fec8"
      unitRef="usd">302000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ied62dc4cfad5417a8633ac6443c3d7ea_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTctMS0xLTMzOTU4_3616c1d1-0a4e-4763-9922-ab23064ee227"
      unitRef="usd">43940000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTEtMS0xLTI4ODA1_115a0754-dc8d-4ca4-a229-7f4f843e1b1b"
      unitRef="usd">39740000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTMtMS0xLTI4ODA1_b696dc45-b7a7-4604-82ae-90249e4a147b"
      unitRef="usd">46000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTUtMS0xLTI4ODA1_ef45d596-a6a7-42bd-bbd2-5d84e2447e32"
      unitRef="usd">33000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5dfe7c62945b4ac1ae3a7fc0704e6eda_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzExLTctMS0xLTI4ODA1_da036745-0d3a-4676-99d2-793f4fabdffd"
      unitRef="usd">39753000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTEtMS0xLTI4ODA1_a380ab13-f043-40a3-aa3f-6838df8b7fbe"
      unitRef="usd">16128000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTMtMS0xLTI4ODA1_9415c71f-8264-4dcc-836f-1bb7c140d2b4"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTUtMS0xLTI4ODA1_16c647d4-6eee-4512-a2f0-774547b389dc"
      unitRef="usd">51000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i146468f197ec4ffaaf568dea9d808150_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEyLTctMS0xLTI4ODA1_9698a391-1647-4f4c-84a1-939fc12326aa"
      unitRef="usd">16077000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTEtMS0xLTI4ODA1_108b952e-5469-49a0-a0b2-216f14c64464"
      unitRef="usd">2141000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTMtMS0xLTI4ODA1_0fcb3118-d710-4105-baeb-a413996f67e1"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTUtMS0xLTI4ODA1_2736ed20-d209-4ec9-8c44-3e714fb5849f"
      unitRef="usd">22000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ie09121a494bc4ffb945fdfa43d22add3_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzEzLTctMS0xLTI4ODA1_66ef647b-7f10-4915-9327-c7614781d0cb"
      unitRef="usd">2119000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTEtMS0xLTI4ODA1_7753c8b0-effa-4aef-9b68-8219f090eb1e"
      unitRef="usd">635000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTMtMS0xLTI4ODA1_35a30478-4ecf-47f6-beff-877326d658bc"
      unitRef="usd">6000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTUtMS0xLTI4ODA1_5356f665-b664-4203-b911-4d61496fd3e8"
      unitRef="usd">0</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i901039d16aa346d6b2d5832a09c9e94e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE0LTctMS0xLTI4ODA1_6c2633eb-bc21-42e8-8b79-03c87a9b94ed"
      unitRef="usd">641000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTEtMS0xLTI4ODA1_1419243f-5767-43ae-9496-adbac0f4dfeb"
      unitRef="usd">725105000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTMtMS0xLTI4ODA1_bf36bfc6-4383-4e9e-b79d-a9555d7b39da"
      unitRef="usd">1069000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTUtMS0xLTI4ODA1_1fb29981-c2f9-4d49-8970-a3c67df112ac"
      unitRef="usd">4971000</us-gaap:AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZToxYWFjN2ZhZTg2MGE0NGIyYjdiNmE2YjY5OGE0MmQ4OC90YWJsZXJhbmdlOjFhYWM3ZmFlODYwYTQ0YjJiN2I2YTZiNjk4YTQyZDg4XzE2LTctMS0xLTI4ODA1_7d28f744-7d4a-4904-bd16-435b5389a607"
      unitRef="usd">721203000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MTE_533fc9f1-a0c2-49c2-a17c-ac67e97ad3f8">&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:34.289%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.885%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.032%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.328%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Loss&lt;br/&gt;Position For Less than&lt;br/&gt;12 Months&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized Loss&lt;br/&gt;Position For Greater than&lt;br/&gt;12 Months&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Unrealized&lt;br/&gt;Losses&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;431,652&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,470)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(33)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;434,762&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,503)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,980&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;806&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(10)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51,786&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(327)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,040&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;25,040&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(36)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency Bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(51)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,892&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(32)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(22)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;525,868&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,896)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,808&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(75)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;533,676&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,971)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMS0xLTEtMzM5NzM_1a41ae93-8319-40e4-b0a5-ea41b152fa56"
      unitRef="usd">431652000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMy0xLTEtMzM5NzM_1b3d7acd-dafb-4466-9033-ad5a10d356a9"
      unitRef="usd">4470000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNS0xLTEtMzM5NzM_6482b01f-5d00-43e2-bcac-5b0ea75c7e22"
      unitRef="usd">3110000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNy0xLTEtMzM5NzM_26a000d8-1031-46f3-9ca2-a4bbba6cc624"
      unitRef="usd">33000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtOS0xLTEtMzM5NzM_920a798a-9658-4d55-b9a9-3ef14fa19ef2"
      unitRef="usd">434762000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMTEtMS0xLTMzOTcz_cd4f41fe-ef93-40a2-8287-95d8b2810e83"
      unitRef="usd">4503000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMS0xLTEtMzM5NzY_e003f0be-b0a4-4cb5-834f-96e89289a83a"
      unitRef="usd">50980000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMy0xLTEtMzM5NzY_5f3ad607-a28d-46ac-838e-5f9fcb973cee"
      unitRef="usd">317000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNS0xLTEtMzM5NzY_ae63fa0b-ece8-48bc-a283-f4495d59a04d"
      unitRef="usd">806000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNy0xLTEtMzM5NzY_8abe4c4b-16f9-4359-8a93-dcbb4fd9c419"
      unitRef="usd">10000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtOS0xLTEtMzM5NzY_5eb4be04-aaa8-4fc8-98b0-e2966984b1b2"
      unitRef="usd">51786000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMTEtMS0xLTMzOTc2_7fede6c3-d314-4cff-867d-4883588ac46c"
      unitRef="usd">327000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMS0xLTEtMjg4MDU_6b125404-112c-41d7-b619-3d33baa42a69"
      unitRef="usd">25040000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMy0xLTEtMjg4MDU_485bce7d-27cb-4c72-aa09-daf6df0d1cc9"
      unitRef="usd">36000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNS0xLTEtMjg4MDU_720f49d5-15e8-48be-a516-79e7ae6bbb31"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtNy0xLTEtMjg4MDU_ff540eb7-01fd-4ac9-826c-3313f758eba9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtOS0xLTEtMjg4MDU_0dce033b-20ec-47ee-b04a-885d63048f01"
      unitRef="usd">25040000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzMtMTEtMS0xLTI4ODA1_4d67a411-bfc8-4fb6-8d06-ad519949df9e"
      unitRef="usd">36000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMS0xLTEtMjg4MDU_005e5699-e333-4e90-87ed-40881100376e"
      unitRef="usd">16077000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMy0xLTEtMjg4MDU_de1f7fc6-2d2c-4702-9834-324c25bc1f11"
      unitRef="usd">51000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNS0xLTEtMjg4MDU_028b7caa-5b84-44b0-a8df-7f9c70a079e4"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtNy0xLTEtMjg4MDU_cd66f828-c2fe-4bb7-9be9-1c7d42c2d6e9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtOS0xLTEtMjg4MDU_d758de3e-8297-4d32-a3fa-2db439b53391"
      unitRef="usd">16077000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzQtMTEtMS0xLTI4ODA1_48460740-a77f-4027-b5c9-2bc4a088c796"
      unitRef="usd">51000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMS0xLTEtMzM5ODM_15940937-dcd6-40b4-a65d-4dc62ef8dc39"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMy0xLTEtMzM5ODM_574d2348-7210-4242-92f0-b2142831ef10"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctNS0xLTEtMzM5ODM_bacd6fd8-d0cb-40f0-972e-2ddc8c7c1b6b"
      unitRef="usd">3892000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctNy0xLTEtMzM5ODM_415d99c2-475f-47c1-958a-8c2c7a7fbcdf"
      unitRef="usd">32000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctOS0xLTEtMzM5ODM_c5fc4a87-1804-4d94-bd52-3349d2ae1da2"
      unitRef="usd">3892000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzctMTEtMS0xLTMzOTgz_9f8e78fc-0e15-4014-9268-8b4f38a7ee96"
      unitRef="usd">32000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMS0xLTEtMjg4MDU_e6e8b84d-141b-4977-aced-315fa8db0b9c"
      unitRef="usd">2119000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMy0xLTEtMjg4MDU_df3b915f-4b3e-46b6-ae3b-eda157f88867"
      unitRef="usd">22000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtNS0xLTEtMjg4MDU_215d5d29-aa9a-40fc-a369-13c0a506dae9"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtNy0xLTEtMjg4MDU_056b768c-32ee-4b21-8895-3e8881ac52d6"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtOS0xLTEtMjg4MDU_16986103-c0d7-4b34-a266-76403338e8a5"
      unitRef="usd">2119000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzUtMTEtMS0xLTI4ODA1_c0c3c7b3-c8cb-4adb-a059-6e9090200a43"
      unitRef="usd">22000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMS0xLTEtMjg4MDU_fa6e1912-a544-4813-a733-1ab74156bfa3"
      unitRef="usd">525868000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMy0xLTEtMjg4MDU_bec757c7-1309-4c3b-aea6-eb2713fc74f5"
      unitRef="usd">4896000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktNS0xLTEtMjg4MDU_52557de2-ed1d-4e6e-94b1-77041e816b97"
      unitRef="usd">7808000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger>
    <us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktNy0xLTEtMjg4MDU_539d5a91-d64f-4c6a-bdda-dab05be9d8f4"
      unitRef="usd">75000</us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktOS0xLTEtMjg4MDU_adfa3bea-95cf-4b4b-8242-803cf473a2fe"
      unitRef="usd">533676000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPosition>
    <us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTo0MDg4YjBiNzE0NGI0M2ViOGVjMzc5ZGEzNDc1YjI2Yi90YWJsZXJhbmdlOjQwODhiMGI3MTQ0YjQzZWI4ZWMzNzlkYTM0NzViMjZiXzktMTEtMS0xLTI4ODA1_035469bc-94ef-44d9-90e0-853907c53fda"
      unitRef="usd">4971000</us-gaap:DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0NDc_b6f8101f-07ed-43c2-aa44-2122a65f08ce">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Decreases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(160)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0NDc_fc018196-e80d-46b2-a5a8-116740b09583">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Decreases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(160)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzAtMS0xLTEtMjg4MDU_955bdb4a-2330-4de0-9c9a-127d56035795"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzEtMS0xLTEtMjk1ODA_23226358-f744-40a1-bf5c-3082fa27cae6"
      unitRef="usd">160000</us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzItMS0xLTEtMjk1ODA_b613c510-8cb7-492e-953f-eef07a624cde"
      unitRef="usd">-160000</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzQtMS0xLTEtMjg4MDU_eec09592-1abd-4930-acc4-c8246c0ee077"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTpmZmI4ODlhYjI3Y2M0MTNiYTdmY2MzNDg5OWJkZTQwNy90YWJsZXJhbmdlOmZmYjg4OWFiMjdjYzQxM2JhN2ZjYzM0ODk5YmRlNDA3XzktMS0xLTEtMjg4MDU_a3b04a57-64ee-4b1f-a806-ed6c6ee289c1"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMjg_2f02daea-00dd-4bee-a59e-48023e6e1f4c"
      unitRef="usd">246000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxMzg_795d6684-8741-496b-b0da-a2abe29acea9"
      unitRef="usd">4283000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedGain
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIxNTI_72f7a0cd-4d27-4712-81e2-21bda00f2519"
      unitRef="usd">1581000</us-gaap:DebtSecuritiesAvailableForSaleRealizedGain>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyMjg_018ef2c4-f531-4047-84c9-497849ce89dd"
      unitRef="usd">10000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyMzg_85039d5d-8809-4e7f-b14c-3b5fa931cd3c"
      unitRef="usd">164000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzIyNTI_b250ddbb-2c74-4cf5-bd32-37450f555e81"
      unitRef="usd">129000</us-gaap:DebtSecuritiesAvailableForSaleRealizedLoss>
    <us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90ZXh0cmVnaW9uOjg0NTBmMTM1MjVlNzRiZmE5NWI4OTU1N2YwYzExMzI0XzI0MjA_c972c394-680f-4321-a4bb-79b7c80dfa1c">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the effective maturity dates of the Company&#x2019;s available-for-sale investments as of December&#160;31, 2021 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:34.876%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.206%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.913%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.297%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:7.857%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:7.857%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.624%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;&amp;lt;1&#160;Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;1-2&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2-3&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;3-4&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;4-5&#160;Years&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Corporate bonds&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,088&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;205,331&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;175,992&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;64,356&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;35,539&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554,306&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Asset-backed securities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37,655&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,668&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,092&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,810&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;81,595&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,912&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;39,753&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,665&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Agency bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,802&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16,077&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18,879&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Municipal bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,998&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sovereign bonds&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,052&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,067&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,119&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;137,455&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;285,172&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;181,712&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,515&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,349&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;721,203&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMS0xLTEtMjg4MDU_17d620d8-4896-4fdb-a441-8e5c4516001e"
      unitRef="usd">73088000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMy0xLTEtMjg4MDU_08e5e69f-8a31-4517-9214-22e1d1009720"
      unitRef="usd">205331000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtNS0xLTEtMjg4MDU_80554b29-a3b2-4767-8309-7d47c71e7d5a"
      unitRef="usd">175992000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtNy0xLTEtMjg4MDU_7c80bb9b-ddca-4f52-848d-b0b40dc9e71a"
      unitRef="usd">64356000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtOS0xLTEtMjg4MDU_11c0bde9-8133-4a00-b106-309dce3e56f6"
      unitRef="usd">35539000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i258ae9fc57d74aa6b16c0989df29cb9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzEtMTMtMS0xLTI4ODA1_5135d111-bcf6-4c66-9874-ebc8f16f2a7c"
      unitRef="usd">554306000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMS0xLTEtMzQwMTQ_43f3c412-3e72-4fc8-8b13-0090b6c699fd"
      unitRef="usd">37655000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMy0xLTEtMzQwMTQ_1be44b21-4e52-4c39-bdb1-04664400256e"
      unitRef="usd">23370000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNS0xLTEtMzQwMTQ_beb87181-96f4-4932-9561-101c32cb77e9"
      unitRef="usd">4668000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNy0xLTEtMzQwMTQ_836670d2-d4ac-4ccb-be51-38da9ffc23f1"
      unitRef="usd">8092000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItOS0xLTEtMzQwMTQ_de579158-b68f-4863-be60-3531f362e108"
      unitRef="usd">7810000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="idc23ae27e8c045be80b9ae12562de1e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMTMtMS0xLTM0MDE0_650a9748-b429-4f43-951d-235b6ab366ed"
      unitRef="usd">81595000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMS0xLTEtMjg4MDU_9f8853c2-a15d-4523-acf7-8c091de1068d"
      unitRef="usd">18912000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMy0xLTEtMjg4MDU_1d91c4e2-e003-42e9-9b75-ac26cf772afe"
      unitRef="usd">39753000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNS0xLTEtMjg4MDU_e92d6522-edd1-42f2-add1-80cedf39d422"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItNy0xLTEtMjg4MDU_8f0e5ad9-3955-41ba-8184-ae69646b7f1b"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItOS0xLTEtMjg4MDU_3c08319f-95a3-48da-8c3f-23f3d0a33816"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i56de818c0a5f4e8eacf53b04d2ab45e4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzItMTMtMS0xLTI4ODA1_82adc4a3-65a5-45f2-b330-d8714e7fda28"
      unitRef="usd">58665000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMS0xLTEtMjg4MDU_e5edc429-c267-4077-8e9d-74c7d6520943"
      unitRef="usd">2802000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMy0xLTEtMjg4MDU_e1b2b7a6-0ac5-46d5-88b5-8f1354503df4"
      unitRef="usd">16077000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtNS0xLTEtMjg4MDU_c7e189a2-6f28-4110-abea-f7c8c1fef897"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtNy0xLTEtMjg4MDU_0f641fa7-5a8c-47a8-9d8a-55479ddfdc9d"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtOS0xLTEtMjg4MDU_3db88bc7-c052-4e82-9b16-856e86a81b08"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i0502b4b2a04743ed970b8454fdfdf9e1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzUtMTMtMS0xLTI4ODA1_10a585b4-5136-476c-94b5-581e05fdc5ab"
      unitRef="usd">18879000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMS0xLTEtMzQwMjA_2ad5fc54-45a0-44dd-a28d-92363d3f59fd"
      unitRef="usd">4998000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMy0xLTEtMzQwMjA_2c5f85e8-4dd0-43ed-980d-c731097af633"
      unitRef="usd">641000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNS0xLTEtMzQwMjA_b0318fe9-b32a-49c4-86d2-bd8e3c23ba8b"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNy0xLTEtMzQwMjA_a370b57d-319b-4aa8-9703-d480bef29724"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtOS0xLTEtMzQwMjA_e3efa303-1af6-4387-96cc-8aa3537a8cde"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2e6e3966f74d464096c8781827b91619_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMTMtMS0xLTM0MDIw_130bea27-f39e-41bd-a120-4907d712b1c4"
      unitRef="usd">5639000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMS0xLTEtMjg4MDU_ce6f61d1-1d98-4993-9dfe-607bebc87d03"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMy0xLTEtMjg4MDU_d74b248e-6633-42a5-8e02-cc435e62edef"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNS0xLTEtMjg4MDU_d04b6d9b-5ca9-489a-b9a0-4a38f1b69ffb"
      unitRef="usd">1052000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtNy0xLTEtMjg4MDU_91816614-26b5-4bc7-bcc0-f18e838854c4"
      unitRef="usd">1067000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtOS0xLTEtMjg4MDU_03e6dff0-ee75-43d9-b4a3-939ef80d9c35"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i1efe35c9a2da425e8ed4586c7a51eda9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzYtMTMtMS0xLTI4ODA1_d244d9d7-c4f1-43f8-9655-734e144fbd21"
      unitRef="usd">2119000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMS0xLTEtMjg4MDU_2003c41f-08f6-4ff1-b89e-29c448d5f6d5"
      unitRef="usd">137455000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMy0xLTEtMjg4MDU_6649c90f-e47e-48d5-8a82-903add648926"
      unitRef="usd">285172000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtNS0xLTEtMjg4MDU_e8b61776-2d89-4f19-a967-5bf28525c36e"
      unitRef="usd">181712000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtNy0xLTEtMjg4MDU_62d714dc-1fbb-446a-8b6f-21f158a531e7"
      unitRef="usd">73515000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtOS0xLTEtMjg4MDU_edee9a86-a6d3-4876-a82b-1b986d06ee3d"
      unitRef="usd">43349000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTUvZnJhZzo4NDUwZjEzNTI1ZTc0YmZhOTViODk1NTdmMGMxMTMyNC90YWJsZTowOThiNmJiMjBjZjE0NDVjOWYzMjY0ODZlMmQ0Yzg4NC90YWJsZXJhbmdlOjA5OGI2YmIyMGNmMTQ0NWM5ZjMyNjQ4NmUyZDRjODg0XzgtMTMtMS0xLTI4ODA1_2aa8bf68-b9cd-4030-8e4d-e6a318cd1c00"
      unitRef="usd">721203000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:InventoryDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzQwMQ_2090da37-f376-4dfa-b0b6-668f2913a97d">Inventories&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventories consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.935%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.516%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.517%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="9" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Raw materials&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;50,452&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Work-in-process&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,293&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,780&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Finished goods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;57,357&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,250&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;113,102&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,830&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;The Company recorded provisions for excess and obsolete inventories of $2,573,000 and $9,908,000 in 2021 and 2020, respectively, which reduced the carrying value of the inventories to their net realizable value. The higher provisions in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.</us-gaap:InventoryDisclosureTextBlock>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzM5OQ_195bb782-05d6-4fb4-a086-9dc30a40a10b">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Inventories consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.935%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.516%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.517%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="9" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Raw materials&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;50,452&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;26,800&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Work-in-process&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,293&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,780&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Finished goods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;57,357&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,250&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;113,102&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,830&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzItMS0xLTEtMjg4MDU_362960b2-a0e5-4497-abaa-0148321c8ef3"
      unitRef="usd">50452000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzItMy0xLTEtMjg4MDU_4daaeb74-f846-4040-84f0-25bfd76c41d7"
      unitRef="usd">26800000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryWorkInProcessNetOfReserves
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzMtMS0xLTEtMjg4MDU_543e365e-5ee2-4f6f-9b1d-58ecc70ee672"
      unitRef="usd">5293000</us-gaap:InventoryWorkInProcessNetOfReserves>
    <us-gaap:InventoryWorkInProcessNetOfReserves
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzMtMy0xLTEtMjg4MDU_5a9e49ea-f726-4d74-9dc9-a4de707b7efa"
      unitRef="usd">4780000</us-gaap:InventoryWorkInProcessNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzQtMS0xLTEtMjg4MDU_f5453093-c3f5-41c0-8702-2f116ae119b8"
      unitRef="usd">57357000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzQtMy0xLTEtMjg4MDU_63fc365f-aa7e-4435-ae85-4885cc442822"
      unitRef="usd">29250000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzUtMS0xLTEtMjg4MDU_921c1ca8-02ea-4a71-be4b-3eb52de9ef65"
      unitRef="usd">113102000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90YWJsZToxNzQyMWM5ZDA0YWE0MzQyODBiNWY3NGJmNjk1NjgyMS90YWJsZXJhbmdlOjE3NDIxYzlkMDRhYTQzNDI4MGI1Zjc0YmY2OTU2ODIxXzUtMy0xLTEtMjg4MDU_cd078009-c1ec-443f-a145-ce7fb916cb42"
      unitRef="usd">60830000</us-gaap:InventoryNet>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzE1NQ_d93f5058-b887-4330-8c10-9a32e1263e4c"
      unitRef="usd">2573000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMTgvZnJhZzo3MzFkN2YyN2FiMGY0OThmOWYzMzg1ZDQwMjRmM2YwYS90ZXh0cmVnaW9uOjczMWQ3ZjI3YWIwZjQ5OGY5ZjMzODVkNDAyNGYzZjBhXzE2Mg_211bb1e2-e02f-4cf4-8c01-62a6a1ea810b"
      unitRef="usd">9908000</cgnx:ExcessAndObsoleteInventoryCharges>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzcxNw_106c5e35-8e13-411f-87bc-c1421d43bdf7">Property, Plant, and Equipment&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, plant, and equipment consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.935%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.516%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.517%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Land&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,951&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,951&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Buildings&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;24,533&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,533&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Building improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;47,886&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45,978&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;10,436&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,682&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer hardware and software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;50,748&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Manufacturing test equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;30,562&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,816&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6,449&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,372&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;174,565&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;181,494&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: accumulated depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(97,019)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(102,321)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;77,546&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;79,173&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;The Company disposed of property, plant, and equipment with a cost basis of $20,647,000 and accumulated depreciation of $20,614,000 in 2021, resulting in a loss of $33,000. The Company disposed of property, plant, and equipment with a cost basis of $26,829,000 and accumulated depreciation of $24,977,000 in 2020, resulting in a loss of $1,852,000. Disposals in 2020 included leasehold improvements and other assets associated with office closures as a part of the Company's 2020 restructuring plan (refer to Note 22).</us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzcyMQ_7a7898ac-2608-4781-a40d-dd3d81ad1739">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Property, plant, and equipment consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:70.935%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.516%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.517%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Land&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,951&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,951&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Buildings&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;24,533&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,533&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Building improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;47,886&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45,978&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Leasehold improvements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;10,436&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,682&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Computer hardware and software&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;50,748&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Manufacturing test equipment&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;30,562&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;29,816&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Furniture and fixtures&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6,449&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,372&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;174,565&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;181,494&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Less: accumulated depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(97,019)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(102,321)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;77,546&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;79,173&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentTextBlock>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="id5d7726e056e4214aa7f49e065353761_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzItMS0xLTEtMjg4MDU_a92daba6-3159-40bc-ab03-a05abde88673"
      unitRef="usd">3951000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i64fc80d231e947aa9bf222b2de427dac_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzItMy0xLTEtMjg4MDU_2dc5d592-4f23-4bdb-b62a-4903c10b4fb9"
      unitRef="usd">3951000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i8bbd57d8b5e24e379260a83a26e0335d_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzMtMS0xLTEtMjg4MDU_89ed991e-254a-4926-91e0-40cd4dcc0435"
      unitRef="usd">24533000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i6c11c5f296d94cb8b215d81fb2599862_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzMtMy0xLTEtMjg4MDU_d2a5f81d-8bbb-498c-b0a2-b66a4e31d7d5"
      unitRef="usd">24533000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i941a6d85ef5e4db6887a4477c54ad5ec_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzQtMS0xLTEtMjg4MDU_0ed0c8fe-ec2b-4d81-829d-3ebc06921f22"
      unitRef="usd">47886000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="iaa0e107732624743b8b9116c079cf534_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzQtMy0xLTEtMjg4MDU_e84b473e-9634-484e-beba-e1d9662b251b"
      unitRef="usd">45978000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ifa4fc42921044fb2acd09f06fc702f0e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzUtMS0xLTEtMjg4MDU_4932d8c7-8b47-4b57-851b-b6159ad29fb0"
      unitRef="usd">10436000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i783fdc7f101e437ca76e266767bbed79_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzUtMy0xLTEtMjg4MDU_b174e8d0-99e3-45e4-99b9-b6b4de227a6c"
      unitRef="usd">12682000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i93a793acd6604354bfdeb7a098a7ab7c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzYtMS0xLTEtMjg4MDU_612412be-08be-4743-8cff-1e1b6d14b4b6"
      unitRef="usd">50748000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i82d6f2a16b9647c5a4153885f8b16d0f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzYtMy0xLTEtMjg4MDU_3f149155-242c-4d33-9251-75c237e409d0"
      unitRef="usd">58162000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i237f0e88a14e4c138cf770014c3cff20_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzctMS0xLTEtMjg4MDU_4388da7e-14a9-4266-a13c-4eb90970be82"
      unitRef="usd">30562000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ib4078ec246234f17861cbe7d06d41e4b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzctMy0xLTEtMjg4MDU_3b3641e3-d713-4a3e-bf78-259db21323d3"
      unitRef="usd">29816000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i72196343338a4ad09f7dac2538d4ed3b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzgtMS0xLTEtMjg4MDU_d5ffadfc-33c8-4e34-a394-888db9a0919c"
      unitRef="usd">6449000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i22b7a4443157492c859ccb73ff921a37_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzgtMy0xLTEtMjg4MDU_5777a430-bfa4-4e97-af5f-0c8ede204bd7"
      unitRef="usd">6372000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzktMS0xLTEtMjg4MDU_edfa9659-cbb9-4bd1-b75b-d2fa87c85ad0"
      unitRef="usd">174565000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzktMy0xLTEtMjg4MDU_ade19d7c-a59e-40cb-b2ad-4ed75cfb27d5"
      unitRef="usd">181494000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzEwLTEtMS0xLTI4ODA1_e914058d-dbf9-4604-af63-064067d53eb7"
      unitRef="usd">97019000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzEwLTMtMS0xLTI4ODA1_e831e4e2-b0ca-4295-8805-7d686b7a77bb"
      unitRef="usd">102321000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzExLTEtMS0xLTI4ODA1_a899c9d8-8ef5-4267-87bc-76de2a67e9e4"
      unitRef="usd">77546000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90YWJsZToyNWUwNDAxMWM2NTM0MTg3YjQwMjNkMjlmZGNmNzUxYS90YWJsZXJhbmdlOjI1ZTA0MDExYzY1MzQxODdiNDAyM2QyOWZkY2Y3NTFhXzExLTMtMS0xLTI4ODA1_2d3379b4-1aa5-44a1-846d-a063d877b676"
      unitRef="usd">79173000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentDisposals
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzE5Ng_3498cd67-7d2c-4387-b6c2-800f7d65fb24"
      unitRef="usd">20647000</us-gaap:PropertyPlantAndEquipmentDisposals>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzIzMQ_d5fe4fce-acce-4a72-bf44-0614f09e7acf"
      unitRef="usd">20614000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1>
    <us-gaap:GainLossOnDispositionOfAssets1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzI2Ng_b01b9f51-b958-4d80-87b4-b6de4fb36cc3"
      unitRef="usd">-33000</us-gaap:GainLossOnDispositionOfAssets1>
    <us-gaap:PropertyPlantAndEquipmentDisposals
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzQ0Ng_b057d24c-6439-4589-8984-7f1e85f823dc"
      unitRef="usd">26829000</us-gaap:PropertyPlantAndEquipmentDisposals>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzQ4MQ_5f57d2d8-a6ef-4e41-b403-f2850d6b770d"
      unitRef="usd">24977000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1>
    <us-gaap:GainLossOnDispositionOfAssets1
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjEvZnJhZzo4NmNmNGY4Yjc3ZmE0YzExODIzZjk1MzNmYTZlMGY3Zi90ZXh0cmVnaW9uOjg2Y2Y0ZjhiNzdmYTRjMTE4MjNmOTUzM2ZhNmUwZjdmXzUxNg_04126adc-ba59-4cb4-a188-385316aa1b9c"
      unitRef="usd">-1852000</us-gaap:GainLossOnDispositionOfAssets1>
    <us-gaap:OperatingLeasesOfLessorDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzMyMzA_5d3e1aa3-6cc7-4495-a274-bd3763772e91">Leases&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company's leases are primarily leased properties across different worldwide locations where the Company conducts its operations. All of these leases are classified as operating leases. Certain leases may contain options to extend or terminate the lease at the Company's sole discretion. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, there were no options to terminate that were accounted for in the determination of the lease term for outstanding leases, and one option to extend that was accounted for in the determination of the lease term for one of the Company's outstanding leases. As of December 31, 2020, there was one option to terminate that was accounted for in the determination of the lease term for one of the Company's outstanding leases, and no options to extend that were accounted for in the determination of the lease term for outstanding leases. Certain leases contain leasehold improvement incentives, retirement obligations, escalating clauses, rent holidays, and variable payments tied to a consumer price index. There were no restrictions or covenants for the outstanding leases as of December 31, 2021 or 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The total operating lease expense was $8,180,000 in both 2021 and 2020, and $6,893,000 in 2019. The total operating lease cash payments were $8,225,000, $8,009,000, and $6,530,000 in 2021, 2020, and 2019, respectively. The total lease expense for leases with a term of twelve months or less for which the Company elected not to recognize a lease asset or lease liability was $154,000, $123,000, and $275,000 in 2021, 2020, and 2019, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future operating lease cash payments are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.648%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.728%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.224%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Amount &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,508&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,883&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,081&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,346&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;27,729&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The discounted present value of the future lease cash payments resulted in a lease liability of $25,581,000 and $26,230,000 as of December 31, 2021 and 2020, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In December 2021, the Company entered into a lease for a 65,000 square-foot building in Southborough, Massachusetts for a term of ten years to serve as a new distribution center for customers in the Americas. The transition of the current distribution center to the new Southborough facility is expected to take place during the first half of 2022. The Company will have the right and option to extend the term of this lease for an additional period of five years, commencing upon the expiration of the original ten-year term. As of December 31, 2021, this lease had not yet commenced, and therefore was not yet recorded on the Consolidated Balance Sheets, nor did it create any significant rights and obligations. Future payment obligations associated with this lease, which are not included in the future operating lease cash payments table above, total $10,239,000, of which $670,000 is payable in 2022. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The weighted-average discount rate was 3.4% and 4.0% for the leases outstanding as of December 31, 2021 and December 31, 2020, respectively. The weighted-average remaining lease term was 5.1 years for the leases outstanding as of both December 31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Management closed eleven leased offices in 2020, prior to the end of their lease terms, as a part of a restructuring plan (refer to Note 22). The carrying value of the lease assets associated with these offices was reduced to zero, resulting in operating lease asset impairment charges of $3,427,000 in 2020 that are included in "Restructuring &lt;/span&gt;&lt;/div&gt;charges" on the Consolidated Statements of Operations. Remaining lease liability obligations associated with the early contract terminations totaled $1,717,000 and $2,877,000 as of December 31, 2021 and 2020, respectively, and are included in "Operating lease liabilities" on the Consolidated Balance Sheets. The Company did not record impairment charges related to operating lease assets in 2021 or 2019.The Company owns a building adjacent to its corporate headquarters that was partially occupied by a tenant during a portion of 2020, and for the entirety of 2019. This lease terminated prior to the end of its lease term during the second quarter of 2020, and the Company is now fully occupying this building for its operations. Annual rental income totaled $77,000 in 2020 and $311,000 in 2019.</us-gaap:OperatingLeasesOfLessorDisclosureTextBlock>
    <us-gaap:OperatingLeaseExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYxOTI_aee0995f-fb63-4495-8f60-a6175643a2e2"
      unitRef="usd">8180000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeaseExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYxOTI_bc5e8d0a-a7df-4875-8b56-d1d60655ef25"
      unitRef="usd">8180000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeaseExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzgxOTg_50996761-5536-46aa-969f-61d39c527ebf"
      unitRef="usd">6893000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeasePayments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYyMDQ_1c26ab40-92c7-482e-adc9-28a78e899f35"
      unitRef="usd">8225000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzYyMTU_2072c3f4-6980-41c1-85f9-8494f6e2bbf0"
      unitRef="usd">8009000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeasePayments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2MzgyMzQ_10688617-b36b-4dbc-9cc2-3a9156e09c52"
      unitRef="usd">6530000</us-gaap:OperatingLeasePayments>
    <cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEzNjU_cd2e678e-dfa0-41b4-a0ab-c1bbb00396e1"
      unitRef="usd">154000</cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized>
    <cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEzNzI_cbe10a65-6abe-4e42-9858-7856c6add09b"
      unitRef="usd">123000</cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized>
    <cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDU4NTU_38ffdea0-fc79-40e6-956e-9c7ad506000f"
      unitRef="usd">275000</cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzMyMjc_6a13b40e-3f4e-4226-af24-68035304165a">&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Future operating lease cash payments are as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:82.648%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:2.728%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.224%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Amount &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,508&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,883&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,081&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,346&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,069&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;27,729&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzEtMi0xLTEtMjg4MDU_76a8a229-d5a6-4f58-b461-ac6083e610e2"
      unitRef="usd">8508000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzItMi0xLTEtMjg4MDU_591f1430-6274-4568-8f09-2749566faf7e"
      unitRef="usd">6883000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzMtMi0xLTEtMjg4MDU_7f146e50-75c6-484b-a089-4e7167b860ca"
      unitRef="usd">3842000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzQtMi0xLTEtMjg4MDU_3aeef98e-4bc2-4416-8739-53fe1f06d0bd"
      unitRef="usd">2081000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzUtMi0xLTEtMjg4MDU_7ed047bf-caba-4a0c-b9c7-29bc3a204caa"
      unitRef="usd">1346000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzYtMi0xLTEtMjg4MDU_0e439078-78e2-45f3-8ad2-fe766a7ee808"
      unitRef="usd">5069000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90YWJsZTo5MDNiY2Y1N2ZmNzc0NTM0OTJiYjg2NjFkYTVlMjQwZi90YWJsZXJhbmdlOjkwM2JjZjU3ZmY3NzQ1MzQ5MmJiODY2MWRhNWUyNDBmXzctMi0xLTEtMjg4MDU_38b85afa-2151-4d77-9c6b-2d65ccc419a3"
      unitRef="usd">27729000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:OperatingLeaseLiability
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2MDY_07bad96c-34c7-4703-b0e2-f41d34aab86d"
      unitRef="usd">25581000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2MTM_b8137e3e-4b6a-41c0-8871-99f85a542939"
      unitRef="usd">26230000</us-gaap:OperatingLeaseLiability>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i9680e81eb9994576b1c178a64360acd9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2Mzc4MTk_97ceec66-ed6e-4e2c-bdc3-50f1002273dc"
      unitRef="usd">10239000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths
      contextRef="i9680e81eb9994576b1c178a64360acd9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzEwOTk1MTE2Mzc4MzY_1973f0c3-8df8-4ffd-bdc5-e88fc7dfbf9c"
      unitRef="usd">670000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE4NDM_6b5b09be-57d8-4b71-920b-4e2a4e931996"
      unitRef="number">0.034</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE4NTA_0a1238a2-15d2-4c9d-9e15-37e09681b244"
      unitRef="number">0.040</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE5NzA_83748d2d-d3e6-47e5-9500-e0cff3cfee9e">P5Y1M6D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE5NzA_d83a9a98-8505-43b3-9b3e-a1700fd90765">P5Y1M6D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <cgnx:OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset
      contextRef="ic0eb9a7570944c1ab9168006bb2aa1e2_I20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzIyOTM_26b8980d-a55e-4281-8bbc-99e667d14f07"
      unitRef="usd">0</cgnx:OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzIzNTQ_630deb3f-1183-46b2-ae1a-ec8a3b8d0cca"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseLiability
      contextRef="i955fae1ce0f246f2a6383d7e4314f3aa_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY0NzQ_3cf1e676-c963-4e59-863d-518840a48e15"
      unitRef="usd">1717000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="idaa85ffc8fe24348a2c3c89ee7ee05da_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzI2MjE_9419ae6f-9806-464b-a111-65b73cee6f46"
      unitRef="usd">2877000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLeaseIncome
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY1MzM_e88c1b21-d43f-417d-bde9-ae807c0bad48"
      unitRef="usd">77000</us-gaap:OperatingLeaseLeaseIncome>
    <us-gaap:OperatingLeaseLeaseIncome
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMjcvZnJhZzo4MjkwMWYzNTc2YzY0N2UzYTUyNDg5MjBlZWEwZTI5Ny90ZXh0cmVnaW9uOjgyOTAxZjM1NzZjNjQ3ZTNhNTI0ODkyMGVlYTBlMjk3XzE2NDkyNjc0NDY1NTU_aefd855d-9111-4b0c-a074-81b77391f205"
      unitRef="usd">311000</us-gaap:OperatingLeaseLeaseIncome>
    <us-gaap:GoodwillDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90ZXh0cmVnaW9uOmIyYzRmYmMzOTQwNzRmOGQ5M2EyZTdmYzA4YTE5MmExXzE0MDQ_fc9a1149-72dd-4abe-b935-441ddd0d7026">Goodwill&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the carrying value of goodwill were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:83.380%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.688%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;243,445&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sualab Co., Ltd. purchase price adjustment (refer to Note 21)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,004)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,637&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;244,078&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,365)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;241,713&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;For its 2021 annual analysis of goodwill, management elected to perform a qualitative assessment. Based on this assessment, management believes it is more likely than not that the fair value of the reporting unit exceeds its carrying value. The Company did not record impairment charges related to goodwill in 2021, 2020, or 2019.&lt;/span&gt;&lt;/div&gt;</us-gaap:GoodwillDisclosureTextBlock>
    <us-gaap:ScheduleOfGoodwillTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90ZXh0cmVnaW9uOmIyYzRmYmMzOTQwNzRmOGQ5M2EyZTdmYzA4YTE5MmExXzE0MDE_613172ed-56b3-4da8-a204-deb08605e95c">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the carrying value of goodwill were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:83.380%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.688%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;243,445&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Sualab Co., Ltd. purchase price adjustment (refer to Note 21)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,004)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,637&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;244,078&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&#160;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,365)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;241,713&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzEtMi0xLTEtMjg4MDU_73899dd2-7e12-4639-9cde-f0a0cfeaf928"
      unitRef="usd">243445000</us-gaap:Goodwill>
    <us-gaap:GoodwillOtherIncreaseDecrease
      contextRef="i30b6dbba7a294a05a1de3af16074b12b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzMtMi0xLTEtMzAxMDE_f8e8c355-ccb1-4a0a-9f55-a1160dea3659"
      unitRef="usd">-1004000</us-gaap:GoodwillOtherIncreaseDecrease>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzMtMi0xLTEtMjg4MDU_b584fccb-3680-49ee-8963-e2fc51c0043d"
      unitRef="usd">1637000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:Goodwill
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzUtMi0xLTEtMjg4MDU_38eb8b3e-f826-473d-8b67-983c1cf22bb8"
      unitRef="usd">244078000</us-gaap:Goodwill>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzctMi0xLTEtMjg4MDU_c3eaeff6-723c-4d61-92fb-5370fcc4cddb"
      unitRef="usd">-2365000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:Goodwill
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzAvZnJhZzpiMmM0ZmJjMzk0MDc0ZjhkOTNhMmU3ZmMwOGExOTJhMS90YWJsZTo5ZDRmNWMwNDRjN2I0NmI5YTBlMmQ1MDhmNmY3NTRmNC90YWJsZXJhbmdlOjlkNGY1YzA0NGM3YjQ2YjlhMGUyZDUwOGY2Zjc1NGY0XzgtMi0xLTEtMjg4MDU_f616ef16-adac-41c3-ba65-308fdbfa34bc"
      unitRef="usd">241713000</us-gaap:Goodwill>
    <us-gaap:IntangibleAssetsDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwNzk_65b47c84-b5a8-49ba-ab2a-770b993db98a">Intangible Assets&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.176%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Distribution networks&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;38,060&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;38,060&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Completed technologies&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;24,217&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,234&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,983&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;10,578&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,891&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,687&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;710&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;492&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;218&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;110&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;110&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,675&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;61,787&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,888&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Distribution networks&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Completed technologies&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,397&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,820&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,578&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,418&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;436&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;274&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;67&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,120&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The adverse impact of the COVID-19 pandemic on our business in 2020 triggered a review of long-lived assets, including intangible assets, for potential impairment during the second quarter of 2020. Based on this assessment, management concluded that certain of the Company's finite-lived intangible assets failed the recoverability test, and recorded impairment charges for these assets equal to the amount by which their carrying value exceeded their fair value. The Company also measured the fair value and recorded an impairment charge for its indefinite-lived intangible asset related to in-process technologies. The fair values were established, with the assistance of an outside valuation advisor, using the income approach based on a discounted cash flow model that estimated future revenue streams and expenses attributable to those revenue streams provided by management.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;This review resulted in intangible asset impairment charges totaling $19,571,000 in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab Co. Ltd. ("Sualab") as a result of the deteriorating global economic conditions from the COVID-19 pandemic. Completed technologies, in-process technologies, and customer relationships acquired from Sualab were impaired in the amounts of $10,070,000, $5,900,000, and $3,382,000, respectively. In addition, customer relationships acquired from EnShape GmbH that had a gross carrying value of $447,000 and accumulated amortization of $228,000 on the measurement date were reduced to zero, resulting in an impairment charge of $219,000. The Company did not record impairment charges related to intangible assets in 2021 or 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Estimated amortization expense for each of the five succeeding fiscal years and thereafter is as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.623%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.445%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,275&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,080&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,757&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,452&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;730&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,888&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:IntangibleAssetsDisclosureTextBlock>
    <us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwODA_45057871-67d8-42e8-b50a-3c6985d38da3">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Intangible assets consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.176%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Distribution networks&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;38,060&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;38,060&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Completed technologies&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;24,217&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,234&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,983&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;10,578&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,891&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,687&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;710&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;492&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;218&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;110&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;110&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;73,675&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;61,787&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,888&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Gross&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Accumulated&lt;br/&gt;Amortization&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net&lt;br/&gt;Carrying&lt;br/&gt;Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Distribution networks&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,060&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Completed technologies&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,217&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;12,397&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,820&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Customer relationships&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,578&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,418&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-compete agreements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;436&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;274&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Trademarks&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;67&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58,120&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,555&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtMS0xLTEtMjg4MDU_40590751-1db4-45c8-957c-3de5d167fdd8"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtMy0xLTEtMjg4MDU_74705fbf-e234-4806-983e-41076fdb6a77"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i9077befdd9a24efd88f7a65bb72737eb_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEtNS0xLTEtMjg4MDU_2ddadbda-211b-4a3b-8014-fe97bf500497"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i79c23c3a546a49569d45604d210eade1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItMS0xLTEtMjg4MDU_2f66ccfb-0859-4328-ba08-466dea5d8b77"
      unitRef="usd">24217000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i79c23c3a546a49569d45604d210eade1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItMy0xLTEtMjg4MDU_b89cdf7c-5369-4ea7-999a-f50ffef1e64d"
      unitRef="usd">15234000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i79c23c3a546a49569d45604d210eade1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzItNS0xLTEtMjg4MDU_b74b4b78-2424-4c85-8684-d15f50f12eb2"
      unitRef="usd">8983000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtMS0xLTEtMjg4MDU_1b400925-a9c5-41fa-9fc9-d33a805ea721"
      unitRef="usd">10578000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtMy0xLTEtMjg4MDU_5d7f8671-c240-4ac0-9fd4-38dd90014648"
      unitRef="usd">7891000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i10f501ebc93e427c829a4d3c79634b1f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzMtNS0xLTEtMjg4MDU_f50e0f88-8b4d-49ce-84f1-38ed703c39b0"
      unitRef="usd">2687000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtMS0xLTEtMjg4MDU_017d16b4-9072-4519-b551-1fdb09f30a0e"
      unitRef="usd">710000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtMy0xLTEtMjg4MDU_d8329dcb-65fd-4f76-ac8d-8c8d32894dfb"
      unitRef="usd">492000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="iea58649cc4eb4b5fa55f83fe19cc0796_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzUtNS0xLTEtMjg4MDU_f975f3bd-bb92-4b61-96d6-b3638c5edf7a"
      unitRef="usd">218000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtMS0xLTEtMjg4MDU_65836a5e-237a-4176-bf66-76a91f02e14f"
      unitRef="usd">110000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtMy0xLTEtMjg4MDU_0969407f-8182-4359-91fc-4c8bca299afe"
      unitRef="usd">110000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie2a20d1e0bed4733afa945949392815a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzYtNS0xLTEtMjg4MDU_a6f7f650-6064-494a-aeef-c8b8afe033f3"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctMS0xLTEtMjg4MDU_f0280a96-f6a3-4714-b14f-de6a9db8bcad"
      unitRef="usd">73675000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctMy0xLTEtMjg4MDU_303818b6-c412-4b07-9cb8-ee5abbc6c6d9"
      unitRef="usd">61787000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:IntangibleAssetsNetIncludingGoodwill
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzctNS0xLTEtMjg4MDU_1e4bb53e-688d-4072-bea2-82d505e6ba89"
      unitRef="usd">11888000</us-gaap:IntangibleAssetsNetIncludingGoodwill>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTEtMS0xLTI4ODA1_01dfc9a1-ed18-49ed-91f3-b86f10686f8f"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTMtMS0xLTI4ODA1_7b77c409-5f18-4fee-b6bf-c4a5a076269a"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i497cc41f6abb47b884fd3672c59e3cb5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEwLTUtMS0xLTI4ODA1_848796e7-d599-4aef-9f3a-0d18e3138b44"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="if1cc1bfb37c149759d1841760856c173_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTEtMS0xLTI4ODA1_6d46cd26-b11d-47ec-9ca5-3374e576731e"
      unitRef="usd">24217000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if1cc1bfb37c149759d1841760856c173_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTMtMS0xLTI4ODA1_7b422589-d8be-46d8-9c18-66c96e32f2d6"
      unitRef="usd">12397000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="if1cc1bfb37c149759d1841760856c173_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzExLTUtMS0xLTI4ODA1_1cc67b1a-40e8-4ec5-bf3f-e6c1c9403d30"
      unitRef="usd">11820000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTEtMS0xLTI4ODA1_acc1088c-9c7f-4d7c-a27b-06a4b3667ac3"
      unitRef="usd">10578000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTMtMS0xLTI4ODA1_38482000-f0d7-4055-9599-79b7b85df637"
      unitRef="usd">7160000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="if88693d9f63d42edaaeff2d08d6a8a9b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzEyLTUtMS0xLTI4ODA1_578214a9-ff50-436f-b369-48714da16166"
      unitRef="usd">3418000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTEtMS0xLTI4ODA1_334fba67-b908-4780-83ea-331f2c6b2a14"
      unitRef="usd">710000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTMtMS0xLTI4ODA1_deaf0964-01f9-48e2-8e8b-0c020cd11ff2"
      unitRef="usd">436000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie0c7309d4e304594823af30b7f8c6732_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE0LTUtMS0xLTI4ODA1_dc4f9955-e6ae-4263-a301-035dda3b8d1e"
      unitRef="usd">274000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTEtMS0xLTI4ODA1_49ffe7e3-6c98-42e1-b8f3-cc0af6e3c884"
      unitRef="usd">110000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTMtMS0xLTI4ODA1_893fdf00-c2da-4eb4-a2a3-4cf5d38d55fa"
      unitRef="usd">67000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="icc1eb3d1f8994634b4304b31764535fe_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE1LTUtMS0xLTI4ODA1_5292ece9-319a-488a-ab36-ac5ed195d334"
      unitRef="usd">43000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTEtMS0xLTI4ODA1_beb2d2be-5221-484a-8192-9f2f0ac2faa8"
      unitRef="usd">73675000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTMtMS0xLTI4ODA1_e955401b-bf98-43ba-b048-3d05128d1108"
      unitRef="usd">58120000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTo0NTdlMmZmYjJhYzE0YzFiODQ3OTFhMGFhYzY2NDFhNy90YWJsZXJhbmdlOjQ1N2UyZmZiMmFjMTRjMWI4NDc5MWEwYWFjNjY0MWE3XzE2LTUtMS0xLTI4ODA1_10327e9c-e38c-40e3-a439-435f0ab1af79"
      unitRef="usd">15555000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzEwMzc_f18dc054-73ea-4a92-b4ab-34859881e23e"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0MjY_d9f130a9-401e-46f3-95cb-ef777d6c1f51"
      unitRef="usd">10070000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0MzA_43329db6-618e-4ce9-b01a-daf02fb30f2b"
      unitRef="usd">5900000</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE0Mzg_0a145e11-dd7a-47dd-b147-ca94007fe27f"
      unitRef="usd">3382000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="ib58b9b72d04944dca738439418889e81_I20200526"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE1NTQ_36c13a9d-4b8b-4d01-a629-868ccb93fe23"
      unitRef="usd">447000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ib58b9b72d04944dca738439418889e81_I20200526"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE1ODk_f405ccb0-132f-42f8-b522-2e7c3863ef8b"
      unitRef="usd">228000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="i632328a9aece45169ee9a65a27b7de43_I20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE2MzI_f1617cbf-18b4-4a9d-bac0-efc7a23a16af"
      unitRef="usd">0</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i868c84ba01b343969f185bfae762ea09_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzE2NzM_7144fba9-2182-41df-8b9f-13c458bb09dc"
      unitRef="usd">219000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90ZXh0cmVnaW9uOjUwMmVjOTVkZmEyMTQ1N2E5ZWI3MWZiN2I4OGE3OTc1XzIwODI_5c2dbb57-ba1b-49ba-bc2d-0e65c5b02264">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Estimated amortization expense for each of the five succeeding fiscal years and thereafter is as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.623%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.445%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,275&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,594&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,080&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2025&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,757&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2026&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,452&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Thereafter&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;730&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,888&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzEtMi0xLTEtMjg4MDU_ccefed9c-25dd-443d-92ee-06c5b2b4d866"
      unitRef="usd">3275000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzItMi0xLTEtMjg4MDU_5e3b8165-e48c-4a99-85e0-3cf487d2c267"
      unitRef="usd">2594000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzMtMi0xLTEtMjg4MDU_0968c85a-b5aa-4058-9dab-61f0f23dda28"
      unitRef="usd">2080000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzQtMi0xLTEtMjg4MDU_39732aa3-7790-421d-ab29-5fb9673c0a79"
      unitRef="usd">1757000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzUtMi0xLTEtMjg4MDU_27a7c362-130f-4fd8-a5e9-2f18ed690327"
      unitRef="usd">1452000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzYtMi0xLTEtMjg4MDU_b057110e-c8f4-43c7-ab0d-9202d9aefc62"
      unitRef="usd">730000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzMvZnJhZzo1MDJlYzk1ZGZhMjE0NTdhOWViNzFmYjdiODhhNzk3NS90YWJsZTpmYjk4YjllZTA1NmI0MmEyYmY3NWZmMDZmN2UzZWYxYy90YWJsZXJhbmdlOmZiOThiOWVlMDU2YjQyYTJiZjc1ZmYwNmY3ZTNlZjFjXzctMi0xLTEtMjg4MDU_7d2c7a16-4938-4646-9d62-38523127c783"
      unitRef="usd">11888000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE2Nw_81e016a8-2000-4986-94aa-39a122194531">Accrued Expenses&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued expenses consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.057%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Incentive compensation&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;37,917&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,935&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Salaries and payroll taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,519&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign retirement obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,572&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,886&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,427&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,406&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vacation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,686&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;28,311&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,485&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;92,432&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;77,264&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the warranty obligation were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.209%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.591%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,713&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provisions for warranties issued during the period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,463&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment of warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,770)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,406&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provisions for warranties issued during the period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment of warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,235)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,427&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock>
    <us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE2OQ_911b827c-4529-4df2-bd15-8c618f7a641a">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accrued expenses consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:64.002%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.057%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Incentive compensation&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;37,917&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,935&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Salaries and payroll taxes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,519&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign retirement obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,572&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,886&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,427&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,406&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vacation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,686&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,641&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;28,311&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;24,485&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;92,432&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;77,264&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock>
    <us-gaap:AccruedBonusesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzItMS0xLTEtMjg4MDU_d4f30770-ab94-4b36-b27e-bedbd93446b6"
      unitRef="usd">37917000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedBonusesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzItMy0xLTEtMjg4MDU_6d6947fc-1158-4cda-aa3e-e82fa7451edf"
      unitRef="usd">28935000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedSalariesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzMtMS0xLTEtMjg4MDU_d139d362-158f-4b18-afe1-5332b4332738"
      unitRef="usd">8519000</us-gaap:AccruedSalariesCurrent>
    <us-gaap:AccruedSalariesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzMtMy0xLTEtMjg4MDU_9a4c379e-6bac-4c8e-b4e4-a4ee41be0299"
      unitRef="usd">7911000</us-gaap:AccruedSalariesCurrent>
    <cgnx:RetirementAllowance
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzQtMS0xLTEtMjg4MDU_442b14c1-899c-41f7-806f-c50f0c881ce3"
      unitRef="usd">7572000</cgnx:RetirementAllowance>
    <cgnx:RetirementAllowance
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzQtMy0xLTEtMjg4MDU_481acf88-9c59-4be5-a1f8-9199307f02a9"
      unitRef="usd">6886000</cgnx:RetirementAllowance>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzUtMS0xLTEtMjg4MDU_1248b834-aa76-4aeb-9c19-1164b1a81882"
      unitRef="usd">5427000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzUtMy0xLTEtMjg4MDU_86ae142e-32f1-426f-9f75-08f8bdec638f"
      unitRef="usd">5406000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <us-gaap:AccruedVacationCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzYtMS0xLTEtMjg4MDU_931f6150-55d4-4afc-9a0f-49ef23a54825"
      unitRef="usd">4686000</us-gaap:AccruedVacationCurrent>
    <us-gaap:AccruedVacationCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzYtMy0xLTEtMjg4MDU_219ff97b-1cb2-4669-aca2-12c53ee1ed37"
      unitRef="usd">3641000</us-gaap:AccruedVacationCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzctMS0xLTEtMjg4MDU_23c6cabd-9e1c-4de4-9d12-d99d95300a2d"
      unitRef="usd">28311000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzctMy0xLTEtMjg4MDU_d723fdf7-5f2b-4ae8-9a86-5ed851fb9628"
      unitRef="usd">24485000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzgtMS0xLTEtMjg4MDU_4b18a828-9387-41a6-89e0-d6061c6af802"
      unitRef="usd">92432000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTo3YmYzYTVmNzBlZTg0MmQ4YjVjNDUzMjJkMGY4OWNmMy90YWJsZXJhbmdlOjdiZjNhNWY3MGVlODQyZDhiNWM0NTMyMmQwZjg5Y2YzXzgtMy0xLTEtMjg4MDU_f3fb8080-e50b-4a5f-bf88-a7f08269295a"
      unitRef="usd">77264000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90ZXh0cmVnaW9uOmJkNWNmN2Q0ZjYzYjRhM2RhYzU4ZDBiYzI3ZTk0MTc3XzE3Mg_8f584d85-f1de-4c71-ba85-00fc99068759">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the warranty obligation were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.209%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.591%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,713&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provisions for warranties issued during the period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,463&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment of warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2,770)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,406&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Provisions for warranties issued during the period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Fulfillment of warranty obligations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,235)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,427&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock>
    <us-gaap:ProductWarrantyAccrual
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzEtMS0xLTEtMjg4MDU_6c5b2bb9-5fa5-46a0-90d1-38bbbffbcb92"
      unitRef="usd">4713000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzItMS0xLTEtMjg4MDU_f7cb0ab1-84a7-4603-86c3-0e2a6314d7aa"
      unitRef="usd">3463000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzMtMS0xLTEtMjg4MDU_5fecd4a0-9c44-4c57-b65a-a0acb7c6c153"
      unitRef="usd">2770000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrual
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzUtMS0xLTEtMjg4MDU_11662342-7a61-476c-abaf-7962dbb7d0a4"
      unitRef="usd">5406000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzYtMS0xLTEtMjg4MDU_6b30986c-8d67-4be2-a107-d3399dd35656"
      unitRef="usd">3256000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzctMS0xLTEtMjg4MDU_f6859de1-3c3d-4e10-8e0a-39637dacfab8"
      unitRef="usd">3235000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzYvZnJhZzpiZDVjZjdkNGY2M2I0YTNkYWM1OGQwYmMyN2U5NDE3Ny90YWJsZTpiM2UzMjUzZThiZTU0NjI1YmQ4ZjM1OTk5YmQ4ZmVhZC90YWJsZXJhbmdlOmIzZTMyNTNlOGJlNTQ2MjViZDhmMzU5OTliZDhmZWFkXzktMS0xLTEtMjg4MDU_92db4524-c5e7-4ad1-8e7f-b90fb4f1d390"
      unitRef="usd">5427000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzY3Nw_8767f61b-e7c6-4ff9-bc13-97b2d3a387c1">Commitments and Contingencies&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2021, the Company had outstanding purchase orders totaling $100,750,000 to procure inventory from various vendors, due in part to higher inventory purchases in response to global supply chain constraints. Certain of these purchase orders may be canceled by the Company, subject to cancellation penalties. These purchase commitments relate primarily to expected sales in 2022.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A significant portion of the Company's outstanding inventory purchase orders as of December&#160;31, 2021, as well as additional preauthorized commitments to procure strategic components based on the Company's expected customer demand, are placed with the Company's primary contract manufacturer for the Company's assembled products. The Company has the obligation to purchase any non-cancelable and non-returnable components that have been purchased by this contract manufacturer with the Company's preauthorization, when these components &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;have not been consumed within the period defined in the terms of the Company's agreement with this contract manufacturer. As a result of the terms of this agreement, the Company has purchased $19,448,000, $4,291,000, and $3,700,000 of inventory in 2021, 2020, and 2019, respectively, prior to the components being consumed by the contract manufacturer to produce the Company's assembled products. While the Company typically expects such purchased components to be used in future production of Cognex finished goods, these components are considered in the Company's reserve estimate for excess and obsolete inventory. Furthermore, the Company accrues for losses on commitments for the future purchase of non-cancelable and non-returnable components from this contract manufacturer at the time that circumstances, such as changes in demand, indicate that the value of the components may not be recoverable, the loss is probable, and management has the ability to reasonably estimate the amount of the loss.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Various claims and legal proceedings generally incidental to the normal course of business are pending or threatened on behalf of or against the Company. While we cannot predict the outcome of these matters, we believe that any liability arising from them will not have a material adverse effect on our financial position, liquidity, or results of operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
    <us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwNw_d527a1f1-f18d-4092-a512-7f7d02f40809"
      unitRef="usd">100750000</us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted>
    <us-gaap:OtherInventoryPurchasedGoods
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3MTk_218caec8-a204-467a-867f-42b04be9a95b"
      unitRef="usd">19448000</us-gaap:OtherInventoryPurchasedGoods>
    <us-gaap:OtherInventoryPurchasedGoods
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3MzI_a2896703-6f4f-41a5-b1d9-9e14b5a774be"
      unitRef="usd">4291000</us-gaap:OtherInventoryPurchasedGoods>
    <us-gaap:OtherInventoryPurchasedGoods
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xMzkvZnJhZzoxZTcxNTMxMTcxZDI0NjcyYjIwYzM2MDVjNzU3MDFiMi90ZXh0cmVnaW9uOjFlNzE1MzExNzFkMjQ2NzJiMjBjMzYwNWM3NTcwMWIyXzEwOTk1MTE2NDQ3NDQ_1dd49c4e-b9bb-4fda-9ab5-a1bd020c4b70"
      unitRef="usd">3700000</us-gaap:OtherInventoryPurchasedGoods>
    <cgnx:IndemnificationProvisionsTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDUvZnJhZzo3YjIwZTU4Y2UyYjg0NTI1YTg3OGRmZjFkOWU1ZDhmNy90ZXh0cmVnaW9uOjdiMjBlNThjZTJiODQ1MjVhODc4ZGZmMWQ5ZTVkOGY3XzIzOTM_1d3e8448-7910-44af-9cae-4e416aa403f5">Indemnification Provisions&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Except as limited by Massachusetts law, the by-laws of the Company require it to indemnify certain current or former directors, officers, and employees of the Company against expenses incurred by them in connection with each proceeding in which he or she is involved as a result of serving or having served in certain capacities. Indemnification is not available with respect to a proceeding as to which it has been adjudicated that the person did not act in good faith in the reasonable belief that the action was in the best interests of the Company. The maximum potential amount of future payments the Company could be required to make under these provisions is unlimited. The Company has never incurred significant costs related to these indemnification provisions. As a result, the Company believes the estimated fair value of these provisions is not material.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In the ordinary course of business, the Company may accept standard limited indemnification provisions in connection with the sale of its products, whereby it indemnifies its customers for certain direct damages incurred in connection with third-party patent or other intellectual property infringement claims with respect to the use of the Company&#x2019;s products. The maximum potential amount of future payments the Company could be required to make under these provisions is generally subject to fixed monetary limits. The Company has never incurred significant costs to defend lawsuits or settle claims related to these indemnification provisions. As a result, the Company believes the estimated fair value of these provisions is not material.&lt;/span&gt;&lt;/div&gt;In the ordinary course of business, the Company also accepts limited indemnification provisions from time to time, whereby it indemnifies customers for certain direct damages incurred in connection with bodily injury and property damage arising from the use of the Company&#x2019;s products. The maximum potential amount of future payments the Company could be required to make under these provisions is generally limited and is likely recoverable under the Company&#x2019;s insurance policies. As a result of this coverage, and the fact that the Company has never incurred significant costs to defend lawsuits or settle claims related to these indemnification provisions, the Company believes the estimated fair value of these provisions is not material.</cgnx:IndemnificationProvisionsTextBlock>
    <us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MjY_2f2036ff-e5b9-4a24-8482-d1a12454bf79">Derivative InstrumentsThe Company&#x2019;s foreign currency risk management strategy is principally designed to mitigate the potential financial impact of changes in the value of transactions and balances denominated in foreign currencies resulting from changes in foreign currency exchange rates. The Company enters into economic hedges utilizing foreign currency forward contracts with maturities of up to 95 days to manage the exposure to fluctuations in foreign currency exchange rates arising primarily from foreign-denominated receivables and payables. The gains and losses on these derivatives are intended to be offset by the changes in the fair value of the assets and liabilities being hedged. These economic hedges are not designated as hedging instruments for hedge accounting treatment. &lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company had the following outstanding forward contracts (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.291%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.765%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.180%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.180%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.354%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="6" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="6" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Currency&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Notional Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;USD Equivalent&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Notional Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;USD Equivalent&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="18" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Euro&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;65,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,748&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61,342&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Chinese Renminbi&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;54,374&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,500&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Mexican Peso&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;140,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;155,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Japanese Yen&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,213&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;British Pound&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,552&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Hungarian Forint&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,355,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,155&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,330,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,494&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Canadian Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,480&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Korean Won&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,925,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Taiwanese Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,035&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,362&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Singapore Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,465&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Information regarding the fair value of the outstanding forward contracts was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.274%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.204%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.350%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.888%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.358%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Derivatives&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet  Location&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet   Location&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:24pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="36" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued expenses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the gross activity for all derivative assets and liabilities which were presented on a net basis on the Consolidated Balance Sheets due to the right of offset with each counterparty (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:14pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.108%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.562%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.709%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:17.814%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.562%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Derivatives&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of recognized assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of recognized liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts offset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts offset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net amount of assets presented&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net amount of liabilities presented&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Information regarding the effect of derivative instruments, net of the underlying exposure, on the consolidated financial statements was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:21.920%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:22.800%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.762%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.911%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Location in Financial Statements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gains (losses) recognized in current operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign currency gain (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,262&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,308)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,305&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock>
    <us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1
      contextRef="i8403092ce78e46f287d80209e29e1af1_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzQxNg_293183f3-17e1-4e6e-a201-451e4bcde74c">P95D</us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1>
    <us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzEzOTI_730e6bbb-dce5-4c03-8765-bf0d81d679f4">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company had the following outstanding forward contracts (in thousands): &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:47.291%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.765%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.180%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:11.180%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.354%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="6" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="6" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Currency&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Notional Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;USD Equivalent&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;Notional Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%;text-decoration:underline"&gt;USD Equivalent&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="18" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Euro&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;65,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;73,748&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61,342&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Chinese Renminbi&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;54,374&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,500&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Mexican Peso&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;140,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;155,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Japanese Yen&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,213&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;British Pound&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,370&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,552&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,675&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Hungarian Forint&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,355,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,155&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,330,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,494&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Canadian Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,480&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,167&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,285&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Korean Won&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,925,000&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,377&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Taiwanese Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38,035&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,362&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Singapore Dollar&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,465&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTEtMS0xLTI4ODA1_e4a65144-894f-4c07-99d4-53855c493b89"
      unitRef="eur">65000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i7cf72059f5c5494e9b87d60f4bc24e98_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTItMS0xLTI4ODA1_fd2f7eda-417f-424f-bc09-63080ef9d7b8"
      unitRef="usd">73748000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i46b3383699f54592b7ede9d54961aeb6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTQtMS0xLTI4ODA1_5b255012-d325-4cfc-b38d-1a317df24394"
      unitRef="eur">50000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i46b3383699f54592b7ede9d54961aeb6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzExLTUtMS0xLTI4ODA1_d72e1247-8c15-4c6b-9183-64f556f4b8e3"
      unitRef="usd">61342000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i00459c765246439382160d7274b765d4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTEtMS0xLTM0MTYy_8f584549-7540-4bfb-ad45-2aa77c0d3b4e"
      unitRef="cny">54374000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i00459c765246439382160d7274b765d4_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTItMS0xLTM0MTYy_f5137f66-b31e-4895-92a4-0caffc9b2a75"
      unitRef="usd">8500000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia68a5da34e724a81893bf9be3e413d8c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTQtMS0xLTM0MTYy_a4228872-173a-4a63-a77a-8aa4afbc830a"
      unitRef="cny">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia68a5da34e724a81893bf9be3e413d8c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTUtMS0xLTM0MTYy_22ca8d14-82e9-43e6-97ef-c974931b03c1"
      unitRef="usd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTEtMS0xLTI4ODA1_89a3f154-9326-49d8-82c1-3ab282a03d6d"
      unitRef="mxn">140000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i7aa4b68725474c2cbfcfc2ff1cf9c610_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTItMS0xLTI4ODA1_cd558b2d-ee9e-42f5-bd85-3dbd2ac47a65"
      unitRef="usd">6842000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iad34d6812e224628aaf77d2b49448365_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTQtMS0xLTI4ODA1_7fd3f6da-615b-4d3b-9158-0ae1b5e795d2"
      unitRef="mxn">155000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iad34d6812e224628aaf77d2b49448365_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzEyLTUtMS0xLTI4ODA1_4b89776b-a1ce-4b55-9c33-31bf763e2aa5"
      unitRef="usd">7776000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia4ac27b77f9347d59de048dc447103ab_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTEtMS0xLTI4ODA1_04e7eb3b-1afd-4f15-9f8a-ac4d630593c9"
      unitRef="jpy">600000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia4ac27b77f9347d59de048dc447103ab_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTItMS0xLTI4ODA1_ce80e4d0-3d7c-40b0-a439-b24fb0e57ddc"
      unitRef="usd">5213000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i93ebcd0f4d05432abddab316785497af_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTQtMS0xLTI4ODA1_883f7909-8bc1-44f0-85f7-9593f5346f9a"
      unitRef="jpy">600000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i93ebcd0f4d05432abddab316785497af_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE0LTUtMS0xLTI4ODA1_0174aa99-ee9b-43e1-b152-72e3ada3018f"
      unitRef="usd">5808000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i71a8b16636c744088ae729b18fffb3af_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTEtMS0xLTM0MDM5_5719ae79-7c43-4208-a69e-36410f8a1746"
      unitRef="gbp">3370000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i71a8b16636c744088ae729b18fffb3af_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTItMS0xLTM0MDM5_b80d2e5e-d77c-49ad-a733-8a24e539de4b"
      unitRef="usd">4552000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i233b3e65c4014824a116028552a33e6b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTQtMS0xLTM0MDM5_af3f6841-2b6c-4c4b-af85-5bbf388894c8"
      unitRef="gbp">1675000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i233b3e65c4014824a116028552a33e6b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTUtMS0xLTM0MDM5_dfa1e18d-f0e8-4079-9bf1-b2bafe95522a"
      unitRef="usd">2287000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i4c575fbed7374c838d828cf6cf30c79c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTEtMS0xLTI4ODA1_c081db9d-6f61-4edd-9e18-adc75a5e1c78"
      unitRef="huf">1355000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i4c575fbed7374c838d828cf6cf30c79c_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTItMS0xLTI4ODA1_d00477da-b1c7-44c7-bb54-1e8aded286a0"
      unitRef="usd">4155000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i45f95c900587476f9a93fde30adfbaf1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTQtMS0xLTI4ODA1_dabb8f56-a81b-431d-888c-38d73cda4e27"
      unitRef="huf">1330000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i45f95c900587476f9a93fde30adfbaf1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE1LTUtMS0xLTI4ODA1_2094d454-0a66-4f61-a834-0a13df3d7a48"
      unitRef="usd">4494000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iccaf5fac85854bc78b3b41877b85ec45_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTEtMS0xLTI4ODA1_7e96c872-9481-4979-8fbb-99154db125b7"
      unitRef="cad">1480000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iccaf5fac85854bc78b3b41877b85ec45_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTItMS0xLTI4ODA1_f6dff2bf-27bf-4525-a047-aa08e3302c10"
      unitRef="usd">1167000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iec122b031b4a4ca6b3633d5405753240_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTQtMS0xLTI4ODA1_ddde978d-9f1a-40cd-beaf-6cbcf724ad3d"
      unitRef="cad">1285000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="iec122b031b4a4ca6b3633d5405753240_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE2LTUtMS0xLTI4ODA1_c44bf72c-f3b5-4dc6-924d-8085b11b31c6"
      unitRef="usd">1010000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ibaaae7dc618d498782e79c903a2d481b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTEtMS0xLTM0MDQ2_c2c3a189-379d-485a-abbb-4de6dbbcb3f9"
      unitRef="krw">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ibaaae7dc618d498782e79c903a2d481b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTItMS0xLTM0MDQ2_bb22115e-3db7-4b76-8755-5c636bfe61f5"
      unitRef="usd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i497d9d68981c44ebb35250193a714eb7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTQtMS0xLTM0MDQ2_5fc2b09d-321e-403d-ab1b-889a940d51d4"
      unitRef="krw">6925000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i497d9d68981c44ebb35250193a714eb7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTUtMS0xLTM0MDQ2_561892f6-8b13-4026-827a-1554df877637"
      unitRef="usd">6377000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i00a64ebf1e97460399ab2caa80730e9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTEtMS0xLTI4ODA1_6e8a812c-e270-4fa0-bb52-2d09142220cc"
      unitRef="twd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i00a64ebf1e97460399ab2caa80730e9b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTItMS0xLTI4ODA1_c6560529-fed6-42ea-ac88-5ee17c351855"
      unitRef="usd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia7422c5d263441d58ee5c68d7143fed0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTQtMS0xLTI4ODA1_65b15d3a-e883-4d6b-9679-e67c54176e95"
      unitRef="twd">38035000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ia7422c5d263441d58ee5c68d7143fed0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE3LTUtMS0xLTI4ODA1_3c70c9b7-bff4-4c93-90f8-a37833112213"
      unitRef="usd">1362000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="if322716820c4489ab6cadd0ef3660c0a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTEtMS0xLTI4ODA1_14cbbf01-ad5d-4a1e-895c-5d14dadb4fa9"
      unitRef="sgd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="if322716820c4489ab6cadd0ef3660c0a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTItMS0xLTI4ODA1_14109803-0389-46cc-bd44-fed5f7dc23f9"
      unitRef="usd">0</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i6c8355418cf24fdd81200d77b1ee46b9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTQtMS0xLTI4ODA1_f6b73c61-76a5-4011-b803-a2a79b6aedb1"
      unitRef="sgd">1465000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i6c8355418cf24fdd81200d77b1ee46b9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZToxODcyYWUxMTlhODk0N2YxOTgxOThkYTlhMDg5Y2Q1OS90YWJsZXJhbmdlOjE4NzJhZTExOWE4OTQ3ZjE5ODE5OGRhOWEwODljZDU5XzE4LTUtMS0xLTI4ODA1_9e23008e-0423-451c-b082-893524928e6d"
      unitRef="usd">1110000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MDY_8a5fae9b-dc05-4dc5-a31f-17db875507fb">&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Information regarding the fair value of the outstanding forward contracts was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.274%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.204%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.350%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.888%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.358%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Derivatives&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet  Location&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet   Location&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="9" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:24pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="36" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Economic hedge forward contracts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Prepaid expenses and other current assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Accrued expenses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock>
    <us-gaap:DerivativeAssets
      contextRef="i9c4108ecbb154b9689e5bb60e97d0990_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtMy0xLTEtMjg4MDU_390c26f4-bfb0-44e7-92b9-2869422a93c5"
      unitRef="usd">39000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="if647a88887404ad0929e10c5f5dee470_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtNS0xLTEtMjg4MDU_fbd2d05e-19f8-4138-bdba-7dead4f6b843"
      unitRef="usd">265000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeLiabilities
      contextRef="i7b4846a2320b403d951b251fe43bd88b_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtOS0xLTEtMjg4MDU_09c253ab-8bb2-4e8a-ad3e-5625d6ac8cb8"
      unitRef="usd">230000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i7d912f3d97904dfbba9ec1dc3cc1dfda_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo0MTUzNjk0M2Q2OWI0YTI2OTI2MGI3ZDI0ZjQ4ZGU4MS90YWJsZXJhbmdlOjQxNTM2OTQzZDY5YjRhMjY5MjYwYjdkMjRmNDhkZTgxXzYtMTEtMS0xLTI4ODA1_d129df17-057e-47d8-b43f-889a7120cfcd"
      unitRef="usd">38000</us-gaap:DerivativeLiabilities>
    <us-gaap:OffsettingAssetsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzEzOTU_2d7296f2-22d2-4afc-b4f4-7d7c25ed68b2">&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the gross activity for all derivative assets and liabilities which were presented on a net basis on the Consolidated Balance Sheets due to the right of offset with each counterparty (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:14pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.108%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.562%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.709%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:17.814%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.562%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.394%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Asset Derivatives&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of recognized assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of recognized liabilities&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts offset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts offset&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net amount of assets presented&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;265&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net amount of liabilities presented&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;230&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;38&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:OffsettingAssetsTableTextBlock>
    <us-gaap:DerivativeFairValueOfDerivativeAsset
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItMi0xLTEtMjg4MDU_272e10a0-f679-4f5a-b9f2-bda963605e08"
      unitRef="usd">39000</us-gaap:DerivativeFairValueOfDerivativeAsset>
    <us-gaap:DerivativeFairValueOfDerivativeAsset
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItNC0xLTEtMjg4MDU_c705f29c-eb75-4fad-9ad1-75682480d6cf"
      unitRef="usd">265000</us-gaap:DerivativeFairValueOfDerivativeAsset>
    <us-gaap:DerivativeFairValueOfDerivativeLiability
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItOC0xLTEtMjg4MDU_0e60717b-77dd-4357-8055-4868128b59ac"
      unitRef="usd">230000</us-gaap:DerivativeFairValueOfDerivativeLiability>
    <us-gaap:DerivativeFairValueOfDerivativeLiability
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzItMTAtMS0xLTI4ODA1_104d2d80-0847-43de-b132-e11af0b0886e"
      unitRef="usd">38000</us-gaap:DerivativeFairValueOfDerivativeLiability>
    <us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtMi0xLTEtMjg4MDU_6f4d824a-ba84-4e7d-992a-b86f74195484"
      unitRef="usd">0</us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset>
    <us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtNC0xLTEtMjg4MDU_508940e9-a9a4-4842-8eed-2a2f14094f89"
      unitRef="usd">0</us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset>
    <us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtOC0xLTEtMjg4MDU_874a0ac4-cbd4-4b10-8724-021a1fc5e408"
      unitRef="usd">0</us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset>
    <us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzMtMTAtMS0xLTI4ODA1_fe1b062c-c692-4be6-a6d2-f1c8264cd0eb"
      unitRef="usd">0</us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset>
    <us-gaap:DerivativeAssets
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtMi0xLTEtMjg4MDU_cd5f9d3e-f4ca-474a-a1c4-9f4e8763061f"
      unitRef="usd">39000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtNC0xLTEtMjg4MDU_73e5c113-69e6-4e33-99d4-bfff4a085634"
      unitRef="usd">265000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeLiabilities
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtOC0xLTEtMjg4MDU_a029ec92-53f6-4721-930d-1a01afd49c8d"
      unitRef="usd">230000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTo1YmE4YWQ5NzhlOGU0ZTI2YTg5MjliYzdmODExZTg2ZC90YWJsZXJhbmdlOjViYThhZDk3OGU4ZTRlMjZhODkyOWJjN2Y4MTFlODZkXzQtMTAtMS0xLTI4ODA1_dd389352-5026-43ce-83d6-3bd9c7f08e65"
      unitRef="usd">38000</us-gaap:DerivativeLiabilities>
    <us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MTA_00765aca-c74d-48db-8797-b283cab53f3d">&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Information regarding the effect of derivative instruments, net of the underlying exposure, on the consolidated financial statements was as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:21.920%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:22.800%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.762%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.911%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Location in Financial Statements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gains (losses) recognized in current operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign currency gain (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,262&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,308)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,305&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock>
    <us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90ZXh0cmVnaW9uOjJjOWE3YTkxZjc5OTRiZWRiNDBmMGM4MDU5N2VmMWRjXzE0MDA_eea57657-70c6-4161-ba6d-65d18cec2766">&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:21.920%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:22.800%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.762%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.908%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.911%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;border-bottom:1pt solid #000000;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Location in Financial Statements&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" rowspan="2" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="15" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="24" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:100%"&gt;Derivatives Not Designated as Hedging Instruments:&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gains (losses) recognized in current operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign currency gain (loss)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;4,262&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,308)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,305&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;</us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock>
    <us-gaap:DerivativeGainLossOnDerivativeNet
      contextRef="i7738a97fca024a00829bfaed4f536e63_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTMtMS0xLTI4ODA1_bf8d5714-b162-4f54-b6c6-d0bcc50cc8a7"
      unitRef="usd">4262000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:DerivativeGainLossOnDerivativeNet
      contextRef="i9ba0ae2aca854dc3accbe251cf58f567_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTUtMS0xLTI4ODA1_87422c9f-b691-4787-a2a9-76b8707fcc04"
      unitRef="usd">-12308000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:DerivativeGainLossOnDerivativeNet
      contextRef="i80a722d47fc34f3388de28ec4399d41e_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNDgvZnJhZzoyYzlhN2E5MWY3OTk0YmVkYjQwZjBjODA1OTdlZjFkYy90YWJsZTozOGMxYWMwMjM1Mzg0YmM0YjVhMzE2NzU4ZjYxZGRjMy90YWJsZXJhbmdlOjM4YzFhYzAyMzUzODRiYzRiNWEzMTY3NThmNjFkZGMzXzExLTctMS0xLTI4ODA1_d1e965b7-c223-4897-a37a-be9f36ec248b"
      unitRef="usd">1305000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:RevenueFromContractWithCustomerTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNjg_351938ef-db21-4acf-8311-dd012aae4cc0">Revenue Recognition&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes disaggregated revenue information by geographic area based on the customer's country of domicile (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.216%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.632%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Americas&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;435,220&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;310,027&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;277,155&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;247,744&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;208,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Greater China&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;200,135&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;168,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,061&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other Asia&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;153,999&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;123,919&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;105,671&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt;text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes disaggregated revenue information by revenue type (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.125%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.466%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.824%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.824%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.616%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Standard products and services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;889,253&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;674,830&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;629,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Application-specific customer solutions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;147,845&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;136,190&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Costs to Fulfill a Contract&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Costs to fulfill a contract are included in "Prepaid expenses and other current assets" on the Consolidated Balance Sheets and amounted to $10,854,000 and $6,846,000 as of December 31, 2021 and 2020, respectively. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Accounts Receivable, Contract Assets, and Contract Liabilities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Accounts receivable represent amounts billed and currently due from customers which are reported at their net estimated realizable value. The Company maintains an allowance against its accounts receivable for credit losses. Contract assets consist of unbilled revenue which arises when revenue is recognized in advance of billing for certain application-specific customer solutions contracts. Contract liabilities consist of deferred revenue and customer deposits which arise when amounts are billed to or collected from customers in advance of revenue recognition.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(300)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;831&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(55)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;776&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company's higher estimate of expected credit losses in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:3pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the deferred revenue and customer deposits activity (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.398%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.402%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,432&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferral of revenue billed in the current period, net of recognition&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,014&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognition of revenue deferred in prior period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,443)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;271&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21,274&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferral of revenue billed in the current period, net of recognition&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;31,907&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognition of revenue deferred in prior period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(17,403)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(35)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;35,743&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As a practical expedient, the Company has elected not to disclose the aggregate amount of the transaction price allocated to unsatisfied performance obligations, as our contracts have an original expected duration of less than one year.&lt;/span&gt;&lt;/div&gt;</us-gaap:RevenueFromContractWithCustomerTextBlock>
    <us-gaap:DisaggregationOfRevenueTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzA_8694e2e6-13a4-4208-a455-d2530cc45bf2">&lt;div style="margin-top:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes disaggregated revenue information by geographic area based on the customer's country of domicile (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.216%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.826%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.630%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.632%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Americas&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;435,220&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;310,027&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;277,155&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;247,744&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;208,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Greater China&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;200,135&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;168,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,061&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other Asia&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;153,999&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;123,919&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;105,671&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:1pt;text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes disaggregated revenue information by revenue type (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:61.125%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.466%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.824%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.824%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.616%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year Ended December 31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Standard products and services&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;889,253&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;674,830&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;629,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Application-specific customer solutions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;147,845&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;136,190&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;96,405&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DisaggregationOfRevenueTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i60257de642494bd1a3f4066707e2f9c2_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItMi0xLTEtMjg4MDU_4b1dab75-8252-4bdd-a480-51cbdc844a53"
      unitRef="usd">435220000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8b857d6347784d988a40fca03c6bd5be_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItNC0xLTEtMjg4MDU_66005e54-622e-4f3a-b26b-c3dafc7b6e8c"
      unitRef="usd">310027000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i565882183d72492aba9afe23745416e2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzItNi0xLTEtMjg4MDU_9f6062d7-ff0e-4dce-9ef9-a3cf1bc8a6d5"
      unitRef="usd">277155000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtMi0xLTEtMjg4MDU_5b44449d-3c21-4765-870e-9e790b946493"
      unitRef="usd">247744000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtNC0xLTEtMjg4MDU_c36f8673-d5de-407b-bff1-f79de5f688d6"
      unitRef="usd">208787000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzMtNi0xLTEtMjg4MDU_6c1e0582-49ce-4650-a6bc-5bf80498cb9f"
      unitRef="usd">227738000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtMi0xLTEtMjg4MDU_1fd6221e-66aa-4708-bf27-025b349b6e1b"
      unitRef="usd">200135000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtNC0xLTEtMjg4MDU_c4e0d176-fe44-4563-8a22-e21cb7e741bd"
      unitRef="usd">168287000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzQtNi0xLTEtMjg4MDU_535f614c-3e54-4ff6-bb4a-2229c2bdfd98"
      unitRef="usd">115061000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i9478b847f49e4115928476734dea9c64_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtMi0xLTEtMjg4MDU_c4ba9e80-5457-4f9f-9780-8b046e7b519d"
      unitRef="usd">153999000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="if9fc10a69f254823a47c3b4444adf857_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtNC0xLTEtMjg4MDU_9b761a3c-c8ed-4a34-b035-5a5e4927bee9"
      unitRef="usd">123919000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia09d8e352163476a90fdecfca35298c5_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzUtNi0xLTEtMjg4MDU_52b7fd45-c1db-4e80-84a8-164f32d1d9de"
      unitRef="usd">105671000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtMi0xLTEtMjg4MDU_6494d25c-1e00-4db0-81e1-cb58c1406e7e"
      unitRef="usd">1037098000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtNC0xLTEtMjg4MDU_ffe38b1d-23de-49f9-966d-4d888bed8741"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTo5NmIxYmI0OTkzYzc0OTk2ODdjMWY5NTY3YmZhOTk4ZS90YWJsZXJhbmdlOjk2YjFiYjQ5OTNjNzQ5OTY4N2MxZjk1NjdiZmE5OThlXzYtNi0xLTEtMjg4MDU_5ebd64a5-db76-4c49-9980-ebcb722de048"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i978d0a39464248048a6adfb0338684b7_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItMi0xLTEtMjg4MDU_3ee547fc-c8c2-4d8c-9c15-ce19ce8c12ed"
      unitRef="usd">889253000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="if8ddf600fc0548fd9b6824b8496ad6bd_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItNC0xLTEtMjg4MDU_f76d54f5-4e71-4bdd-b793-92b75072b4a6"
      unitRef="usd">674830000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icccce2aa3ff74ec8a00c89034af41fc6_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzItNi0xLTEtMjg4MDU_ec77bc31-0c42-47e3-8720-034cbb4b783a"
      unitRef="usd">629220000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i4d3eb05597f64cf7a138bef69f2aa751_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtMi0xLTEtMjg4MDU_aaf5ef65-3b1b-4c5f-b8b7-2080768a8a24"
      unitRef="usd">147845000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i25c7239e696d401ab604a30f0c0518a0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtNC0xLTEtMjg4MDU_4cf10cc7-f6e7-4f3f-853a-94da03e6e054"
      unitRef="usd">136190000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3215f7665a784c45aa04c3aae867d897_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzMtNi0xLTEtMjg4MDU_d0ab2447-c963-42aa-8fe3-b26e2b9d3807"
      unitRef="usd">96405000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtMi0xLTEtMjg4MDU_db88e3dd-f260-4e01-aba4-77eaa2e3e2c8"
      unitRef="usd">1037098000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtNC0xLTEtMjg4MDU_3584afe5-ac41-4c0e-975b-eaa0f594628f"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZTBjMjNkYTQ1Njk0OWY2YWRmZjExODdhNWRlMmU1Zi90YWJsZXJhbmdlOmNlMGMyM2RhNDU2OTQ5ZjZhZGZmMTE4N2E1ZGUyZTVmXzQtNi0xLTEtMjg4MDU_bfea890b-5fb0-4da6-bc1e-7e855884603a"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CapitalizedContractCostGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzQyMg_4c383601-34eb-40fb-bab0-54fe3f749e7f"
      unitRef="usd">10854000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:CapitalizedContractCostGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzQyOQ_05c98405-676b-41a9-a359-8027f9b16867"
      unitRef="usd">6846000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzE_06fbdd16-41cd-46cb-b1d4-32ea3f5fa76b">&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes changes in the allowance for credit losses (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.341%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.459%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(300)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;831&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Increases to the allowance for credit losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Write-offs, net of recoveries&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(55)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;776&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzEtMS0xLTEtMjg4MDU_886e49ff-402b-4a3b-a9a3-fb7f0b833b52"
      unitRef="usd">530000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzItMS0xLTEtMjg4MDU_9ebdd672-b755-45a7-98ef-a722d6fd997d"
      unitRef="usd">600000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzMtMS0xLTEtMjg4MDU_854dd442-0b03-425a-b309-e0fc1a21a51b"
      unitRef="usd">300000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzQtMS0xLTEtMjg4MDU_1a3a10a9-fd82-4ba1-ba32-22f003658371"
      unitRef="usd">1000</cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzUtMS0xLTEtMjg4MDU_1e6f717a-f236-45b3-acad-374fa1f076b6"
      unitRef="usd">831000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzYtMS0xLTEtMjg4MDU_cdea0e7a-3cc6-436b-94d5-d1ea1c755d97"
      unitRef="usd">0</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzctMS0xLTEtMjg4MDU_65408213-5970-4b17-8474-cf0acdc2316b"
      unitRef="usd">55000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzgtMS0xLTEtMjg4MDU_9ca3018d-1bcf-4316-b17d-63aeb2edb7d7"
      unitRef="usd">0</cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTozMjJiODhhY2RiMDg0YmY5YmYzYzI5MDI2MmQwYTQ4Yi90YWJsZXJhbmdlOjMyMmI4OGFjZGIwODRiZjliZjNjMjkwMjYyZDBhNDhiXzktMS0xLTEtMjg4MDU_0345c9ad-3a95-4598-8faf-e188ea6ff404"
      unitRef="usd">776000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90ZXh0cmVnaW9uOjZmMGYxNjgxZDA4NjRkNjA5NGMzOGU4YjQ2MWU1MTQ3XzIxNzM_c4d4c0f5-3b82-491a-8097-762e46dc2664">&lt;div style="margin-top:3pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the deferred revenue and customer deposits activity (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:79.398%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:18.402%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,432&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferral of revenue billed in the current period, net of recognition&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;19,014&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognition of revenue deferred in prior period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(12,443)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;271&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21,274&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferral of revenue billed in the current period, net of recognition&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;31,907&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Recognition of revenue deferred in prior period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(17,403)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(35)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;35,743&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzEtMS0xLTEtMjg4MDU_11333579-57fa-4468-8784-2485ee25465f"
      unitRef="usd">14432000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzItMS0xLTEtMjg4MDU_2040c3b7-6869-4895-8cb1-a96d395b15f0"
      unitRef="usd">19014000</cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease>
    <cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzMtMS0xLTEtMjg4MDU_15aefcea-5339-40db-989d-7e26949b00a8"
      unitRef="usd">12443000</cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized>
    <cgnx:ContractLiabilityForeignExchangeRateChanges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzQtMS0xLTEtMjg4MDU_2383fdf0-721c-43f7-80ec-f56db4d5ad04"
      unitRef="usd">271000</cgnx:ContractLiabilityForeignExchangeRateChanges>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzUtMS0xLTEtMjg4MDU_b7216cfc-a8f9-43db-a9a1-660ecff404c7"
      unitRef="usd">21274000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzYtMS0xLTEtMjg4MDU_5ec60266-3eab-46a0-9c3b-2916886239c2"
      unitRef="usd">31907000</cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease>
    <cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzctMS0xLTEtMjg4MDU_e25f467a-e052-4e16-9fbc-20b7545ced12"
      unitRef="usd">17403000</cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized>
    <cgnx:ContractLiabilityForeignExchangeRateChanges
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzgtMS0xLTEtMjg4MDU_c44557fd-2f31-4415-a948-f22048847c3f"
      unitRef="usd">-35000</cgnx:ContractLiabilityForeignExchangeRateChanges>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTEvZnJhZzo2ZjBmMTY4MWQwODY0ZDYwOTRjMzhlOGI0NjFlNTE0Ny90YWJsZTpjZmE2NTQ2MDc0NzY0NDVkYmVlNzFhYmYzMzY0YjVmMi90YWJsZXJhbmdlOmNmYTY1NDYwNzQ3NjQ0NWRiZWU3MWFiZjMzNjRiNWYyXzktMS0xLTEtMjg4MDU_55e77b4a-502e-45db-ae3f-54e0ad03528c"
      unitRef="usd">35743000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzQxMzM_248170f5-df2c-4988-817a-c66a4763c5c5">Shareholders&#x2019; Equity&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Preferred Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has 400,000 shares of authorized but unissued $.01 par value preferred stock.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Common Stock&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On April 25, 2018, the Company's shareholders approved an amendment to the Company's Articles of Organization to increase the authorized number of shares of $.002 par value common stock from 200,000,000 to 300,000,000. In addition, on April 25, 2018, the Company's shareholders approved an amendment and restatement of the Company's 2001 General Stock Option Plan which provides for an increase in the number of available shares by 10,000,000.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Each outstanding share of common stock entitles the record holder to one vote on all matters submitted to a vote of the Company&#x2019;s shareholders. Common shareholders are also entitled to dividends when and if declared by the Company&#x2019;s Board of Directors.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock Repurchases&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In October 2018, the Company's Board of Directors authorized the repurchase of $200,000,000 of the Company's common stock. Under this October 2018 program, the Company repurchased 1,398,000 shares at a cost of $61,690,000 in 2019, 1,215,000 shares at a cost of $51,036,000 in 2020, and 957,000 shares at a cost of $78,652,000 in 2021, which completed purchases under this program. On March 12, 2020, the Company's Board of Directors authorized the repurchase of an additional $200,000,000 of the Company's common stock. Under this March 2020 program, the Company repurchased 1,060,000 shares, including 5,000 shares that had not yet settled as of December 31, 2021, at a cost of $83,000,000 in 2021, leaving a remaining balance of $117,000,000. The Company may repurchase shares under this program in future periods depending on a variety of factors, including, among other things, the impact of dilution from employee stock awards, stock price, share availability, and cash requirements. The Company is authorized to make repurchases of its common stock through open market purchases, pursuant to Rule 10b5-1 trading plans, or in privately negotiated transactions.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Dividends&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s Board of Directors declared and paid cash dividends of $0.050 per share in the first, second, and third quarters of 2019, $0.055 per share in the fourth quarter of 2019 and in the first, second, and third quarters of 2020, and $0.060 per share in the fourth quarter of 2020 and in the first, second, and third quarters of 2021. The dividend was increased to $0.065 per share in the fourth quarter of 2021. Also, in the fourth quarter of 2020, an additional special cash dividend of $2.00 per share was declared and paid. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Total dividends paid were $43,263,000 in 2021, $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, and $35,124,000 in 2019. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend on such factors as the Board deems relevant, including, among other things, the Company's ability to generate positive cash flow from operations.&lt;/span&gt;&lt;/div&gt;</us-gaap:StockholdersEquityNoteDisclosureTextBlock>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzY3_88a2cd52-d66b-488e-b1ae-86902419c06c"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwNA_4e535f56-686e-498c-8411-9de4218b08dc"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzMwNA_c6c170eb-9a88-450e-bb4e-42be1788763e"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ia18096d71003430faf7fc3b7199862b2_I20160427"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzMzNQ_436e17f4-ab76-4df0-b547-4a3c5da5249f"
      unitRef="shares">200000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ibc957dc1955640e68337295dda8c967f_I20180425"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0MQ_09eb80e1-6238-4ab6-baaf-da02cb472495"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ic97efe271a134f3bb78c5e0f0c609dcf_I20160428"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzU1OA_c92ee5c6-9ac3-40bb-a08a-21a667946899"
      unitRef="shares">10000000</us-gaap:CommonStockSharesAuthorized>
    <cgnx:VoteEntitledForEachCommonShareOutstanding
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzYzMQ_06b4547b-57b3-45fb-a2b6-0200903a91e2"
      unitRef="vote">1</cgnx:VoteEntitledForEachCommonShareOutstanding>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="icee5a3a1e242481d9356d6512fd34156_I20181029"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzIzNDQ_a989eb26-52cf-4520-9829-8b33be18ec9e"
      unitRef="usd">200000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1NDE_8ca487d2-81d3-4131-9f88-0976af85426f"
      unitRef="shares">1398000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i88965a860e684ef3a6ed5d4f06b8baaf_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1NjQ_d8872c36-3e16-4624-8a13-f6a57ea4120f"
      unitRef="usd">61690000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI1Nzk_29c71666-22ef-4942-bbbf-5f76b07d47eb"
      unitRef="shares">1215000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ifb411f18f9444b618c0b5722a8f4c8c9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI2MDI_fc45ded2-eebb-4dbb-b5db-5724c3286048"
      unitRef="usd">51036000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI1NzY_694c6c48-db8b-4854-83b9-6679de1b07c2"
      unitRef="shares">957000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="iec44922cbbe14b39918906b53d07cce4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI1OTM_a505062c-985c-4242-b986-f64c933d43c9"
      unitRef="usd">78652000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="ib603cdbab9484789a7f90ba5470fa1fc_I20200312"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzI3NzY_529d01a7-3fa3-484a-95d6-4113ec4cc28e"
      unitRef="usd">200000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxMzU_309bb633-40cf-44a5-9cc6-ea404f201db1"
      unitRef="shares">1060000</us-gaap:StockRepurchasedDuringPeriodShares>
    <cgnx:StockRepurchasedDuringPeriodSharesNotYetSettled
      contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzE2NDkyNjc0NDc4NDI_7d5f3cc8-d693-480b-8b8d-85dbbdd53ac6"
      unitRef="shares">5000</cgnx:StockRepurchasedDuringPeriodSharesNotYetSettled>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i268f447259bc49a5b4b4ad1f494cb6a4_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxNDE_02b8c66c-b0c3-4ca6-b080-944dba2acf93"
      unitRef="usd">83000000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1
      contextRef="i10dc5333496046ad93d3758e0acfd0ad_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzMxNDI_67b0ee27-eeff-4be1-af11-78d9aee8b6ca"
      unitRef="usd">117000000</us-gaap:StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i6b8a386974cc4d9ba5c5b000e859ee31_D20190101-20190929"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzM4MTk_54ae00ff-370a-41ec-89ba-d7fd3b45f142"
      unitRef="usdPerShare">0.050</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="idf4cd8f218d9414faa06b3c55217d8fe_D20190930-20191231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0MDk_a87e2288-6598-4d11-961e-96c81e26b7b9"
      unitRef="usdPerShare">0.055</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="icf5af4f37b30453da1856b17e836038f_D20200928-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM0NzY_9f57f50d-8836-410b-9d26-c14b763d48a4"
      unitRef="usdPerShare">0.060</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i92b408fed68541808d3ffb0dc09c1308_D20211004-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM2MDE_98fd7407-bb4f-4882-b0ec-1885b249de2a"
      unitRef="usdPerShare">0.065</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareDeclared
      contextRef="icf5af4f37b30453da1856b17e836038f_D20200928-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM3MjE_a48ee045-8741-4c48-965e-1d23e62f0947"
      unitRef="usdPerShare">2.00</us-gaap:CommonStockDividendsPerShareDeclared>
    <us-gaap:PaymentsOfDividends
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzEwOTk1MTE2MzI2Njc_a25766eb-d77b-4c9d-8f48-f5cf1f6e57f0"
      unitRef="usd">43263000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM3ODU_bb2fde66-242a-4e89-8914-6fc533298f83"
      unitRef="usd">390508000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="i22ac892990aa4be6bea90ca4813eba67_D20201228-20201228"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM4MTI_2d1516a1-e767-4f65-b047-6b03e44065fd"
      unitRef="usd">351428000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNTQvZnJhZzoxMjRjN2VhYzQyYTc0YWIwYmQyZGQ2ZDg4OGE1NjU5NS90ZXh0cmVnaW9uOjEyNGM3ZWFjNDJhNzRhYjBiZDJkZDZkODg4YTU2NTk1XzM4NTE_0f51e5cb-aeb9-4188-8378-f47aab36c6ba"
      unitRef="usd">35124000</us-gaap:PaymentsOfDividends>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTc_b9f49a2e-4956-4cd8-86b0-a79895711d81">Stock-Based Compensation&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock Plans&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s stock-based awards that result in compensation expense consist of stock options and restricted stock units (RSUs). As of December&#160;31, 2021, the Company had 15,640,000 shares available for grant under its stock plans. Stock options are granted with an exercise price equal to the market value of the Company&#x2019;s common stock at the grant date and generally vest over &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQxOQ_cac7f81a-55a4-43ac-b985-ca51aa05fe04"&gt;four&lt;/span&gt; or five years based on continuous employment and expire ten years from the grant date. RSUs generally vest upon three years of continuous employment or incrementally over such three-year period. Participants are not entitled to dividends on RSUs.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock Options&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s stock option activity:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:43.409%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.226%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Shares&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;br/&gt;Average&lt;br/&gt;Exercise&lt;br/&gt;Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;br/&gt;Average&lt;br/&gt;Remaining&lt;br/&gt;Contractual&lt;br/&gt;Term&lt;br/&gt;(in&#160;years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Aggregate&lt;br/&gt;Intrinsic Value&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,970&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;44.73&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;564&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;88.62&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,694)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37.70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited or expired&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(230)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50.34&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,610&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;49.38&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.57&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;222,053&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercisable as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,442&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39.87&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5.45&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;130,448&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options vested or expected to vest as of&#160;&lt;br/&gt;&#160;December 31, 2021 (1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,134&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;48.66&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.49&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;212,746&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(1) In addition to the vested options, the Company expects a portion of the unvested options to vest at some point in the future. Options expected to vest are calculated by applying an estimated forfeiture rate to the unvested options.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair values of stock options granted in each period presented were estimated using the following weighted-average assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.847%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.996%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.143%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.146%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Risk-free rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1.3&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected dividend yield&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;0.27&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.41&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.39&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected term (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Risk-free rate&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The risk-free rate was based on a treasury instrument whose term was consistent with the contractual term of the option.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected dividend yield&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Generally, the current dividend yield is calculated by annualizing the cash dividend declared by the Company&#x2019;s Board of Directors and dividing that result by the closing stock price on the grant date.&#160;&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected volatility&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The expected volatility was based on a combination of historical volatility of&#160;the Company&#x2019;s&#160;common stock over the contractual term of the option and implied volatility for traded options of the Company&#x2019;s stock.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%"&gt;Expected term&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The expected term was derived from the binomial lattice model from the impact of events that trigger exercises over time.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The weighted-average grant-date fair value of stock options granted was $33.79 in 2021, $19.62 in 2020, and $18.62 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The total intrinsic value of stock options exercised was $80,369,000 in 2021, $166,796,000 in 2020, and $90,762,000 in 2019. The total fair value of stock options vested was $45,328,000 in 2021, $45,998,000 in 2020, and $38,974,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Restricted Stock Units (RSUs)&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables summarizes the Company's RSU activity:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.496%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.666%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:19.808%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Shares&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Weighted-Average&lt;br/&gt;Grant Date Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Nonvested as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51.27&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;335&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;87.03&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(16)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;57.31&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited or expired&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(50)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58.47&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Nonvested as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;823&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;65.26&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair value of RSUs is determined based on the observable market price of the Company's stock on the grant date less the present value of expected future dividends. The weighted-average grant-date fair value of RSUs granted in 2020 and 2019 was $52.09 and $48.61, respectively. There were 16,000 RSUs that vested in 2021, and no RSUs that vested in 2020 and 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Stock-Based Compensation Expense&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company stratifies its employee population into two groups: one consisting of senior management and another consisting of all other employees. The Company currently applies an estimated forfeiture rate of 8% to all unvested options for senior management and a rate of 12% for all other employees. Each year during the first quarter, the Company revises its forfeiture rate. This resulted in a decrease to compensation expense of $255,000 in 2021, an increase to compensation expense of $1,787,000 in 2020, and a decrease to compensation expense of $499,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December&#160;31, 2021, total unrecognized compensation expense related to non-vested stock-based awards, including stock options and RSUs, was $47,690,000, which is expected to be recognized over a weighted-average period of 1.4 years.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The total stock-based compensation expense and the related income tax benefit recognized was $43,774,000 and $6,764,000, respectively, in 2021, $42,661,000 and $6,569,000, respectively, in 2020, and $45,589,000 and $7,756,000, respectively, in 2019. Stock-based compensation expense recognized in 2020 included credits of $1,401,000 relating to grants cancelled as a result of the Company's workforce reduction in the second quarter of 2020. No compensation expense was capitalized in 2021, 2020, or 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents the stock-based compensation expense by caption for each period presented on the Consolidated Statements of Operations (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.176%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cost of revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,345&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,365&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,504&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Research, development, and engineering&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;13,535&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,748&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Selling, general, and administrative&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;28,894&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;27,909&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,337&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,774&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;42,661&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45,589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i39707b072766401697c047f98d14f735_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIxOQ_de54873d-0ed5-43f1-b06a-9e46d35171b3"
      unitRef="shares">15640000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="idd5ac6d2068247fbaaf23d9582522e3a_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQyNQ_ab9f4384-c9af-49f1-8ef4-2eeda50b6206">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <cgnx:ExpirationPeriodOfStockOptionPlan
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzQ3MA_40016799-2a45-48b2-ba37-9201dca91763">P10Y</cgnx:ExpirationPeriodOfStockOptionPlan>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ib1a2499886a74a06992d20a3f6b53efb_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzUxOQ_5b682129-2934-41c7-aaad-2880575bfd93">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTU_fc83a782-130b-4479-bada-6bdd9cda16a7">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the Company&#x2019;s stock option activity:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:43.409%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.223%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.226%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Shares&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;br/&gt;Average&lt;br/&gt;Exercise&lt;br/&gt;Price&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Weighted-&lt;br/&gt;Average&lt;br/&gt;Remaining&lt;br/&gt;Contractual&lt;br/&gt;Term&lt;br/&gt;(in&#160;years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Aggregate&lt;br/&gt;Intrinsic Value&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,970&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;44.73&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;564&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;88.62&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercised&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,694)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37.70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited or expired&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(230)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;50.34&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Outstanding as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,610&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;49.38&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.57&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;222,053&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Exercisable as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,442&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39.87&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5.45&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;130,448&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Options vested or expected to vest as of&#160;&lt;br/&gt;&#160;December 31, 2021 (1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,134&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;48.66&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.49&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;212,746&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;padding-left:36pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(1) In addition to the vested options, the Company expects a portion of the unvested options to vest at some point in the future. Options expected to vest are calculated by applying an estimated forfeiture rate to the unvested options.&lt;/span&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzEtMS0xLTEtMjg4MDU_2331fc0f-89ad-4666-8d17-8ecf97ed1695"
      unitRef="shares">8970000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzEtMy0xLTEtMjg4MDU_3da45363-162b-446b-bdc0-4c5ba545accd"
      unitRef="usdPerShare">44.73</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzItMS0xLTEtMjg4MDU_e002c8d5-b59b-4483-b845-95155c975bbb"
      unitRef="shares">564000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzItMy0xLTEtMjg4MDU_0c65a51a-ce4c-42cd-a7f3-825286e068d7"
      unitRef="usdPerShare">88.62</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzMtMS0xLTEtMjg4MDU_918ea564-b5ab-4212-965b-3def5da77747"
      unitRef="shares">1694000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzMtMy0xLTEtMjg4MDU_1aa8ac03-d9ec-4979-93f6-c22f03d1534a"
      unitRef="usdPerShare">37.70</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzQtMS0xLTEtMjg4MDU_17cf905b-66ba-4e58-a5cd-88f5e37e5524"
      unitRef="shares">230000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzQtMy0xLTEtMjg4MDU_cd203d65-fc9e-4245-9b57-a78ac260725e"
      unitRef="usdPerShare">50.34</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtMS0xLTEtMjg4MDU_3e97f91a-5270-4a62-9212-4bb7e6ef70af"
      unitRef="shares">7610000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtMy0xLTEtMjg4MDU_be77dacc-eabb-4f93-9f60-a71993d6efe0"
      unitRef="usdPerShare">49.38</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtNS0xLTEtMjg4MDU_22fbd0e1-e175-40ac-888e-68bd46bf93a9">P6Y6M25D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzUtNy0xLTEtMjg4MDU_ebb91edc-8be9-4d18-9ad2-d1c21639949f"
      unitRef="usd">222053000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtMS0xLTEtMjg4MDU_7231e661-ba47-4145-b1d2-eb99cf90d07d"
      unitRef="shares">3442000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtMy0xLTEtMjg4MDU_c9491fc9-47d2-4a6e-8972-bfe59c343e56"
      unitRef="usdPerShare">39.87</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtNS0xLTEtMjg4MDU_8c4d24bb-b971-40be-8201-8c82aa2243f9">P5Y5M12D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzYtNy0xLTEtMjg4MDU_6ae28c09-6887-43c1-aa71-7fa37765e4b9"
      unitRef="usd">130448000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctMS0xLTEtMjg4MDU_93a32ce5-8d7a-49fd-b5be-3dba086217cb"
      unitRef="shares">7134000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctMy0xLTEtMjg4MDU_7fcb7365-304a-4ad7-8fd9-ee85ed1083d8"
      unitRef="usdPerShare">48.66</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctNS0xLTEtMjg4MDU_8290432a-c870-46d4-b728-9529789fb409">P6Y5M26D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTphNjI1NzhkZjA2MzA0YTJmYmVmYjMyMzFmNWJlZjE1OS90YWJsZXJhbmdlOmE2MjU3OGRmMDYzMDRhMmZiZWZiMzIzMWY1YmVmMTU5XzctNy0xLTEtMjg4MDU_3ace5b06-4b1e-4860-96a1-ef92e3091b0c"
      unitRef="usd">212746000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM2OTg_d5c8b3bb-557f-4928-85a0-18a3da8f55e7">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The fair values of stock options granted in each period presented were estimated using the following weighted-average assumptions:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.847%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.996%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.143%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.146%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Risk-free rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1.3&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.4&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2.7&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected dividend yield&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;0.27&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.41&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.39&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected volatility&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;37&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Expected term (in years)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6.0&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5.3&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItMS0xLTEtMjg4MDU_e9d9273f-7933-435d-b3f4-a5ace6ab5ddf"
      unitRef="number">0.013</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItMy0xLTEtMjg4MDU_c32dc394-7e97-44d3-bd0d-c242841c0c73"
      unitRef="number">0.014</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzItNS0xLTEtMjg4MDU_16e2f14e-3958-4168-86d4-d0aa356f96e8"
      unitRef="number">0.027</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtMS0xLTEtMjg4MDU_1b900f04-ed85-4599-98cc-25d6edb3acf2"
      unitRef="number">0.0027</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtMy0xLTEtMjg4MDU_ebf7ffd2-eab8-44ee-9019-427e127f64c8"
      unitRef="number">0.0041</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzMtNS0xLTEtMjg4MDU_a3d11c55-1a6a-4c89-a285-a039635d2a71"
      unitRef="number">0.0039</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtMS0xLTEtMjg4MDU_c9a7640a-b120-42d8-8335-29a7aa1ece86"
      unitRef="number">0.39</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtMy0xLTEtMjg4MDU_7afad64f-04ee-4ec9-ab6a-5b6edb430e21"
      unitRef="number">0.37</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzQtNS0xLTEtMjg4MDU_35423c34-a6c6-4b23-b302-12115317ba1f"
      unitRef="number">0.37</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i45c675b042014dca8b974960686e1ed3_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtMS0xLTEtMjg4MDU_76a4b598-165c-4f26-9b70-2b1511d1ecca">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="iefdedbfc9aff4869b115c5161b1da2bb_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtMy0xLTEtMjg4MDU_a1ad429d-4ef5-4f10-989d-b67a0a52a3d6">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i0d1c49bfe1e0495aa82309bb0b273324_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTo2ZmVmNmJjNDY4ZjU0OGIyODY3ODk3OGNiMzEzZjJiYS90YWJsZXJhbmdlOjZmZWY2YmM0NjhmNTQ4YjI4Njc4OTc4Y2IzMTNmMmJhXzUtNS0xLTEtMjg4MDU_fb29ad4b-736c-40ed-80af-53bb95cae8fb">P5Y3M18D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE4OTc_1043856e-d6a7-489a-8a27-d59dd134c754"
      unitRef="usdPerShare">33.79</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5MDc_f8035c7d-6d18-4a57-b4c8-49261c445189"
      unitRef="usdPerShare">19.62</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5MjE_be3848b0-3b4d-45f9-9d20-83b69d9c28a8"
      unitRef="usdPerShare">18.62</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5ODg_ea76d5a9-e76b-4f18-b1e5-4caf15bf65c1"
      unitRef="usd">80369000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzE5OTg_e5bac2a2-e29d-4402-8ff8-bf4d405efec3"
      unitRef="usd">166796000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwMTI_c0302d0a-32d0-4d79-883c-4b483ab8a6de"
      unitRef="usd">90762000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwNzE_dd6d9184-0661-4e10-b756-6d3520cfb982"
      unitRef="usd">45328000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwODE_54443fa6-f7ea-4428-a6da-56c25353515a"
      unitRef="usd">45998000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIwOTU_2f44fc4c-4931-476d-b2b3-e9d33e9c7bd4"
      unitRef="usd">38974000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM2OTk_74921bb4-2dd6-4302-b984-605c31b252ef">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following tables summarizes the Company's RSU activity:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.496%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.666%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:19.808%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Shares&lt;br/&gt;(in&#160;thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Weighted-Average&lt;br/&gt;Grant Date Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Nonvested as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;554&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;51.27&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Granted&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;335&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;87.03&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Vested&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(16)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;57.31&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Forfeited or expired&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(50)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;58.47&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Nonvested as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;823&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;65.26&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i0d2d7b131c914aa3813c98711237ce0c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzEtMS0xLTEtMjg4MDU_4215c67a-70ee-4564-b37a-239cb8bb0a11"
      unitRef="shares">554000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i0d2d7b131c914aa3813c98711237ce0c_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzEtMy0xLTEtMjg4MDU_47dbd58e-7b6f-4162-8fc0-0103ac5c29ce"
      unitRef="usdPerShare">51.27</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzItMS0xLTEtMjg4MDU_187954e0-981d-4a97-951e-612428b7bb98"
      unitRef="shares">335000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzItMy0xLTEtMjg4MDU_5e3c8d8e-284c-46bf-b638-0d7ba84c872d"
      unitRef="usdPerShare">87.03</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzMtMS0xLTEtMjg4MDU_df78c491-6670-4c1d-b2c3-fd90d10476df"
      unitRef="shares">16000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzMtMy0xLTEtMjg4MDU_2be6fa17-2241-4690-be4f-fa4e255702c8"
      unitRef="usdPerShare">57.31</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzQtMS0xLTEtMjg4MDU_9e1a60b3-1845-41c3-a1f2-0c677e2f34e7"
      unitRef="shares">50000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="i2a5930f20d2940f2a4357322a9224439_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzQtMy0xLTEtMjg4MDU_0c461377-9da8-4b62-9a11-b138c0398826"
      unitRef="usdPerShare">58.47</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzUtMS0xLTEtMjg4MDU_5039049d-af46-4617-809c-f4720d958de2"
      unitRef="shares">823000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="i2f16b1d9b8104848916e7ec017bf2b2a_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTpiN2RjMjQ1ODIxZGY0MmJhYjdlOGRlZmU4OTgzM2NjNi90YWJsZXJhbmdlOmI3ZGMyNDU4MjFkZjQyYmFiN2U4ZGVmZTg5ODMzY2M2XzUtMy0xLTEtMjg4MDU_6989c182-88ff-41df-baae-f377459a94b4"
      unitRef="usdPerShare">65.26</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="icace5d553dd64444a04f231db888b7ef_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIyNzA_9db7a7b7-8304-4c9e-bd01-c756e054a407"
      unitRef="usdPerShare">52.09</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ie01ba116a66c474d84265161be749d7d_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE1ODM_435d9fd7-35b9-419f-b9fb-f20c757fd378"
      unitRef="usdPerShare">48.61</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i84da32e16b6e4d98bbab4cb608388e92_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE3MTU_657c2efc-3548-4fcf-b6b2-34e1dc638d49"
      unitRef="shares">16000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="ie01ba116a66c474d84265161be749d7d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIzMjE_1488a12b-a44e-44a9-ad8d-3bb0226c01f5"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="icace5d553dd64444a04f231db888b7ef_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzIzMjE_f46a8775-5c71-4196-a141-1adb81a8b074"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <cgnx:NumberOfGroupsWithinEmployeePopulation
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI0NTE_f840c723-ab31-429a-b161-9ab5c7fadb04"
      unitRef="group">2</cgnx:NumberOfGroupsWithinEmployeePopulation>
    <cgnx:EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI2MDc_94adf9a4-c7b8-44c9-a5ad-2e868d80a7e5"
      unitRef="number">0.08</cgnx:EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement>
    <cgnx:EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI2NzA_b0a3f918-ce62-479c-9a6d-9083d43072f8"
      unitRef="number">0.12</cgnx:EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI4MzE_40190433-a2c8-4958-857f-bd5fa21b2062"
      unitRef="usd">255000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI4Nzk_2cd86aeb-a2fa-48cb-90b8-b78b657d66e6"
      unitRef="usd">1787000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzI5MzI_ef8ffe60-f686-4fd4-b12d-12b03061ffa1"
      unitRef="usd">499000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMwODU_e3e7db1c-72b8-4ab8-8a05-7457c2b40ecb"
      unitRef="usd">47690000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMxNTg_d0b240c6-4649-4fa0-90ad-a0986d890522">P1Y4M24D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMyNjE_91a353a9-a1f0-427e-a45f-93341ecdcce1"
      unitRef="usd">43774000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzMzNzc_e9357901-b88f-4935-95ea-d630c2c904f6"
      unitRef="usd">6764000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0MDI_3a54ca76-4bcd-4050-9708-933c33b8bb6f"
      unitRef="usd">42661000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0MDk_ebcb4e9a-8e03-4844-a575-55c88e0cbb35"
      unitRef="usd">6569000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0Mzg_f4c0ef22-d993-41b7-a1e0-a3af7dc99872"
      unitRef="usd">45589000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM0NDU_26fb8698-ff7f-4810-a489-61f63477f86d"
      unitRef="usd">7756000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:ShareBasedCompensation
      contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzEwOTk1MTE2MzE5OTc_ed05ca7a-ab66-4d57-901f-ce6c35841f3f"
      unitRef="usd">1401000</us-gaap:ShareBasedCompensation>
    <us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90ZXh0cmVnaW9uOjhkNGZkZmYwYzFiMzQ1MzVhMDM5NjY0OTI5ZDI1Nzg4XzM3MTI_1fa6fcdf-f452-4462-bced-3a9250617cb1">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table presents the stock-based compensation expense by caption for each period presented on the Consolidated Statements of Operations (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.561%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:51.176%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.318%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.534%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.320%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#ee2724;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cost of revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,345&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,365&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,504&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Research, development, and engineering&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;13,535&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,387&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,748&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Selling, general, and administrative&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;28,894&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;27,909&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;28,337&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;43,774&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;42,661&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;45,589&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ia5a436cb2a4b40208126b213a56803a5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItMS0xLTEtMjg4MDU_9b9d6814-1941-4683-bf3e-a50c2d5102df"
      unitRef="usd">1345000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="id25aced7c5bb44fe800cc559f6166ff8_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItMy0xLTEtMjg4MDU_68bc5b9a-551d-4bc6-8015-d95bf1f6996a"
      unitRef="usd">1365000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i2f165371239b461d8c3a62bad05a3b86_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzItNS0xLTEtMjg4MDU_1df58d7c-cdcf-45cf-a1cf-87524c61c922"
      unitRef="usd">1504000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if8ab3d4c8f6a477f9e4c9e2b8888052a_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtMS0xLTEtMjg4MDU_fd2888ba-54ec-4e9d-924a-25d7994d2aa7"
      unitRef="usd">13535000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i6b6b154e38b2410788bce4314a3d47bf_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtMy0xLTEtMjg4MDU_5c072872-d6b1-4728-8238-9de9a3ccf30b"
      unitRef="usd">13387000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="id16927732c3f42ae9f82e1e9ddd307ed_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzMtNS0xLTEtMjg4MDU_bc8f78b7-a263-4c11-9f2a-cbef27ee3ed0"
      unitRef="usd">15748000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i52df1bc9391d4aeeb11bfa4d9b3d10b8_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtMS0xLTEtMjg4MDU_86d22ad4-434c-4f82-85dd-6fea0e164a58"
      unitRef="usd">28894000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i5b1d16e2e3c74de6973268b28ba5fc9c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtMy0xLTEtMjg4MDU_2e8c5937-e367-479f-a0ec-9f1deae108ec"
      unitRef="usd">27909000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="if66ef68195be46f98ef233ab367cb7c7_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzQtNS0xLTEtMjg4MDU_efc8d2d3-74e1-454d-b229-568665d36840"
      unitRef="usd">28337000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtMS0xLTEtMjg4MDU_3203b5d6-5d7b-40df-a6f0-3e8b7b77c7fa"
      unitRef="usd">43774000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtMy0xLTEtMjg4MDU_c7a8a496-3072-4157-bf81-0df30d0bc0a6"
      unitRef="usd">42661000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjAvZnJhZzo4ZDRmZGZmMGMxYjM0NTM1YTAzOTY2NDkyOWQyNTc4OC90YWJsZTowNjQ4YTI2ZGI3NTE0MzliYjQ0NzkxMTVjZjA3ZmI1Ny90YWJsZXJhbmdlOjA2NDhhMjZkYjc1MTQzOWJiNDQ3OTExNWNmMDdmYjU3XzYtNS0xLTEtMjg4MDU_6c29ccbd-2dd8-4970-8340-69d457daad9c"
      unitRef="usd">45589000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzczNA_af1347f2-e889-4042-a627-61511b1d1a06">Employee Savings PlanUnder the Company's Employee Savings Plan, a defined contribution plan, all U.S. employees who have attained age 21 may contribute up to 100% of their pay on a pre-tax basis under the Company's Employee Savings Plan, subject to the annual dollar limitations established by the Internal Revenue Service ("IRS"). The Company matches 50% of the first 6% of pay an employee contributes. Company contributions vest 25%, 50%, 75%, and 100% after one, two, three, and four years of continuous employment with the Company, respectively. Company contributions totaled $2,898,000 in 2021, $2,636,000 in 2020, and $2,729,000 in 2019. Cognex stock is not an investment alternative and Company contributions are not made in the form of Cognex stock.</us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock>
    <cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzE0OQ_10ac3430-45a5-4ff2-a71c-0d4832d6cbfd">P21Y</cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan>
    <us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzE3Mw_c013a6ec-f4e3-4fae-8000-f58b4c7e6a2d"
      unitRef="number">1</us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzM2NQ_d55155f3-1e13-4115-8f88-51300f74388c"
      unitRef="number">0.50</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzM4MQ_b15230f5-d4d4-45d5-9281-ab5e5fc9d70d"
      unitRef="number">0.06</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercent>
    <cgnx:CompanyContributionsVestAtEndOfOneYear
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ0Mw_67d6c804-17ca-4d6a-a2b2-a10eef965e84"
      unitRef="number">0.25</cgnx:CompanyContributionsVestAtEndOfOneYear>
    <cgnx:CompanyContributionsVestAtEndOfTwoYear
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ0Nw_6ed33f74-f2e8-430d-a300-56e0e2442dd4"
      unitRef="number">0.50</cgnx:CompanyContributionsVestAtEndOfTwoYear>
    <cgnx:CompanyContributionsVestAtEndOfThreeYears
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ1MQ_3eec1737-dec1-49bb-bd8e-c279058017f9"
      unitRef="number">0.75</cgnx:CompanyContributionsVestAtEndOfThreeYears>
    <cgnx:CompanyContributionsVestAtEndOfFourYears
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzQ1OQ_4a7f83f7-6316-4c2b-b8f0-e3331800cc35"
      unitRef="number">1</cgnx:CompanyContributionsVestAtEndOfFourYears>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzU4Nw_2f1b8875-c302-4257-8745-3436363021fd"
      unitRef="usd">2898000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzU5Nw_7766a1eb-0ac0-4bdc-8b10-d4f876146f05"
      unitRef="usd">2636000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNjYvZnJhZzozYjMxMzJiMzA5NTk0YmU4OTg5MTMwZDAwNmQ4YTVjYy90ZXh0cmVnaW9uOjNiMzEzMmIzMDk1OTRiZTg5ODkxMzBkMDA2ZDhhNWNjXzYxMQ_392c5b55-3b41-4e15-9863-b2cf4ba6e416"
      unitRef="usd">2729000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0ODU_c73f7911-5cdf-478d-b89d-80abe365eac2">Income Taxes&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Domestic income before taxes was $121,729,000 in 2021, $39,425,000 in 2020, and $31,396,000 in 2019. Foreign income before taxes was $197,171,000 in 2021, $147,486,000 in 2020, and $131,598,000 in 2019. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income tax expense (benefit) consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:48.680%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.151%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.151%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.154%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;27,870&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,854&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,372&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;921&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,406&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,197&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;41,648&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,278&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;48,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(19,266)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(18,266)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;352,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(769)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(556)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;183&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;17,406&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(442,494)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(2,629)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,553)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(89,503)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39,019&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(40,871)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A reconciliation of the U.S. federal statutory corporate tax rate to the Company&#x2019;s income tax expense (benefit), or effective tax rate, was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.296%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.614%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense at U.S. federal statutory corporate tax rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;21&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State income taxes, net of federal benefit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign tax rate differential&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(5)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(9)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Tax credit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to employee stock options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to tax return filings&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Discrete tax expense related to German withholding&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax expense related to migration of acquired IP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(268)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax expense related to GILTI impact of change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;214&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other discrete tax events&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense (benefit)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;12&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(25)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Change in Accounting Policy&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In 2019, the Company elected to change its method of accounting for the United States Global Intangible Low-Taxed Income (GILTI) tax from recording the tax impact in the period it is incurred to recognizing deferred taxes for temporary tax basis differences expected to reverse as GILTI tax in future years. The change is considered preferable, as it appropriately matches the Company's current and deferred income tax implications related to the change in international tax structure noted above.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The change in this accounting policy impacted the Company's 2019 reported results as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Statement of Operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income before income tax expense&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162,994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162,994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense (benefit)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(40,871)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(393,317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;352,446&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net income&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;203,865&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;556,311&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(352,446)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="6" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net income per weighted-average common and common-equivalent share:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.19&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.25&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2.06)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.17&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2.01)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Balance Sheet&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;449,519&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;469,621&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(20,102)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;332,344&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;332,344&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Statement of Shareholders' Equity&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Retained earnings&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;753,268&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,105,714&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(352,446)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Discrete Tax Items&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income tax expense included a decrease of $11,036,000 in 2021, $12,788,000 in 2020, and $6,472,000 in 2019 related to stock options, primarily from the excess tax benefit arising from the difference between the deduction for tax purposes and the compensation cost recognized for financial reporting purposes from stock option exercises. The Company cannot predict the level of stock option exercises by employees in future periods.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income tax expense in 2021 and 2020 also included discrete tax items related to the final true-up of the prior year's tax accrual upon filing the related tax return. In 2020, this included a tax benefit of $13,984,000 primarily to recognize a foreign tax benefit on certain gains taxed outside of the United States based on clarifications to rules relating to the use of foreign tax credits. This benefit was partially offset by tax expense for a transfer price adjustment in China of $3,267,000 and smaller tax expense adjustments related to foreign tax filings of $843,000.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In 2020, interpretations of a German law relating to withholding taxes on intellectual property rights emerged. The Company conducted a careful review of the interpretation, submitted required tax filings, and believes it has adequate reserves for this German tax exposure.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In 2019, the Company made changes to its international tax structure as a result of legislation by the European Union regarding low tax structures that resulted in an intercompany sale of intellectual property. The Company recorded an associated deferred tax asset and income tax benefit of $437,500,000 in Ireland based on the fair value of the intellectual property, that is being realized over 15 years as future tax deductions. From a United States perspective, the sale was disregarded, and any future deductions claimed in Ireland were added back to taxable income as part of GILTI minimum tax. The Company recorded an associated deferred tax liability and income tax expense of $350,000,000, representing the GILTI minimum tax related to the fair value of the intellectual property. The result of these transactions was a net discrete tax benefit of $87,500,000. Management expects an immaterial impact on its current effective tax rate excluding discrete items in future years as a result of this change.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;In 2019, in connection with the acquisition of Sualab, Co. Ltd., the Company migrated acquired intellectual property to certain subsidiaries to align with its corporate tax structure. As a result of this transaction, the Company recorded a discrete tax expense of $28,528,000, which included a reserve of $3,700,000 for certain related tax uncertainties. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Tax Reserves&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the reserve for income taxes, excluding gross interest and penalties, were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.158%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.642%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,591&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,383&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,184)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,952&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(280)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;525&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(485)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;13,812&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company&#x2019;s reserve for income taxes, including gross interest and penalties, was $15,808,000 as of December 31, 2021, which included $14,780,000 classified as a non-current liability and $1,028,000 recorded as a reduction to non-current deferred tax assets. The Company's reserve for income taxes, including gross interest and penalties, was $15,285,000 as of December 31, 2020, which included $14,257,000 classified as a non-current liability and $1,028,000 recorded as a reduction to non-current deferred tax assets. The amount of gross interest and penalties included in these balances was $1,996,000 and $1,332,000 as of December&#160;31, 2021 and 2020, respectively. If the Company&#x2019;s tax positions were sustained or the statutes of limitations related to certain positions expired, these reserves would be released and income tax expense would be reduced in a future period. As a result of the expiration of certain statutes of limitations, there is a potential that a portion of these reserves could be released, which would decrease income tax expense by approximately $2,000,000 to $3,500,000 over the next twelve months.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company has defined its major tax jurisdictions as the United States, Ireland, China, and Korea and within the United States, Massachusetts. The statutory tax rate is 12.5% in Ireland, 25% in China, and 22% in Korea, compared to the U.S. federal statutory corporate tax rate of 21%. These differences resulted in a favorable impact to the effective tax rate of 5 percentage points for 2021, 6 percentage points for 2020, and 9 percentage points for 2019. Management has determined that earnings from its legal entity in China will be indefinitely reinvested to provide local funding for growth, and that earnings from all other jurisdictions will not be indefinitely reinvested. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Within the United States, the tax years 2017 through 2020 remain open to examination by the Internal Revenue Service ("IRS") and various state taxing authorities. The tax years 2016 through 2020 remain open to examination by various taxing authorities in other jurisdictions in which the Company operates. The Company is under audit by the IRS for the tax years 2017 and 2018. Additionally, the Company is under audit by the Commonwealth of Massachusetts for tax years 2017 and 2018. Management believes the Company is adequately reserved for these &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;audits. The final determination of tax audits could result in favorable or unfavorable changes in our estimates. Any reserves associated with this audit period will not be released until the issue is settled or the audit is concluded. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Interest and penalties included in income tax expense were $281,000, $340,000, and $116,000 in 2021, 2020, and 2019, respectively.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Cash paid for income taxes totaled $49,435,000 in 2021, $33,695,000 in 2020, and $13,443,000 in 2019.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Deferred Tax Assets and Liabilities&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred tax assets and liabilities, presented on a gross basis by jurisdiction, consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:66.495%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.735%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.737%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Intangible asset in connection with change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;404,526&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;424,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,279&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal and state tax credit carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,051&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,171&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Inventory and revenue related&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,426&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,976&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Bonuses, commissions, and other compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,263&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,395&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,211&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign net operating losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;751&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;9,023&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,342&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;460,714&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;467,684&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(8,188)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(8,568)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;452,526&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;459,116&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;GILTI tax basis differences in connection with change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(327,725)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(339,364)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net deferred taxes&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;124,801&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;119,752&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, the Company had a deferred tax asset for foreign tax credit carryforwards of $1,730,000. These credits are considered to be realizable and will be utilized in a future period.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;As of December 31, 2021, the Company had a valuation allowance for state research and development tax credits of $11,750,000 that was not considered to be realizable. Should these credits be utilized in a future period, the reserve associated with these credits would be reversed in the period when it is determined that the credits can be utilized to offset future state income tax liabilities. As of December 31, 2021, the Company had state research and development tax credit carryforwards of $13,250,000, which will begin to expire for the 2025 tax return.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;While the deferred tax assets, net of valuation allowance, are not assured of realization, management has evaluated the realizability of these deferred tax assets and has determined that it is more likely than not that these assets will be realized. In reaching this conclusion, we have evaluated certain relevant criteria including the Company&#x2019;s historical profitability, current projections of future profitability, and the lives of tax credits, net operating losses, and other carryforwards. Should the Company fail to generate sufficient pre-tax profits in future periods, we may be required to establish valuation allowances against these deferred tax assets, resulting in a charge to current operations in the period of determination.&lt;/span&gt;&lt;/div&gt;</us-gaap:IncomeTaxDisclosureTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzYw_01f26496-e6af-47de-adc6-915f782ebacf"
      unitRef="usd">121729000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcw_ed94811a-9a41-47b5-9006-acf57af4c06e"
      unitRef="usd">39425000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0_68fb52a5-c23d-4839-bd51-829a8d862a53"
      unitRef="usd">31396000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyNg_c4f3dc51-cbae-4d9c-8ba4-0c680120a81b"
      unitRef="usd">197171000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEzNg_02cf539d-dcc5-46d8-a4f6-ce256c938f4c"
      unitRef="usd">147486000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE1MA_5fae3d1b-21fb-4049-9ddd-c7c3d312eff7"
      unitRef="usd">131598000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MDU_c1dae69d-ea71-4760-9db0-9883953fe039">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Income tax expense (benefit) consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:48.680%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.151%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.151%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.154%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Current:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;27,870&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;160&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,854&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,372&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;921&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2,108&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;8,406&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,197&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;30,670&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;41,648&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;14,278&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;48,632&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(19,266)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(18,266)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;352,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(769)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(556)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;183&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;17,406&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;15,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(442,494)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(2,629)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,553)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(89,503)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;39,019&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(40,871)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:top"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtMS0xLTEtMjg4MDU_b4d3fc40-096d-4ae5-8211-5ac47b6d3027"
      unitRef="usd">27870000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtMy0xLTEtMjg4MDU_f5ea76b0-37e8-4f9b-aa88-d0f76a7feb9b"
      unitRef="usd">160000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzMtNS0xLTEtMjg4MDU_ac7beb9e-8df5-409c-80c3-b4e4b370e4f8"
      unitRef="usd">15854000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtMS0xLTEtMjg4MDU_eef03ef0-6a70-4657-977f-16221c0ed392"
      unitRef="usd">5372000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtMy0xLTEtMjg4MDU_45a3d871-b087-4f9f-8923-bb8aad392a55"
      unitRef="usd">921000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzQtNS0xLTEtMjg4MDU_83d24008-7077-49a2-b4ca-5f56779a8278"
      unitRef="usd">2108000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtMS0xLTEtMjg4MDU_944f2fc3-a1fb-43c3-932c-9b609ffd3923"
      unitRef="usd">8406000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtMy0xLTEtMjg4MDU_369d15ed-77b8-473e-b301-873768a75837"
      unitRef="usd">13197000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzUtNS0xLTEtMjg4MDU_8a1b9c54-e92e-4176-83ca-f2ad77339a4c"
      unitRef="usd">30670000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtMS0xLTEtMjg4MDU_e3b295d5-5334-401c-bd6e-0e82a67611cd"
      unitRef="usd">41648000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtMy0xLTEtMjg4MDU_e906f24b-1c75-420e-be30-6a2863b17f05"
      unitRef="usd">14278000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzYtNS0xLTEtMjg4MDU_43b3a535-97eb-42f7-9896-5e15395bbdb7"
      unitRef="usd">48632000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtMS0xLTEtMjg4MDU_e3066966-66f8-4115-bd0a-a7e4c39941a0"
      unitRef="usd">-19266000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtMy0xLTEtMjg4MDU_36fe1fd3-cea1-4ecc-9218-a643a1312d5b"
      unitRef="usd">-18266000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzgtNS0xLTEtMjg4MDU_748e878d-ef68-4152-9b92-388e4dfca823"
      unitRef="usd">352808000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktMS0xLTEtMjg4MDU_f854523b-d901-4049-8b7f-c3cc635520f5"
      unitRef="usd">-769000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktMy0xLTEtMjg4MDU_312a261c-f9d6-442b-906b-738290a7a1dc"
      unitRef="usd">-556000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzktNS0xLTEtMjg4MDU_21b221aa-ee6b-4642-99cb-9ea3ceb45c90"
      unitRef="usd">183000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTEtMS0xLTI4ODA1_5400c127-2f4f-41f4-ba8a-367c0e763080"
      unitRef="usd">17406000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTMtMS0xLTI4ODA1_78843ee9-4d35-4812-a100-bf3b2c09c2bf"
      unitRef="usd">15269000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEwLTUtMS0xLTI4ODA1_69da7260-83ad-4299-a25a-842f5b95daa4"
      unitRef="usd">-442494000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTEtMS0xLTI4ODA1_e4b44265-f153-4b5b-ace8-3519fb22ae13"
      unitRef="usd">-2629000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTMtMS0xLTI4ODA1_2448e1e5-fc22-4bf1-a9d9-b2e0de0804d0"
      unitRef="usd">-3553000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzExLTUtMS0xLTI4ODA1_88ec9e3b-f7de-4662-a917-ba41aac6f8cb"
      unitRef="usd">-89503000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTEtMS0xLTI4ODA1_579d746c-59ca-470d-ac61-dc40e3f04d0c"
      unitRef="usd">39019000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTMtMS0xLTI4ODA1_32748354-bff6-465f-afa6-7ad53a699120"
      unitRef="usd">10725000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MTY5MGNiNGQ1OTc0NWY2YmNjNmZkYzI0MzViMmIwNy90YWJsZXJhbmdlOjgxNjkwY2I0ZDU5NzQ1ZjZiY2M2ZmRjMjQzNWIyYjA3XzEyLTUtMS0xLTI4ODA1_ea3c9dba-9590-4051-90bd-40eda09926bb"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MjM_f41c2f11-e2cc-44da-9c99-88beb0367e11">&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;A reconciliation of the U.S. federal statutory corporate tax rate to the Company&#x2019;s income tax expense (benefit), or effective tax rate, was as follows:&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:62.296%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.613%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.532%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.614%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year&#160;Ended&#160;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense at U.S. federal statutory corporate tax rate&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;21&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;State income taxes, net of federal benefit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign tax rate differential&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(5)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(9)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Tax credit&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to employee stock options&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(3)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to tax return filings&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%"&gt;Discrete tax expense related to German withholding&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax expense related to migration of acquired IP&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;18&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax benefit related to change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(268)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Discrete tax expense related to GILTI impact of change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;214&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other discrete tax events&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense (benefit)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;12&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(25)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;%&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItMS0xLTEtMjg4MDU_41b592fc-4833-4245-bcc4-3500fc9b12a3"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItMy0xLTEtMjg4MDU_d8a9a86e-d3a4-4968-a616-1cfdf59b04b7"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzItNS0xLTEtMjg4MDU_3f25d1cf-79ab-4436-8c2e-5da31c3e4042"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtMS0xLTEtMjg4MDU_d98d1311-03f9-4e42-afcd-33a91b34dabc"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtMy0xLTEtMjg4MDU_6c487358-a325-484d-b1aa-a7c350dafc68"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzMtNS0xLTEtMjg4MDU_2919218e-b7c8-43f1-990f-2d041b95a787"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtMS0xLTEtMjg4MDU_db7c5db6-5922-44ce-ad3c-681d46a5ba20"
      unitRef="number">-0.05</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtMy0xLTEtMjg4MDU_a116b0da-0a0a-4cbf-8cdc-22ceedb8fd37"
      unitRef="number">-0.06</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzQtNS0xLTEtMjg4MDU_d1fb5a9d-f106-41eb-9e7d-514b2dae7f1e"
      unitRef="number">-0.09</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtMS0xLTEtMjg4MDU_8fc5c00d-f4ad-4540-8c8e-625ce228d838"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtMy0xLTEtMjg4MDU_c43ad427-d45f-4833-8519-6e93b5b4c35d"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzUtNS0xLTEtMjg4MDU_f9ec83ee-a4fd-4a48-b200-1dcbff8e0d9d"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtMS0xLTEtMjg4MDU_45ba0e7e-5800-47e0-93c9-c9a2ee478a6b"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtMy0xLTEtMjg4MDU_b459da30-1017-4f43-b373-302f440e0f85"
      unitRef="number">0.07</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzYtNS0xLTEtMjg4MDU_2d47bc4c-383b-4591-8882-e6fc90640a10"
      unitRef="number">0.04</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctMS0xLTEtMjg4MDU_1ff6f22b-3455-4c54-81df-f0525e2bbc1c"
      unitRef="number">-0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctMy0xLTEtMjg4MDU_af4c8482-f7ee-43a9-bbc7-a44250a51288"
      unitRef="number">-0.05</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzctNS0xLTEtMjg4MDU_a0117afd-9e50-432d-833a-ee139f225690"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtMS0xLTEtMjg4MDU_5e7ed789-10f2-48ea-9dd7-1dd515be1103"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtMy0xLTEtMjg4MDU_7aacf694-4611-457d-9d9b-d202031d9a20"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzgtNS0xLTEtMjg4MDU_c8eb4369-3057-46fa-94d5-b9e1c6a77fdb"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTEtMS0xLTI4ODA1_b63f568e-faba-4759-b403-1421ed3e24aa"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTMtMS0xLTI4ODA1_00f2f91b-37d3-4f3d-bf5f-b386e144f6e6"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEwLTUtMS0xLTI4ODA1_efb6df13-75b4-489f-828b-d0c4d41b5236"
      unitRef="number">0.18</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTEtMS0xLTI4ODA1_f8515d95-8061-4544-9ca9-b9bf7ef2cbd6"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTMtMS0xLTI4ODA1_cd253062-ddbb-4853-9bd6-81fe99a37064"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzExLTUtMS0xLTI4ODA1_d6cb9a53-5f49-4fb0-ac67-84f2985176ae"
      unitRef="number">-2.68</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTEtMS0xLTI4ODA1_34458d96-2e97-4d51-b598-14ed3ac01af5"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTMtMS0xLTI4ODA1_788fc85d-22fa-4355-b33e-743ae6833e7d"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzEyLTUtMS0xLTI4ODA1_f28ce59f-fd46-416e-b9f1-facc35997219"
      unitRef="number">2.14</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTEtMS0xLTI4ODA1_fe915573-d6dd-4922-a1e8-ebbcfdffc6f7"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTMtMS0xLTI4ODA1_1753b2aa-e580-440c-ac63-7bd6fa615e3c"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE0LTUtMS0xLTI4ODA1_1cddc0f7-b3eb-4189-b5d4-cd3e7268682c"
      unitRef="number">-0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTEtMS0xLTI4ODA1_2bb93242-02e3-4da3-8ee3-66c6f1a50e32"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTMtMS0xLTI4ODA1_1d41b714-c997-46f1-996f-dfc9a911c701"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE1LTUtMS0xLTI4ODA1_ae2eade7-178e-4ac0-ac12-f9a25ebb8ea5"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTEtMS0xLTI4ODA1_57f83aa1-fdf5-4929-bbe4-655385dacc7d"
      unitRef="number">0.12</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTMtMS0xLTI4ODA1_74a6c74e-b8c5-454b-b5fb-aafb6b964009"
      unitRef="number">0.06</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo0ZGE3MzVmMmE0NWU0MmI3YWQ5MDBlYzRmMTlhOWY4Mi90YWJsZXJhbmdlOjRkYTczNWYyYTQ1ZTQyYjdhZDkwMGVjNGYxOWE5ZjgyXzE2LTUtMS0xLTI4ODA1_57055a61-3699-4825-8e8a-a1e987d5ec65"
      unitRef="number">-0.25</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfChangeInAccountingEstimateTextBlock
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg0ODY_09d6c586-98cd-4ead-92ef-b9362a527f1c">&lt;div style="margin-bottom:8pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The change in this accounting policy impacted the Company's 2019 reported results as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Statement of Operations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income before income tax expense&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162,994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162,994&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Income tax expense (benefit)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(40,871)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(393,317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;352,446&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net income&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;203,865&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;556,311&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(352,446)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:9pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:3pt double #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="6" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net income per weighted-average common and common-equivalent share:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.19&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.25&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2.06)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1.16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3.17&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(2.01)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Balance Sheet&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;449,519&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;469,621&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(20,102)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred tax liabilities&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;332,344&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;332,344&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-bottom:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.936%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.520%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.821%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:10.582%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline"&gt;Statement of Shareholders' Equity&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="15" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#160;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As reported under the new accounting policy&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;As computed under the previous accounting policy&lt;br/&gt;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of change&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Retained earnings&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;753,268&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,105,714&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(352,446)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfChangeInAccountingEstimateTextBlock>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtMS0xLTEtMjg4MDU_e589dbeb-1c5c-4204-aa99-488972bc8ae7"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtMy0xLTEtMjg4MDU_d995ea18-8495-4fbb-88b1-31f1ecd76df3"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzMtNS0xLTEtMjg4MDU_c585896d-a4b6-4e38-bfd2-ef9e3d6ac161"
      unitRef="usd">0</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtMS0xLTEtMjg4MDU_9600fdc1-1a61-40d1-9dbf-912f39655add"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtMy0xLTEtMjg4MDU_c6366db9-c0ed-4f77-90e3-9c66f3482b6c"
      unitRef="usd">-393317000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzQtNS0xLTEtMjg4MDU_d0172786-0bca-40f9-a86d-cb14ffb01f52"
      unitRef="usd">352446000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtMS0xLTEtMjg4MDU_2506ecde-e514-42d3-afd7-f66fcc79cc42"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtMy0xLTEtMjg4MDU_f3e25805-ceff-4669-9b6b-b134217caa23"
      unitRef="usd">556311000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzUtNS0xLTEtMjg4MDU_05730576-ae44-45b4-afed-3833970b78e7"
      unitRef="usd">-352446000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtMS0xLTEtMjg4MDU_879ced48-c03e-4c2b-a509-8079da797de4"
      unitRef="usdPerShare">1.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtMy0xLTEtMjg4MDU_c4bab9b6-9db6-496f-a129-e1fd9800166f"
      unitRef="usdPerShare">3.25</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzgtNS0xLTEtMjg4MDU_0e1774fd-66fd-4e91-8cde-79fc37f15fc4"
      unitRef="usdPerShare">-2.06</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktMS0xLTEtMjg4MDU_f1b424df-7e10-4ed6-ab6b-b0ee8ec8beb8"
      unitRef="usdPerShare">1.16</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i9568c4e4a0874adbbd54fef546d68a10_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktMy0xLTEtMjg4MDU_bfaeb174-d9f8-4979-91fc-c8d7cfef2372"
      unitRef="usdPerShare">3.17</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i4e18898fe1bc40759e924f6337eb36ea_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTo4MjUyYWI1NzAyM2Q0NTE2YmY1MjU5NDFmYTRjN2UwNC90YWJsZXJhbmdlOjgyNTJhYjU3MDIzZDQ1MTZiZjUyNTk0MWZhNGM3ZTA0XzktNS0xLTEtMjg4MDU_f716c406-f7fd-4d15-aa66-ff5f39b33438"
      unitRef="usdPerShare">-2.01</us-gaap:EarningsPerShareDiluted>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtMS0xLTEtMjg4MDU_7400f06f-1240-4d3c-b031-a0a963daeffc"
      unitRef="usd">449519000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtMy0xLTEtMjg4MDU_3dca24d5-d2d7-4ff4-ad39-4e94ac6a73f4"
      unitRef="usd">469621000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzMtNS0xLTEtMjg4MDU_b640a61f-eaeb-4a39-ab25-e25af2805e42"
      unitRef="usd">-20102000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtMS0xLTEtMjg4MDU_c2a5dc30-2d2e-4c64-b766-05e24f81f3f0"
      unitRef="usd">332344000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtMy0xLTEtMjg4MDU_64da8b50-4024-4ba2-9b96-40f62b82a81a"
      unitRef="usd">0</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTpmNTk3MTNiMWE3OGM0MzcyYWFiZDMyZjU0ODQwNGRmMy90YWJsZXJhbmdlOmY1OTcxM2IxYTc4YzQzNzJhYWJkMzJmNTQ4NDA0ZGYzXzQtNS0xLTEtMjg4MDU_7fe12834-368d-4da4-a073-1c00ad492c02"
      unitRef="usd">332344000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtMS0xLTEtMjg4MDU_2cbdc561-6eb3-45e6-8f42-10ebcb6996cb"
      unitRef="usd">753268000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i210d844bbf8c44ac9ab4092887e0fc9a_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtMy0xLTEtMjg4MDU_aa43fb26-1343-40aa-81f7-96940ba5d4d8"
      unitRef="usd">1105714000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i22f2ff4a0c6b4d62832ca2df6fbe48a5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZTplZmMwYWQ3YzI3NzA0YWQ5ODBjNjg0ZTFmZDI1YTY2Mi90YWJsZXJhbmdlOmVmYzBhZDdjMjc3MDRhZDk4MGM2ODRlMWZkMjVhNjYyXzMtNS0xLTEtMjg4MDU_86d3700a-4c6a-47ea-8630-a4e6b2bc37c2"
      unitRef="usd">-352446000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMDA_a69346d3-ffb1-492c-8831-bb3e88240956"
      unitRef="usd">11036000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMTI_20ef7233-12dc-4ae1-889e-4dcc58a4b50d"
      unitRef="usd">12788000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEyMjg_c631d868-5fda-401f-bfcf-2ab476e29a08"
      unitRef="usd">6472000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="i9c502ee279f04030a69eee355d54bd16_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE3NDE_5ed3bb0a-e45b-4b86-8c9b-f79d4344416f"
      unitRef="usd">13984000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="i9f2450d3a26446f4b85444fb9284cece_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzIwMTE_8f37a195-4637-4b98-b996-71ad5798609a"
      unitRef="usd">3267000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="ia5768b0e810e4157b4eae97d0d1b08c6_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzIwODQ_93518580-4775-4831-af39-d3f8114f809e"
      unitRef="usd">843000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <cgnx:DeferredTaxAssetsForeignTaxStructureChange
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzI2OTY_c6a1da24-e293-47b0-b89f-0d49a04bbfae"
      unitRef="usd">437500000</cgnx:DeferredTaxAssetsForeignTaxStructureChange>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzMwNzg_56c4cabc-3d1b-4fb8-9d05-be2b4ba8f507"
      unitRef="usd">350000000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzMyNDA_b606a11b-c2c8-46c5-bf29-eaa3ad04d590"
      unitRef="usd">87500000</us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar
      contextRef="i4452ed78907f4d219ac405351100fab2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzM2NDg_0884a4cd-842e-40c0-8883-befe41e6f85e"
      unitRef="usd">28528000</cgnx:EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i4bc97ab3a3094188b15fe79424b28ed5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzM2ODA_41a19472-2148-4e8f-ac9e-3f53b7369c9e"
      unitRef="usd">3700000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:SummaryOfIncomeTaxContingenciesTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MjU_e73b0503-5cd7-4219-b6f0-038e8c29d740">&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The changes in the reserve for income taxes, excluding gross interest and penalties, were as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:81.158%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:16.642%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,591&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;162&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,383&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,184)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,952&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(280)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;525&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(485)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance of reserve for income taxes as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;13,812&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:SummaryOfIncomeTaxContingenciesTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzAtMS0xLTEtMjg4MDU_c60f048b-8c46-405c-8226-15bc34bb4ea9"
      unitRef="usd">11591000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzEtMS0xLTEtMjg4MDU_ad295a2a-b5bc-4813-9349-3529c959666b"
      unitRef="usd">162000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzItMS0xLTEtMjg4MDU_c155652a-2b26-4edd-bf1f-9c1d704b9588"
      unitRef="usd">3383000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzQtMS0xLTEtMjg4MDU_9a5cdad6-2ff8-4dce-bf4b-371a40658925"
      unitRef="usd">1184000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzUtMS0xLTEtMjg4MDU_1699d5fb-051d-4efe-9c9f-1c5e521f0488"
      unitRef="usd">13952000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzYtMS0xLTEtMjg4MDU_ed9dcac1-b310-421c-a5c8-0bdb1bd65327"
      unitRef="usd">280000</us-gaap:UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzctMS0xLTEtMzk2ODU_278e88fd-443d-48f7-b81d-a6ce4c372e78"
      unitRef="usd">100000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzctMS0xLTEtMjg4MDU_019bf6d2-64a9-4e6e-94b2-f095417d5983"
      unitRef="usd">525000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzktMS0xLTEtMjg4MDU_6af22703-6eff-4175-ad5c-6e9bbd3ef315"
      unitRef="usd">485000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToyNTEyMzMyZTVhOWM0MDc4YThmOGFiZGFmNTgzYjllNC90YWJsZXJhbmdlOjI1MTIzMzJlNWE5YzQwNzhhOGY4YWJkYWY1ODNiOWU0XzEwLTEtMS0xLTI4ODA1_f949fee0-9de6-4fbd-846b-d77b67907743"
      unitRef="usd">13812000</us-gaap:UnrecognizedTaxBenefits>
    <cgnx:UnrecognizedTaxBenefitsGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ2MjU_d1b8229e-77c3-4c80-946d-962a49a79952"
      unitRef="usd">15808000</cgnx:UnrecognizedTaxBenefitsGross>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ2Njg_bf1f3fbe-fa69-4632-a293-014a768913fa"
      unitRef="usd">14780000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ3MTM_6e1a8197-8519-4c11-857d-c2629787d097"
      unitRef="usd">1028000</cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets>
    <cgnx:UnrecognizedTaxBenefitsGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ4NjA_56f1f861-710a-41d0-b682-88060cf38d71"
      unitRef="usd">15285000</cgnx:UnrecognizedTaxBenefitsGross>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ5MDM_82b0c23e-e6a6-4793-9aa1-6906a09d8e69"
      unitRef="usd">14257000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzQ5NDg_bcd3d9b4-8c51-43a8-9c4b-96f3e419eceb"
      unitRef="usd">1028000</cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzUwODU_908fb27e-0d1d-4212-95e5-469b5bfd7135"
      unitRef="usd">1996000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzUwOTI_91cd4586-8452-4f11-9b85-ea67ece8892f"
      unitRef="usd">1332000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued>
    <cgnx:MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU1NjA_739d8672-38b4-4599-bc73-1c717105e66e"
      unitRef="usd">2000000</cgnx:MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves>
    <cgnx:MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU1NjY_890e388b-376e-4be6-a126-ade9ccfc6f3d"
      unitRef="usd">3500000</cgnx:MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="iffc7295ab67445f8bd6fc5841d17366c_D20210101-20211231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU3NjM_fe237968-3269-4a7e-8063-92ef6ce812c2"
      unitRef="number">0.125</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i6a2c8b01c55f45a383585d973a17734e_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU3ODE_427a0bbc-d352-404b-b290-7bf867ba023d"
      unitRef="number">0.25</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="ia7b70df5ca144c19aa32c0b1861d055c_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEwOTk1MTE2MzY4NzM_e79126be-173b-4748-a30e-05dc15a4eedd"
      unitRef="number">0.22</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i0c3c1c01066849da8660af393f5f2d8c_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU4NTU_4b78f6d6-fffd-43e3-9c9d-32b08f5f6d97"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU5Mzc_c4e27146-7e1a-4eed-bcd8-39a6410ddd11"
      unitRef="number">-0.05</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzU5NzE_67b20751-d9ab-45fb-bec5-0f7b83006a4a"
      unitRef="number">-0.06</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzEwOTk1MTE2MzY5NTY_4a7ed864-2293-4747-a989-a0387d5e45b0"
      unitRef="number">-0.09</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY4OTY_1a9b6951-233c-4aed-9b58-5b394bb01b51"
      unitRef="usd">281000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5MDA_a04ff342-6a24-4230-a923-b7282ddf0732"
      unitRef="usd">340000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5MDg_ddad0de7-7ac9-4bbb-9b63-7b8f432fbc63"
      unitRef="usd">116000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5ODU_23bc8c94-c00f-497d-af4a-4af9921feda9"
      unitRef="usd">49435000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzY5OTU_2185f2ed-1a79-46ed-968a-a1169ebb5d9d"
      unitRef="usd">33695000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcwMDk_cca28c92-e46b-4290-8bc6-7ff547bbee83"
      unitRef="usd">13443000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzg1MzA_8224b3d3-71f6-45c7-95d0-a08e9d507856">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Deferred tax assets and liabilities, presented on a gross basis by jurisdiction, consisted of the following (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:66.495%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.735%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.737%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Intangible asset in connection with change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;404,526&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;424,156&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Stock-based compensation expense&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,279&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;13,294&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Federal and state tax credit carryforwards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;11,051&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,171&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Inventory and revenue related&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,426&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,976&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Bonuses, commissions, and other compensation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;7,263&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,932&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Depreciation&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;5,395&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,211&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign net operating losses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;751&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;9,023&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,342&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;460,714&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;467,684&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Valuation allowance&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(8,188)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(8,568)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;452,526&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;459,116&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Gross deferred tax liabilities:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;GILTI tax basis differences in connection with change in tax structure&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(327,725)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(339,364)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr style="height:14pt"&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Net deferred taxes&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;124,801&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;119,752&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
    <cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzMtMS0xLTEtMjg4MDU_7f3f1a47-3ba1-44a1-91b4-947951160202"
      unitRef="usd">404526000</cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure>
    <cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzMtMy0xLTEtMjg4MDU_73aec3d6-b4a7-4989-bd93-6e16f6db742f"
      unitRef="usd">424156000</cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzQtMS0xLTEtMjg4MDU_af9b5b53-1740-4604-b79a-e6cbab2d6d0d"
      unitRef="usd">15279000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzQtMy0xLTEtMjg4MDU_d29489a1-8203-4557-a896-0ae1752a9b84"
      unitRef="usd">13294000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzUtMS0xLTEtMjg4MDU_01612576-ade2-4b63-9323-c142b0564e2e"
      unitRef="usd">11051000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzUtMy0xLTEtMjg4MDU_3187120d-01d2-42b9-ae45-16c24a1b5600"
      unitRef="usd">10171000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzYtMS0xLTEtMjg4MDU_1ff2b573-7ac2-41d8-b9e9-a24e8bab8ec7"
      unitRef="usd">7426000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzYtMy0xLTEtMjg4MDU_346b6d5e-79a6-483c-b40e-40d57cf8de00"
      unitRef="usd">5976000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzctMS0xLTEtMjg4MDU_41a8c042-f59b-47e6-b49d-c184d7a8c734"
      unitRef="usd">7263000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzctMy0xLTEtMjg4MDU_1c6901cb-33d5-4e54-902c-9fba7964b4d1"
      unitRef="usd">4932000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther>
    <cgnx:NoncurrentDeferredTaxAssetsDeprecation
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzgtMS0xLTEtMjg4MDU_5ee575a3-9b97-4b21-9098-71d40af37d0f"
      unitRef="usd">5395000</cgnx:NoncurrentDeferredTaxAssetsDeprecation>
    <cgnx:NoncurrentDeferredTaxAssetsDeprecation
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzgtMy0xLTEtMjg4MDU_39e132c2-581b-4224-b313-b8a7e91f1502"
      unitRef="usd">4211000</cgnx:NoncurrentDeferredTaxAssetsDeprecation>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzktMS0xLTEtMjg4MDU_4d1d6b7a-7350-482c-8b2f-4ceffc5fce8c"
      unitRef="usd">751000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzktMy0xLTEtMjg4MDU_6725ff1d-c5e9-4be8-b0e6-8d3f54ca6006"
      unitRef="usd">602000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign>
    <cgnx:DeferredTaxAssetsOtherNoncurrent
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEwLTEtMS0xLTI4ODA1_803158de-9c24-499b-b303-0565bf1f2d62"
      unitRef="usd">9023000</cgnx:DeferredTaxAssetsOtherNoncurrent>
    <cgnx:DeferredTaxAssetsOtherNoncurrent
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEwLTMtMS0xLTI4ODA1_5de66853-a49e-442e-97cf-5cb58ca070eb"
      unitRef="usd">4342000</cgnx:DeferredTaxAssetsOtherNoncurrent>
    <cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzExLTEtMS0xLTI4ODA1_62df57c6-520b-467f-a435-59123145acec"
      unitRef="usd">460714000</cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross>
    <cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzExLTMtMS0xLTI4ODA1_72629142-5b2e-4402-8377-e8beb6ab0447"
      unitRef="usd">467684000</cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEyLTEtMS0xLTI4ODA1_91e00f2b-c257-45b7-9491-ed7140b18840"
      unitRef="usd">8188000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEyLTMtMS0xLTI4ODA1_393784c5-51a1-4873-9c82-54e9b9e9a641"
      unitRef="usd">8568000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEzLTEtMS0xLTI4ODA1_a1522544-ace5-45f8-8b6c-589aed0aa113"
      unitRef="usd">452526000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzEzLTMtMS0xLTI4ODA1_7fcf8fb5-f1d2-4f4a-8e8a-1b77c632c604"
      unitRef="usd">459116000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzE2LTEtMS0xLTI4ODA1_246cf6c0-6255-42ef-938a-c546de1f7be2"
      unitRef="usd">327725000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzE2LTMtMS0xLTI4ODA1_984bc615-23e8-4d54-8aaf-f3849eb37458"
      unitRef="usd">339364000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <cgnx:DeferredIncomeTaxAssetsLiabilitiesNet
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzIyLTEtMS0xLTM5NzA2_33e3df49-b980-4c7f-ab14-67a02f114c86"
      unitRef="usd">124801000</cgnx:DeferredIncomeTaxAssetsLiabilitiesNet>
    <cgnx:DeferredIncomeTaxAssetsLiabilitiesNet
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90YWJsZToxYjk1ZTU3ZWUzYzM0ODIyODlhMDBjNjlmZTc4OWIxZS90YWJsZXJhbmdlOjFiOTVlNTdlZTNjMzQ4MjI4OWEwMGM2OWZlNzg5YjFlXzIyLTMtMS0xLTQxNjU4_b03e8b80-0830-499f-b6b1-134e350a969e"
      unitRef="usd">119752000</cgnx:DeferredIncomeTaxAssetsLiabilitiesNet>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsForeign
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzE2NDkyNjc0NTgxMjU_25f9350c-39e2-4cad-9374-3362ee314132"
      unitRef="usd">1730000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsForeign>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="id624ea8a42db4ca6a9c8968c5c834a62_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzcyOTY_f39dfcce-cbe7-4a52-85e8-edd3be361784"
      unitRef="usd">11750000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch
      contextRef="i2d7f829283d84ef790a2db8c1f7a3fcc_I20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzIvZnJhZzo0OWFmZmE2YmY5MzI0YzUwODllZTEwOTAxOWM3ZjM2Yy90ZXh0cmVnaW9uOjQ5YWZmYTZiZjkzMjRjNTA4OWVlMTA5MDE5YzdmMzZjXzc2NzA_3c3c183e-facf-46c4-8ba8-2f690c6174bb"
      unitRef="usd">13250000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
    <us-gaap:EarningsPerShareTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzcxMQ_e0584c1d-0dcc-4696-9971-76b1e5ca59fb">Weighted Average Shares&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted-average shares were calculated as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.058%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.976%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.976%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.124%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic weighted-average common shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;176,463&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;173,489&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;171,194&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of dilutive stock awards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,453&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,103&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted weighted-average common and common-equivalent shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;179,916&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;176,592&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;175,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Stock options to purchase 497,504, 4,371,194, and 5,735,608 shares of common stock, on a weighted-average basis, were outstanding in 2021, 2020, and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. Restricted stock units totaling 605, 3,826, and 13,092 shares of common stock, on a weighted-average basis, were outstanding in 2021, 2020, and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive.&lt;/span&gt;&lt;/div&gt;</us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzcwNA_5d3c376d-9a1f-47d1-832b-e97a5d70eda2">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Weighted-average shares were calculated as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:55.058%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.976%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.976%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.124%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="15" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Year Ended December&#160;31,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Basic weighted-average common shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;176,463&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;173,489&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;171,194&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Effect of dilutive stock awards&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,453&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,103&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,075&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Diluted weighted-average common and common-equivalent shares outstanding&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;179,916&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;176,592&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;175,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000000;border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItMS0xLTEtMjg4MDU_08af47b9-1ce7-4382-aa1e-a6e52d26d292"
      unitRef="shares">176463000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItMy0xLTEtMjg4MDU_4dea4dec-8555-428e-96d5-4697595d57a3"
      unitRef="shares">173489000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzItNS0xLTEtMjg4MDU_d03dedbb-50e9-4e02-b756-9685c76716b5"
      unitRef="shares">171194000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtMS0xLTEtMjg4MDU_6296d338-3d5d-421f-acc4-a9b88fbdb834"
      unitRef="shares">3453000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtMy0xLTEtMjg4MDU_f441f917-c1e2-4a86-a4b6-cc3622d27bca"
      unitRef="shares">3103000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzMtNS0xLTEtMjg4MDU_6608bef6-1275-4447-8366-691f054b5097"
      unitRef="shares">4075000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtMS0xLTEtMjg4MDU_ded06639-23bc-4e05-8e7c-5066d06f6f2d"
      unitRef="shares">179916000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtMy0xLTEtMjg4MDU_873852bc-272c-4004-a288-94ca53bd7870"
      unitRef="shares">176592000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90YWJsZTo5YzBlZjc1OTk4Nzg0ZDE3ODFjZjliNTM4MTI5NDYwZC90YWJsZXJhbmdlOjljMGVmNzU5OTg3ODRkMTc4MWNmOWI1MzgxMjk0NjBkXzQtNS0xLTEtMjg4MDU_088cf7d0-c5dc-4e28-bf7b-e4f1251a5d05"
      unitRef="shares">175269000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i7c9f8c01dcbb4324b28ecd41ace87fd9_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEzMw_bd135b3f-738e-4b2e-ae8d-0893e81cbaff"
      unitRef="shares">497504</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i8bd1c6a0aebf4c03923831a10dbbf2a6_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEzNw_a2029492-df70-4fff-b359-1911ec0c6064"
      unitRef="shares">4371194</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i197680ce6f4a47b08921cc9e95e40369_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzE0NQ_c0afaa15-402d-4929-ae65-fe96fe69dc5e"
      unitRef="shares">5735608</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ic686f763cf704bc2867ccfd9c33dc6c7_D20210101-20211231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzEwOTk1MTE2Mjg1MzM_e9d9631d-88af-406e-9335-e3aaa10b63d5"
      unitRef="shares">605</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i35cd9fec0a4c4a84826235af293727b2_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzM5MA_a5430abd-d420-40f2-88b4-23b696f36bd3"
      unitRef="shares">3826</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ica46cebde58f4747ba082879193d850e_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xNzgvZnJhZzpkYzkwODNkOWFkMjU0NjY5ODVlMTBmOGViYjVjMWU0Ny90ZXh0cmVnaW9uOmRjOTA4M2Q5YWQyNTQ2Njk4NWUxMGY4ZWJiNWMxZTQ3XzM5Nw_7acc35d9-4ec3-4006-9d02-685e6e548f69"
      unitRef="shares">13092</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:SegmentReportingDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExODc_3e523a4c-132d-4526-af48-7aac20dd32f0">Segment and Geographic Information&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company operates in one segment, machine vision technology. The Company&#x2019;s chief operating decision maker is the chief executive officer, who makes decisions to allocate resources and assesses performance at the corporate level. The Company offers a variety of machine vision products that have similar economic characteristics, have the same production processes, and are distributed by the same sales channels to the same types of customers.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes information about geographic areas (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:28.665%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.393%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;United&#160;States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Greater China &lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;393,690&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;247,744&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;200,135&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;195,529&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;63,141&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;16,982&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;960&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,705&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;84,788&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;280,205&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;208,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;168,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;153,741&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20,014&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,278&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,764&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;86,967&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;247,689&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,061&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;135,137&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;68,496&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,487&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;95,276&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue is presented geographically based on the customer&#x2019;s country of domicile. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Revenue from a single customer accounted for 17% and 14% of total revenue in 2021 and 2020, respectively. Revenue from this customer was not greater than 10% of total revenue in 2019. Accounts receivable from this same customer accounted for 15% and 19% of total accounts receivable as of December 31, 2021 and 2020, respectively.&lt;/span&gt;&lt;/div&gt;Revenue from a second customer accounted for 13% of total revenue in 2020. Revenue from this customer was not greater than 10% of total revenue in 2021 or 2019. Accounts receivable from this same customer accounted for 11% and 20% of total accounts receivable as of December 31, 2021 and 2020, respectively.</us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:NumberOfReportableSegments
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5Xzcz_a1834e9b-4ac2-4093-96f2-072e8a6ca64f"
      unitRef="segment">1</us-gaap:NumberOfReportableSegments>
    <us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExOTI_df76ff1b-1165-4929-8dff-64d3a58375c5">&lt;div style="margin-top:5pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes information about geographic areas (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:28.665%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.243%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.389%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.533%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.393%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;United&#160;States&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Europe&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Greater China &lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;393,690&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;247,744&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;200,135&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;195,529&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,037,098&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;63,141&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;16,982&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;960&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;3,705&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;84,788&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;280,205&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;208,787&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;168,287&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;153,741&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;811,020&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;60,911&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20,014&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,278&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;4,764&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;86,967&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Year Ended December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Revenue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;247,689&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;115,061&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;135,137&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;725,625&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Long-lived assets&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;68,496&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;21,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,487&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;3,602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;95,276&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia69b052cbadd44c094541da53ba42a51_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItMS0xLTEtMjg4MDU_da7ef867-bcbc-4aab-b1ab-2ecfb9269bb2"
      unitRef="usd">393690000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="icdd53699b9af4b4388009f695891ea3f_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItMy0xLTEtMjg4MDU_6ff88039-958b-40cc-9a2d-4b3697449ab7"
      unitRef="usd">247744000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3dc436c98f1d4e0792723c1df4fcf255_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItNS0xLTEtMjg4MDU_d8c8af01-a6bb-4a80-9ac6-9e8c4d6400fe"
      unitRef="usd">200135000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ic575a52a81ce437ca78b900c07321681_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItNy0xLTEtMjg4MDU_02bcff06-af7e-41b5-811e-92516f593cf2"
      unitRef="usd">195529000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzItOS0xLTEtMjg4MDU_cb4b26ea-2895-4d4a-b0c6-e734a4e3da00"
      unitRef="usd">1037098000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="idcbb00e30a054c9b8dc545052284d730_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtMS0xLTEtMjg4MDU_9bd70e65-8a4b-4b97-b107-85ba019b9de5"
      unitRef="usd">63141000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ib4cda65b83b74a7dbc080d8fedc4d2d9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtMy0xLTEtMjg4MDU_86554e87-ad60-4558-b8cd-fe335ea39b8b"
      unitRef="usd">16982000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ib4944b90959b4b208c0bdfb2c87ee10e_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtNS0xLTEtMjg4MDU_6313ae38-0c78-4e97-91dd-c01266212ca2"
      unitRef="usd">960000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ic40beac310a64112b7eb01f6089573c1_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtNy0xLTEtMjg4MDU_0d7429e9-c016-4ee4-9185-19a127baf977"
      unitRef="usd">3705000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzMtOS0xLTEtMjg4MDU_85125cc8-a495-4e4b-a845-1086cca63759"
      unitRef="usd">84788000</us-gaap:NoncurrentAssets>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="id5d24b55c6524d6790756827a7d2e825_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtMS0xLTEtMjg4MDU_4b119ac3-d757-4492-8da8-23437be94a3b"
      unitRef="usd">280205000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib6352ba54d8946149998f1a1bbe233e0_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtMy0xLTEtMjg4MDU_3bfbcf66-327c-4537-948f-7f05e4f9369f"
      unitRef="usd">208787000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie0c6ac0bfff04b6a9c0d23f2260b4c7f_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtNS0xLTEtMjg4MDU_2c497f8b-eb4c-4fe0-b761-62744957ac12"
      unitRef="usd">168287000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ibf814c6bf04c4e9f9549f0a609b74a55_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtNy0xLTEtMjg4MDU_e39904f7-3037-4043-88ab-dbad16bdd5a2"
      unitRef="usd">153741000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzUtOS0xLTEtMjg4MDU_1bc88923-1afb-40d4-8270-54e654b6cb90"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="iaa126896ec044da89c6508ff396378a1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtMS0xLTEtMjg4MDU_8374e9c1-8846-4f87-943c-658aedb3c5ab"
      unitRef="usd">60911000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ibf2b1fc85cfa4174b619517220508ae0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtMy0xLTEtMjg4MDU_3904e8bc-9b3f-4aa7-937e-ccfce0cef826"
      unitRef="usd">20014000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i3c5581736dbd4ad78c3d6e655e93c4ea_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtNS0xLTEtMjg4MDU_0c6ab6c5-1cc9-42a6-9959-c344810a7ed4"
      unitRef="usd">1278000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ife8b2f31ce1a4b4faa1a745448f716d4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtNy0xLTEtMjg4MDU_7555d633-d136-4c48-a6b2-a028df08ea4e"
      unitRef="usd">4764000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ic4a82097975f4c7480e06bdb28375b4a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzYtOS0xLTEtMjg4MDU_f66a2abc-c697-47cd-b7eb-8a9bf008f4c2"
      unitRef="usd">86967000</us-gaap:NoncurrentAssets>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i14b5eafbd9ff4be7b9cc2e0919d2dbc7_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtMS0xLTEtMjg4MDU_f0140f10-254e-48e7-9ebc-ec5484678d7b"
      unitRef="usd">247689000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib7c3d649737648878f8b4fc1a2876f26_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtMy0xLTEtMjg4MDU_e593257e-3f76-4416-9004-5e120bed8474"
      unitRef="usd">227738000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i717eab74d0194494b7a2294ffc0e7273_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtNS0xLTEtMjg4MDU_20d8a720-39df-40a4-86a1-fd9e6477e08f"
      unitRef="usd">115061000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i4921f86f652d4f2e94c4bf9eb25c62e9_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtNy0xLTEtMjg4MDU_2dfbe906-aea1-4b28-a83e-46d61bf81b46"
      unitRef="usd">135137000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i812edbd5d6934fd0927c267aff739860_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzgtOS0xLTEtMjg4MDU_af4ab4dc-e9c2-4c4f-9891-d7db6cc28fa5"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="i6413254449a541988fcda017a15d0532_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktMS0xLTEtMjg4MDU_77af6107-6286-4af3-8798-88e8be2551ad"
      unitRef="usd">68496000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ieee8eed26dbb44f6aae613473b0dd2ef_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktMy0xLTEtMjg4MDU_2f4a3cd4-d298-4ae9-a8e7-5e07fd12c1f8"
      unitRef="usd">21691000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ic693d5b307414a6c964e0ec425adb970_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktNS0xLTEtMjg4MDU_30f31139-1094-4ef0-b7f5-dbf9b664d0ee"
      unitRef="usd">1487000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ic325874dd99f48839c0a0457e159b140_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktNy0xLTEtMjg4MDU_d28510e3-c745-46b6-9235-9572f0935fc6"
      unitRef="usd">3602000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ia991b13c7b074439964a26d579235ee4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90YWJsZTo3ZWNhNGU4YzI5MzA0YjI1OTdkMzljYTc1NDhiNjVhMy90YWJsZXJhbmdlOjdlY2E0ZThjMjkzMDRiMjU5N2QzOWNhNzU0OGI2NWEzXzktOS0xLTEtMjg4MDU_3dbdd8d9-a4ec-48fc-855f-0862178dd7f4"
      unitRef="usd">95276000</us-gaap:NoncurrentAssets>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="if4d3420bee2e4188a13523c87c8f50bf_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2Mjk5ODE_7c0b4498-10f0-4c39-a856-0bef04b89fb6"
      unitRef="number">0.17</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i7f7dc7e149214e86b41eb5b243af420c_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2Mjk5ODY_eaf33093-b293-4d26-a307-7827fe30e310"
      unitRef="number">0.14</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i4b9aad94c75f49d5ae535996bb5e0901_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzAxOTQ_58e89779-0cb7-4298-a968-cb1328f622e3"
      unitRef="number">0.15</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i7c5b8c599c9542b590f4d0e8f2ced040_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzExMjE_8a68e9e5-0396-4ad6-ac04-05e6ddbe273c"
      unitRef="number">0.19</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i64c87fe8f4fd462c8a6abc5bb13ea76c_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MDI_c1e9b0de-9697-44d2-9ed1-7b8c8b52af96"
      unitRef="number">0.13</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="iaf6c363e3eef41d1b00219abbd835f2d_D20210101-20211231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MDc_94dab11b-7f35-4606-8e1e-63288ac470fb"
      unitRef="number">0.11</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i93b04104f7b44c7996743be1d0745981_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODEvZnJhZzozMzJhMzMyZTg4YmY0NjhjOTE2MWI0NmEwMDVjNmM4OS90ZXh0cmVnaW9uOjMzMmEzMzJlODhiZjQ2OGM5MTYxYjQ2YTAwNWM2Yzg5XzEwOTk1MTE2MzA5MTI_beb44829-ba5e-4967-8b7e-e8ed9789391b"
      unitRef="number">0.20</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:BusinessCombinationDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzI3NDI_e7b5b60d-3326-4a69-ae7e-ba4dac3f44e5">Business Acquisitions&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Sualab Co., Ltd.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:5pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On October 16, 2019, the Company acquired all the outstanding shares of Sualab Co., Ltd. (Sualab), a provider of deep learning-based vision software for industrial image analysis based in Korea. The total consideration of $193,638,000 included cash payments of $170,602,000 upon closing. In the fourth quarter of 2020, the Company recorded a credit to goodwill in the amount of $1,004,000 representing a purchase price adjustment. The remaining consideration consists of deferred payments of $24,040,000 that may become payable in October 2023, contingent upon the continued employment of key talent, and is being recorded as compensation expense over the four-year period.&lt;/span&gt;&lt;/div&gt;Deteriorating global economic conditions from the COVID-19 pandemic triggered a review of long-lived assets for potential impairment in the second quarter of 2020. This review resulted in intangible asset impairment charges totaling $19,571,000 in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab. Completed technologies, in-process technologies, and customer relationships acquired from Sualab were impaired in the amounts of $10,070,000, $5,900,000, and $3,382,000, respectively.</us-gaap:BusinessCombinationDisclosureTextBlock>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzI3NQ_8a3c2d78-2e9b-487b-b41d-26735a882737"
      unitRef="usd">193638000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzMwNA_2f443ba3-eb56-4b7a-a74d-d769a9dbf23d"
      unitRef="usd">170602000</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:PaymentsForProceedsFromPreviousAcquisition
      contextRef="i237d35dadb3345778dc0eb90a293a886_D20200928-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzEwOTk1MTE2Mzc0NjY_71980b38-59ba-4baf-a11c-69d110054906"
      unitRef="usd">1004000</us-gaap:PaymentsForProceedsFromPreviousAcquisition>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="i9d7909d7f5534ecaae7d688eb528cbe5_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzUyNQ_68f123c2-3103-4d9f-8cf3-a10fd0aa6cfb"
      unitRef="usd">24040000</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIwNTM_f18dc054-73ea-4a92-b4ab-34859881e23e"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i5694e3e1d7f2467781e7455fe169436f_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzMzU_d9f130a9-401e-46f3-95cb-ef777d6c1f51"
      unitRef="usd">10070000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="ia44f7d0ad1ef42c39fdbc370ebfbe435_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzMzk_43329db6-618e-4ce9-b01a-daf02fb30f2b"
      unitRef="usd">5900000</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i709ffb5b1f3f4e8a8d0cae96d0146633_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xODcvZnJhZzoyMDBlNzg3OGNmNGE0MzM0OTdiNzA5MzZhNGVmOWU1MC90ZXh0cmVnaW9uOjIwMGU3ODc4Y2Y0YTQzMzQ5N2I3MDkzNmE0ZWY5ZTUwXzIzNDc_0a145e11-dd7a-47dd-b147-ca94007fe27f"
      unitRef="usd">3382000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzU_264b0137-75fc-49fc-b4c5-a9714a548593">Restructuring Charges&lt;div style="margin-top:6pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;On May 26, 2020, the Company's Board of Directors approved a restructuring plan intended to reduce the Company's operating costs, optimize its business model, and address the impact of the COVID-19 pandemic. The restructuring plan included a global workforce reduction of approximately 8% and office closures. The Company recorded restructuring charges from these actions totaling $15,924,000 in 2020 which are included in &#x201c;Restructuring charges&#x201d; on the Consolidated Statements of Operations. As of December 31, 2020, the majority of these actions were completed and no additional charges are expected to be incurred in future periods in relation to this restructuring plan. There were no restructuring charges recognized in 2021.&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the restructuring charges for the year ended December 31, 2020 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:72.876%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:24.194%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;One-time termination benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,159&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Contract termination costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,207&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other associated costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;558&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,924&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;One-time termination benefits included severance, health insurance, and outplacement services for 181 employees who were either terminated during the second quarter of 2020, or were notified during the second quarter of 2020 that they would be terminated at a future date. For employees not required to render service beyond a minimum retention period, the one-time termination benefits were recognized in the second quarter of 2020. Otherwise, these benefits, including retention bonuses for selected employees, were recognized over the remaining service period which was completed by December 31, 2020.&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Contract termination costs included operating lease asset impairment charges for eleven offices closed prior to the end of the contractual lease term. These costs also included the write-off of leasehold improvements and other equipment related to these abandoned offices that had no alternative use, as well as other associated operating costs, such as utilities, that the Company is obligated to pay for the remainder of the lease term. These contract termination costs were primarily recognized in the second quarter of 2020 when the Company ceased using the property for economic benefit. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Other associated costs primarily included legal fees related to the employee termination actions, which were recognized when the services were performed. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the activity in the Company&#x2019;s restructuring reserve, which is included in &#x201c;Accrued expenses&#x201d; on the Consolidated Balance Sheets (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:38.227%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.548%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;One-time Termination Benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Contract Termination Costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Other Associated Costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Restructuring charges&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,329&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;636&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;17,185&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(8,717)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(563)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(9,597)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-cash restructuring charges&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,163)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,163)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Restructuring adjustments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,170)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(13)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(78)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1,261)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;182&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;225&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,624&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;750&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,389&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,142)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(227)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(15)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1,384)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;482&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;516&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;998&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;Restructuring adjustments related to one-time termination benefits consisted primarily of the favorable true-up of severance estimates based on final agreements and health insurance estimates based on employee elections.</us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock>
    <us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent
      contextRef="i9ff3a1f2d3354f8b9e1a3862c0d45393_I20200526"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzMyMw_92c4a693-f824-4f89-8b3c-4dcfc2194f87"
      unitRef="number">0.08</us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent>
    <us-gaap:RestructuringCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzQxOA_cad14c00-8c13-4a8f-9b95-865f623d4ff1"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzM_97ef8f96-2fc4-4708-a651-5534e354caa2">&lt;div&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the restructuring charges for the year ended December 31, 2020 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:72.876%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.530%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:24.194%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Amount&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;One-time termination benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;10,159&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Contract termination costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,207&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Other associated costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;558&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15,924&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock>
    <us-gaap:RestructuringCharges
      contextRef="i37df6f70493e443da67537c212115ae6_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzEtMy0xLTEtMjg4MDU_37c5b8d5-6cf8-4a91-82a2-582c23638c3f"
      unitRef="usd">10159000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i0045cc5a44304747895b82294c5175c6_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzItMy0xLTEtMjg4MDU_25b2f15e-d1f9-457d-a41a-d9599ae7ee31"
      unitRef="usd">5207000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="if297a806261f492eba965b248dda338d_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzMtMy0xLTEtMjg4MDU_ecb3f7d8-26dc-419f-bec4-ddef4fcc83e6"
      unitRef="usd">558000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozMWZkOTU4ZTVmZmI0MTBjYTkyMTMyNjA0MTQyODMxNi90YWJsZXJhbmdlOjMxZmQ5NThlNWZmYjQxMGNhOTIxMzI2MDQxNDI4MzE2XzQtMy0xLTEtMjg4MDU_e21f38c2-207a-475a-98e4-898ceb0e7dec"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminated
      contextRef="i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzkxOA_3b3ca0cc-8065-42ac-8c06-bdd2b3b0f1bf"
      unitRef="employees">181</us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminated>
    <us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90ZXh0cmVnaW9uOmE3MjllZTg4NDNjZDQ0MWM4NDRlNGQ3ODkxNDNmMWUwXzI1NzQ_884fb63b-838d-4527-af0d-759aa82f112c">&lt;div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The following table summarizes the activity in the Company&#x2019;s restructuring reserve, which is included in &#x201c;Accrued expenses&#x201d; on the Consolidated Balance Sheets (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:38.227%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.104%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:13.081%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.788%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.384%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:14.548%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;One-time Termination Benefits&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Contract Termination Costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Other Associated Costs&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Total&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2019&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Restructuring charges&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;11,329&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5,220&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;636&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;17,185&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(8,717)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(317)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(563)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(9,597)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-cash restructuring charges&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(4,163)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(4,163)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Restructuring adjustments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,170)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(13)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(78)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1,261)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;182&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;23&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;20&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;225&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;1,624&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;750&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;15&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;2,389&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Cash payments&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,142)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(227)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(15)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(1,384)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Foreign exchange rate changes&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;(7)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Balance as of December 31, 2021&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;482&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;516&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;&#x2014;&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;998&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;border-bottom:3pt double #000;border-top:1pt solid #000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock>
    <us-gaap:RestructuringReserve
      contextRef="i7a0d52863fc64903a1109399c06704c4_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtMS0xLTEtMjg4MDU_7eda4e14-65a2-4924-accc-232a7b4ce42c"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="idb40d4ead52e4f36857491315a43c857_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtMy0xLTEtMjg4MDU_a63afe9d-1665-472d-86ea-8ce351ab4fca"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="iba8f6eeab77d4be9ab1ba46ab39e7c44_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtNS0xLTEtMjg4MDU_44f5a097-a754-45c0-bcf1-161aa246a621"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="ic9333dbc34ff416cb78724fc271fe455_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEtNy0xLTEtMjg4MDU_c5172119-9fd9-418d-94ab-e6edac5b104d"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringCharges
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItMS0xLTEtMjg4MDU_244ba3d4-1613-4fda-8db6-ad3a3c6d7775"
      unitRef="usd">11329000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItMy0xLTEtMjg4MDU_f5e03248-b587-4b0f-8be0-acec33e2410a"
      unitRef="usd">5220000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItNS0xLTEtMjg4MDU_53cc9fa9-8de1-45d6-bdca-ae5fa3d6a9ba"
      unitRef="usd">636000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzItNy0xLTEtMjg4MDU_06c841d2-6925-4aab-98b1-05932ff7a44c"
      unitRef="usd">17185000</us-gaap:RestructuringCharges>
    <us-gaap:PaymentsForRestructuring
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtMS0xLTEtMjg4MDU_a2188970-d6c3-4edf-97b7-0b3c80bede51"
      unitRef="usd">8717000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtMy0xLTEtMjg4MDU_8065d37f-21cc-4a2d-8f54-04c8a180bfb9"
      unitRef="usd">317000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtNS0xLTEtMjg4MDU_205f2944-1286-467e-af7c-d80f2221ffbf"
      unitRef="usd">563000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzMtNy0xLTEtMjg4MDU_119e00e8-2b25-4fca-99f3-264ce4697df0"
      unitRef="usd">9597000</us-gaap:PaymentsForRestructuring>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtMS0xLTEtMjg4MDU_0c578a22-5d47-4085-8f0a-c1e1e23b516d"
      unitRef="usd">0</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtMy0xLTEtMjg4MDU_828a50c7-1798-4b12-ad5e-280c80c36023"
      unitRef="usd">4163000</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtNS0xLTEtMjg4MDU_ce822bdf-3ffb-4a98-a9e5-73be56ad7eee"
      unitRef="usd">0</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzQtNy0xLTEtMjg4MDU_fdbb372f-a513-4646-b381-9b1992a773a1"
      unitRef="usd">4163000</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtMS0xLTEtMjg4MDU_1cfac3e1-96e1-4ec2-a11d-82e5add7c1b2"
      unitRef="usd">-1170000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtMy0xLTEtMjg4MDU_a536b9e6-30c5-4fc8-b897-3e32a523a911"
      unitRef="usd">-13000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtNS0xLTEtMjg4MDU_db2f8b0e-36bc-45fe-ba80-5f07eca333cd"
      unitRef="usd">-78000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzUtNy0xLTEtMjg4MDU_ef28b8cc-15a4-489c-86b5-7414fde67559"
      unitRef="usd">-1261000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i9ceed9a458bf44ee8b056fd943935d7b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtMS0xLTEtMjg4MDU_b0991e49-39bf-43c5-8652-2de4f155331d"
      unitRef="usd">182000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="ia041977fa65d4c6aaae16793e77f0f59_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtMy0xLTEtMjg4MDU_ba41d2eb-7993-4241-bca0-c44c1a88cd7a"
      unitRef="usd">23000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="iea33b0ef270a4304a674a351f2a3ea2c_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtNS0xLTEtMjg4MDU_a3886c95-10b9-41f4-93ca-c1adc5762d26"
      unitRef="usd">20000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzYtNy0xLTEtMjg4MDU_e61ccb78-e87e-412f-8f4e-1b9702f734ce"
      unitRef="usd">225000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserve
      contextRef="ib7bc21127ccf42c5bc8aaa79832c5c1a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctMS0xLTEtMjg4MDU_8a9b833b-7f8e-44ee-b290-5d8840995895"
      unitRef="usd">1624000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="ie3121f3a9e4f4a46a3cc68910d57a5fd_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctMy0xLTEtMjg4MDU_70991245-5311-4b6e-892a-d7e3944b1c97"
      unitRef="usd">750000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="ia644d53df91e4028845acea026614935_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctNS0xLTEtMjg4MDU_c4bf920f-b02f-448b-b7bc-ef3f672ead8a"
      unitRef="usd">15000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="i718830787ba64d9698a6ce9053392157_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzctNy0xLTEtMjg4MDU_983ed93a-ed1a-4930-8454-777bb7f642b1"
      unitRef="usd">2389000</us-gaap:RestructuringReserve>
    <us-gaap:PaymentsForRestructuring
      contextRef="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktMS0xLTEtMzE4OTk_5a873642-660d-4dc4-88a4-03fd581196c0"
      unitRef="usd">1142000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktMy0xLTEtMzE4OTk_c0eed3d1-adc6-49c5-a142-e469783c0356"
      unitRef="usd">227000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktNS0xLTEtMzE4OTk_c39ebe70-c40d-4230-9dd6-91bf531210da"
      unitRef="usd">15000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzktNy0xLTEtMzE4OTk_8b48ff4a-3a4c-4b55-8c99-98b77fbfb263"
      unitRef="usd">1384000</us-gaap:PaymentsForRestructuring>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i866e735aa0864c379813d523bdaf5c23_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTEtMS0xLTMxODk5_eb31acca-c248-4658-9dc3-0400cf4b69b1"
      unitRef="usd">0</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i37af8fbc3f53404ab2fef91376a1d69c_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTMtMS0xLTMxODk5_aef82e78-fba2-46d7-a9bf-ff6f3d47a363"
      unitRef="usd">-7000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="id47c906173ab4edf85ec11a56adf1772_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTUtMS0xLTMxODk5_2c36355f-ecf5-4398-aa5e-f5f08aa3c928"
      unitRef="usd">0</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i17e03758bb2b4992a21fd36d624da0aa_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEyLTctMS0xLTMxODk5_bd7ca028-bc9c-4ad9-bb26-22538946cc05"
      unitRef="usd">-7000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserve
      contextRef="ib389c9638e4c4a1d98465f63dd2ef34f_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTEtMS0xLTMxOTMx_56d48ade-0b47-4554-925b-23df5c2fd77e"
      unitRef="usd">482000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="iee99fc76bf3243cbb665a0905540cbb9_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTMtMS0xLTMxOTMx_9186d782-31d3-40a3-a3cd-9b69e01ab3d5"
      unitRef="usd">516000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="i0c0cc45df87a4b288075510563ebd8e5_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTUtMS0xLTMxOTMx_5a03bc1b-84c9-4056-b9cb-a8cffab329e5"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="iac93fa12ce9346e89d74784d16a4f197_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTMvZnJhZzphNzI5ZWU4ODQzY2Q0NDFjODQ0ZTRkNzg5MTQzZjFlMC90YWJsZTozZmJlOTI0MTRmMmY0MWY0YWE5N2Y1NTJjODdmM2ZkYy90YWJsZXJhbmdlOjNmYmU5MjQxNGYyZjQxZjRhYTk3ZjU1MmM4N2YzZmRjXzEzLTctMS0xLTMxOTMx_3208ef0c-df3d-4172-8350-299272da6d73"
      unitRef="usd">998000</us-gaap:RestructuringReserve>
    <us-gaap:SubsequentEventsTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzIxOQ_f1167668-9c8a-4d88-8386-ff2cc9eaed2b">Subsequent EventsOn February 17, 2022, the Company's Board of Directors declared a cash dividend of $0.065 per share. The dividend is payable March 18, 2022 to all shareholders of record as of the close of business on March 4, 2022.</us-gaap:SubsequentEventsTextBlock>
    <us-gaap:DividendsPayableAmountPerShare
      contextRef="ia0707d1af0314a219bcf26b1a7beb49a_I20220217"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzExNQ_52a52791-96e0-4e22-bb9c-407b6dd6ad69"
      unitRef="usdPerShare">0.065</us-gaap:DividendsPayableAmountPerShare>
    <us-gaap:DividendsPayableDateDeclaredDayMonthAndYear
      contextRef="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzE1Mw_0c7efb42-1e82-49a0-b657-226202fa0e8b">2022-03-18</us-gaap:DividendsPayableDateDeclaredDayMonthAndYear>
    <us-gaap:DividendsPayableDateOfRecordDayMonthAndYear
      contextRef="i95b24cde8acc45068c6d6ce49f08b624_D20220217-20220217"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8xOTYvZnJhZzowMzFjYjRmZWNjMGY0MmQxYTAyYTEyNjhkYmY1MWU0Mi90ZXh0cmVnaW9uOjAzMWNiNGZlY2MwZjQyZDFhMDJhMTI2OGRiZjUxZTQyXzIxNw_519e290b-5b12-496e-841d-09b3fc52f25c">2022-03-04</us-gaap:DividendsPayableDateOfRecordDayMonthAndYear>
    <srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90ZXh0cmVnaW9uOmM2OGQyYWY0NzU1ZTRkZWJhZjBiNjc2MjY2MzFhZGMzXzEzNg_b4b9caf0-8cac-4dc2-920b-a03735d0e41b">SCHEDULE II &#x2013; VALUATION AND QUALIFYING ACCOUNTS&lt;div style="margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:99.269%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:30.711%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.472%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.472%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.472%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.536%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.914%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:2.581%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.472%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:2.581%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:8.481%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="9" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Additions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Description&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance&#160;at&lt;br/&gt;Beginning&lt;br/&gt;of Period&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Charged&#160;to&lt;br/&gt;Costs and&lt;br/&gt;Expenses&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Charged&lt;br/&gt;to Other&lt;br/&gt;Accounts&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Deductions&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Other&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="border-bottom:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:700;line-height:100%"&gt;Balance&#160;at&lt;br/&gt;End of&lt;br/&gt;Period&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"/&gt;&lt;td colspan="3" style="padding:0 1pt"/&gt;&lt;td colspan="33" style="border-top:1pt solid #000000;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(In thousands)&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Allowance for Credit Losses on Accounts Receivable:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;831&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(55)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;600&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(300)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;831&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;596&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;215&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(286)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Reserve&#160;for Sales Returns:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,291&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;227&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,518&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,291&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,291&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,050&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;225&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(1)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:8pt;font-weight:400;line-height:100%"&gt;(2)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,291&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Deferred Tax Valuation Allowance:&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,568&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,420&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(1,800)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,188&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,312&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,256&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:0 1pt"/&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;8,568&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt 2px 7.75pt;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2019&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;6,112&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,200&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;&#x2014;&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;7,312&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:4pt;padding-left:36pt;text-indent:-36pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(1)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:23.78pt"&gt;Specific write-offs&lt;/span&gt;&lt;/div&gt;&lt;div style="padding-left:36pt;text-indent:-36pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;(2)&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;padding-left:23.78pt"&gt;Foreign currency exchange rate changes&lt;/span&gt;&lt;/div&gt;</srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i6d0d3605ae3a47539276eb78b04403f8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMi0xLTEtMjg4MDU_11e22b5e-c965-4050-bf2e-398696495915"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtNC0xLTEtMjg4MDU_2f154ae6-cea2-4348-89c3-81541d3af325"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtOC0xLTEtMjg4MDU_b1ba36a8-5899-4fa6-ac9a-dede1261bb04"
      unitRef="usd">55000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i59ec5527ba8e4d059be06b2de8827813_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMTAtMS0xLTI4ODA1_96d1472f-8be3-4e41-996f-1adc322383f9"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i5ee1836468e946feba304dc524cc45e2_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzQtMTItMS0xLTI4ODA1_2be33b75-cfc6-4f22-b133-84bbaa65e623"
      unitRef="usd">776000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i3dbe155ff0004ff98791a6784bd4c861_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMi0xLTEtMjg4MDU_dec0cb85-62b4-4a5c-bb4b-de2a5930bf0c"
      unitRef="usd">530000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtNC0xLTEtMjg4MDU_23aa080b-4674-4b54-a24e-498314783e9b"
      unitRef="usd">600000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtOC0xLTEtMjg4MDU_96ebc5f2-63cd-4b83-b4ec-97fc34c60e12"
      unitRef="usd">300000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i770852fc55a6463e8da481d0bf571699_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMTAtMS0xLTI4ODA1_3bbf00fc-d3a3-4855-8367-83a8c2820bef"
      unitRef="usd">1000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i6d0d3605ae3a47539276eb78b04403f8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzUtMTItMS0xLTI4ODA1_1b9af348-33dd-49f2-aaa5-29db063463b2"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="id3be38a15bc644abb5cb39c413e9327b_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMi0xLTEtMjg4MDU_a5902860-ce23-4d21-bf3d-4a14ff6b99e1"
      unitRef="usd">596000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtNC0xLTEtMjg4MDU_a9228485-fb86-4665-941a-ba27d3304ed2"
      unitRef="usd">215000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtOC0xLTEtMjg4MDU_fae6bc3e-bae2-4683-abea-5e020d9fc894"
      unitRef="usd">286000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="iee5da482094546e299baa3d92293d330_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMTAtMS0xLTI4ODA1_481d1e62-7151-4f77-9614-f0f92849d35d"
      unitRef="usd">5000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i3dbe155ff0004ff98791a6784bd4c861_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzYtMTItMS0xLTI4ODA1_339e5b56-c733-441a-8e3a-57fb4ccb0c46"
      unitRef="usd">530000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i2131ea7c04b54b24a5d7cbceda55413f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMi0xLTEtMjg4MDU_c8be0117-1977-4a73-9b75-9ca58aced10d"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtNC0xLTEtMjg4MDU_7292cc34-7327-42ec-8df8-21a128ce64bc"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesChargedToOtherAccounts
      contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtNi0xLTEtNDA0MzI_066e41fd-750c-41fe-862e-ab87ded7a97c"
      unitRef="usd">227000</us-gaap:ValuationAllowancesAndReservesChargedToOtherAccounts>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtOC0xLTEtMjg4MDU_86769c5b-cb60-4706-912c-77f3832e8d19"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i32a8205607454b739eb248993c515fd1_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMTAtMS0xLTI4ODA1_23ce4753-339d-47eb-b5f4-7913ace49b7b"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i72aa6831b808442cacbb8b5967d7fa20_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzgtMTItMS0xLTI4ODA1_85f9bcbe-609b-497b-bfdf-5fe0dd3c4af4"
      unitRef="usd">1518000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ib429e8609f0f44a1954e51d83ac80522_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMi0xLTEtMjg4MDU_2dfb222b-8e92-410b-889e-53fac2be27de"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktNC0xLTEtMjg4MDU_649cddd4-ffb1-4ac3-938c-1a14ff7ad7f6"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktOC0xLTEtMjg4MDU_10f8aec6-add0-4fe9-8b9e-5c6a19f6cf88"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i569ccce4c96e48c391d700361bf6abcc_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMTAtMS0xLTI4ODA1_7a8cd3c4-90aa-4a28-ae1d-724041490453"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i2131ea7c04b54b24a5d7cbceda55413f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzktMTItMS0xLTI4ODA1_2afedadf-da60-45fa-adbb-1f614e2f043f"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i407ba1b76823440abdd13f6172c63277_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTItMS0xLTI4ODA1_f9393f3e-e365-419b-a09d-2fa7b3ec8e7a"
      unitRef="usd">1050000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTQtMS0xLTI4ODA1_a069a74a-51b5-4c54-a795-469c5c58f423"
      unitRef="usd">225000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTgtMS0xLTI4ODA1_5f28dfec-3922-40c4-830c-85e41b101688"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="if82943db9b87496a88e504bd346dacaa_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTEwLTEtMS0yODgwNQ_a5ef22de-fef6-440f-a249-b7c8eee7001c"
      unitRef="usd">16000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ib429e8609f0f44a1954e51d83ac80522_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEwLTEyLTEtMS0yODgwNQ_58c25d02-49ef-4ef6-b25e-f9f8958e7a5c"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i1602cc3e102c42a98e804619365a09b5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTItMS0xLTI4ODA1_4d19574c-cf49-4ca3-9929-05bfd0275a54"
      unitRef="usd">8568000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTQtMS0xLTI4ODA1_8e303289-ccfe-4b90-b1aa-83fc4e70f003"
      unitRef="usd">1420000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTgtMS0xLTI4ODA1_db359c2d-1fac-4548-8a27-1116172a2609"
      unitRef="usd">1800000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="ic9d78e6e8ba84362a8454525b56bf115_D20210101-20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTEwLTEtMS0yODgwNQ_61a183d8-d48e-41b1-90ed-1a60eb11bfd2"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="idf98d43520b547b68e3e7b727e376e60_I20211231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEyLTEyLTEtMS0yODgwNQ_b8a84040-e6ae-4328-a9d1-c5291ec2bffd"
      unitRef="usd">8188000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTItMS0xLTI4ODA1_408e07d8-ce5a-4707-92b6-639b43506ce9"
      unitRef="usd">7312000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTQtMS0xLTI4ODA1_98d9fb36-42f2-413d-951c-c7385e967fa2"
      unitRef="usd">1256000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTgtMS0xLTI4ODA1_b99e1686-374f-4e6b-af8f-6952fab58ab1"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i2aee6672bd814cc595d6c10f9eedd0b1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTEwLTEtMS0yODgwNQ_2510c32a-c467-4104-bb05-b2c64a26b1f6"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i1602cc3e102c42a98e804619365a09b5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzEzLTEyLTEtMS0yODgwNQ_d72312e9-b752-4d09-bc04-3e25eae452b1"
      unitRef="usd">8568000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i3c925d5554374d1da0be16bce2fc2da0_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTItMS0xLTI4ODA1_47e2b0f2-c2b7-4967-8897-af2cbda69372"
      unitRef="usd">6112000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTQtMS0xLTI4ODA1_b11a19b0-5c7e-4757-aa23-6c23e0b5de07"
      unitRef="usd">1200000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTgtMS0xLTI4ODA1_140822e5-0c3b-413c-9239-2cb6288ffa6d"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="icfc8e314ebfc49b191e6b222139a7a1a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTEwLTEtMS0yODgwNQ_35316abe-579c-45fe-8b4d-0b2d5abf7a20"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i4b26a9dc49044a46bd0bf68ff53f08b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDIvZnJhZzpjNjhkMmFmNDc1NWU0ZGViYWYwYjY3NjI2NjMxYWRjMy90YWJsZToxOGFiM2I2MzU0OGI0ZDU1OTVkYTJlMjA1MGRkNzZkZS90YWJsZXJhbmdlOjE4YWIzYjYzNTQ4YjRkNTU5NWRhMmUyMDUwZGQ3NmRlXzE0LTEyLTEtMS0yODgwNQ_9cbb9592-6478-4c3c-8886-0f10e11a1f98"
      unitRef="usd">7312000</us-gaap:ValuationAllowancesAndReservesBalance>
    <dei:AuditorName
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDgvZnJhZzpkMjAzZmVkOWI1ZGM0ZmVmYWVkOGE1ZjU1YWRkMWJjOC90ZXh0cmVnaW9uOmQyMDNmZWQ5YjVkYzRmZWZhZWQ4YTVmNTVhZGQxYmM4XzEzMTk0MTM5NTQ0MTE1_75ec7183-af2a-4f7c-b1f2-e7b402574a8b">GRANT THORNTON LLP</dei:AuditorName>
    <dei:AuditorLocation
      contextRef="ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231"
      id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF8yMDgvZnJhZzpkMjAzZmVkOWI1ZGM0ZmVmYWVkOGE1ZjU1YWRkMWJjOC90ZXh0cmVnaW9uOmQyMDNmZWQ5YjVkYzRmZWZhZWQ4YTVmNTVhZGQxYmM4XzEzMTk0MTM5NTQ0MTE2_10997c32-d9ee-4c47-932e-98930fdf04d9">Boston, Massachusetts</dei:AuditorLocation>
    <link:footnoteLink
      xlink:role="http://www.xbrl.org/2003/role/link"
      xlink:type="extended">
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d"
          xlink:type="locator"/>
        <link:footnote id="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21" xlink:label="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US">170,820&#160;</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMy0xLTEtMjg4MDU_ab258229-a966-4dc7-ba66-df0f23eaca58"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtNS0xLTEtMjg4MDU_2ff20d62-7c70-4e69-9921-9fc67e2b17c9"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF82Ny9mcmFnOmUyM2YxYzMwYTk3MDQ5YTZiNGNhNTE4Nzc4M2UxNzRlL3RhYmxlOjdhZmI1MGJkOWQ0OTRiYzY4NzU4ZTQxZGY5YmM5YjYzL3RhYmxlcmFuZ2U6N2FmYjUwYmQ5ZDQ5NGJjNjg3NThlNDFkZjliYzliNjNfMzMtMS0xLTEtMjg4MDU_12f79dfb-9a84-4a28-9cad-69258f40ed1d"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjkyOWU5N2Y2YTE0MjQ1M2M4YTgwNTdkYmI2NDUxMTE4L3NlYzo5MjllOTdmNmExNDI0NTNjOGE4MDU3ZGJiNjQ1MTExOF84OC9mcmFnOmM2NjVlNjg4Y2Q3YjQwMDJhNDU5MmYwY2FiZGU5OGMxL3RhYmxlOmViNDg2MGRkOGQ1ZTQwNzU5N2I2MGMzYjk3YjljNzY2L3RhYmxlcmFuZ2U6ZWI0ODYwZGQ4ZDVlNDA3NTk3YjYwYzNiOTdiOWM3NjZfMi0yLTEtMS0yODgwNQ_0a565fe2-0209-47ac-8307-1c0640619f21"
          xlink:type="arc"/>
    </link:footnoteLink>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EXCEL
<SEQUENCE>131
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
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
M[17:OO33S#Z$H%V ]1^4PI/A-FB?UO@/4$L#!!0    ( ." 4533_\S?+ 8
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
M!^,7U0UP]2+R37G%.<^%R-/R<<UHQ H)@._+/!>'%SG!\1Y^_!]02P,$%
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
M- H3H,]3SM7!, D:T1_\ U!+ P04    " #@@%%44ETT%4X'   >'P  &
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
M'E V -_G4IK'A4W0_LQ&_P!02P,$%     @ X(!15#*_SLJY*   /X4  !D
M  !X;"]W;W)K<VAE971S+W-H965T,3$N>&ULU7U;DQO'L>9?Z>#N67,B,,.;
M9$L6Q0AJ:,H\(9L,C60_;.Q# 5T 6FQTPWV9(?SK-[^\U*6[,1PZM _[(&H
M=%5E967E/;-?WK7=QW[O_5!\.M1-__VC_3 <__SD2;_9^X/KK]JC;^B7;=L=
MW$ ?N]V3_MAY5_*@0_WD^=.G?WQR<%7SZ-5+_NY#]^IE.PYUU?@/7=&/AX/K
M3C_XNKW[_M&S1_;%S]5N/^"+)Z]>'MW.W_CAU^.'CCX]";.4U<$W?=4V1>>W
MWS]Z_>S//WR%Y_F!?U3^KD_^+K"3==M^Q(=WY?>/G@(@7_O-@!D<_>_67_NZ
MQD0$QK]TSD=A20Q,_[;9W_+>:2]KU_OKMOYG50[[[Q]]\Z@H_=:-]?!S>_=7
MK_OY&O-MVKKG?XL[>?:K%X^*S=@/[4$'$P2'JI'_NT^*AV3 -T_/#'BN YXS
MW+(00_G&#>[5RZZ]*SH\3;/A#]XJCR;@J@:'<C-T]&M%XX97-W(81;LM;JI=
M4VVKC6N&XO5FTX[-4#6[XD-;5YO*]R^?#+0>1CW9Z-P_R-S/S\S]['GQM[89
M]GWQEZ;T93[!$P(T0/O<H/WA^;TSOO&;J^+%LU7Q_.GS9_?,]R+L_@7/]^+,
M? O;+/[WZW4_=$0M_^>>!;X*"WS%"WSU_P2]O]?<Q2][3_2_:0]'UYSPRZ9M
M>OJQ=(,OBVW5N&93N;KH!_J"KMS0X\+AYA0#AAZ/-)'C:T2KX:L^6='%%8^V
M8NG[35>M:?8U+OY5\7<WC)W'\/='W_%<?7'=[AK_B?[7'5OYKJCZPA4UL1>>
MKFMOJ])W&'9PFSUAH+BMF"'03^6X(4"'O1N*C3OR]*XIZ3]7G_[-#XZTIZH1
MUL63$_P=YAO:PHUTMVB[-'$S;NF\QPY+8H:R(@JHUB./&5S_L2_N]KX+:U=
MS[_&JO/E5?%KS[OZ2S]4F*['(L#0A\X?71>0]C8@^28B&>=RS)];/ R:DDX,
M^ZB&$W&(89\AG0#?5,>:UM[YAI!;UR?\[H\X707GUZ;")UZ\QT*O#[ZC\RL>
M_WIU<U7\^/KUAPO;50^<$$O&XD#5P7WTA0\;!(I^&\N=P,;X=]NM$0MMI^VP
ME#L 0%[+];T?9&!=N7555T.E$V$(X7M3M[W2!^T4V\+:V<.]T=[:U80BHD&6
M6J#A59AJ:?7.W_IFU/7\)Y)G/2A4SAN#3MYU5W1Q!M +;9\X>D]@C#5(@7;6
M%=NN/="C;9_@X2J[=N?00T=3CZ77P9VO^<H14A4J^O^&;D&%\U_1T[<T$8^4
M#\W0=K1[?!A<LZO6M5=LKHA VLW'2\BDLL#=IGTYFX8^TYKN$X:NQYXN3D^0
M;>AX>UZJ%Y319H=N--K?[%VWP\9^<'W%J+L.? +D"7+]/.>(._9&I3K7[+(#
MA(I^[<=U7Y65DZT2_>+YNWVU(3HGHKC;MT32E^U=@POWNL:E'GRG_"PNPD30
M.4+#1OC+WMT2N7C?%+ZN2'H"Z*N"Q#D)ZZ:X'KO.-YM3\0O&U'&/B]M2XKN6
M1?_7__CF^;,_?=<76YTLWX*P"SQ?MQN:9V-+53U_NQT;!C'Y:<5;'1040BY.
M;4?T2J="MZ'HC+EXN6M.KING/2MH(&/ <]]U(X1T=+.GTTXN \]B%X%F;P/+
MOF($R4\88=L/&QP27+KRMU&H>54T=%4!I_NT A*42)@]]41VGHZ8&'.O>"W
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
MPA+WG'@!&H_(ANM.2"[G&'RAB; +.2<<UX.U&I<W8^#A@2C>* $;<SATDRR
M'K,C)B0CP+$E/A%?7JPT5,> L _1[T[9EV(FDYXN03+)0-9#B.(* 2RK+A$_
M#L<_-YF/1E/!:+=G$&]'W:=:!2LU=?61/= 2RT@X6Z[FI%FX8R/C8Z@,ED5.
M0*L%[DC(D5S+UK HE(+0I$ \.?:KXE>-G<O.XH-<4-;#=;2LD<V!Y<J4SGR'
M2P!'IZ#1:,BPFUP.4TL?LO9<UV'>*5Z4N%VI\YDE[VAX=KY0Q8PXVV04A9H
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
M!RC/Y(Q#I&DX2(0W$TWEET0'^< Z2(;0F'VYK+#D#IBY,!I2+5!S!>8:H))
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
M)QUB[4-5AB8*N<?A20=<X_8<<R^8,2()3EKXV@,NC^V@JP&R02O?=RH"J/M
M@A@F'4<\2M.3'I]>Q*6(^[.41> (/;*DP:D# (75* $57&KQ:@Q4/O"O,_<X
M]D\Z\#J 6L"FGC* V@;(]B ,X)7TA 1HM&]PTB.P\KF7S&CK$+W4=[L7P%E,
M '\@(U<N=;8U_&ZZ>(GWMN:6E% /E%"&&L=;V8LD%?58%"#!%,W)YYW)_74G
MX!\D8/S^A9!UF.P#@O]G=;\T(MB4Q$$3VBCU*+0A-LBC%=I_(HEXFK0DL8>U
MEQ(L]O@L\\#G(QLSS##'/@3&/D\SRJ8 JZ-DPP9[$7&@(KN][ZM@\*U-O]OA
MG.32;LPT_#9.L3%MR+-9T!3EX/'PW.4R=\_"W:<C%M.(@X;API3-FA:#0G8K
M:>Q(PI G:3+(XT^B!CXZD*M475BES1YJ.T@46KZ5;&CT"PFH 2!)]KB6#CU$
M0R1_ "(-FGDI6DR@PFCGDN];R+-/'1XZY-1G[/>UK"$1C5]MJ+:@FV"_HO0!
M*4%53L):*4T1<1PK>I<<-"\D?!* 6RB7#\+-I<V5!AG=H"")7\-"I0N:1DBT
M+K#CDO?P!UD+YV=[5*(\4K4K=P)XS*G6/#-KN;5;!,T-L$NT!R#RK3!TG*+:
M P!+*G-G!6>U(A/5HT-1JOMG3A'+>%<>!84S5YH@_(4Z?Q,O<PR$*^G:"$7^
M-1/&+:.#_(.J?>J5799^K',*EAO0WU1#IS$(>S_#,3A.7K<&TU)GR^MT_L#J
MP6%D%^>F<_?YOQ)%;;J!R/7F T/O[E021(D;>A!)4L;94<2#+!RL>;P?D("E
M_3I.9,WT^ES]+CG>I]_W1NK])#JD/)@-5;]KZ)++93.DH?PL:7YB-!F:T8S[
M9P]E/Y7VPF?_DD(S_S1P#VB8IV'[%)Y&[5-T&K=/#90=F-&::0PSFA?S,*14
M\-,8LQ(!#^(4QM0WPYC'(25W'&,)"//6_4+(PQ3##,[\&4[^'J2A)P/=L+WQ
M[- TYRX>FIEGW.Z[_YBN$.)#=P\M^KS$2,-BNC_Z-!-A,IB3]C3R!%Z_=*/1
MB^<>D)Q&I70$44?]W0;B2Y-C&KB+(2"S'S3!C_W883T/H]E@O#IT#3<=7'I6
M4J_<U2X=Q'#@:.X_^]7^]OBFN33=D3=7SY^$7E$-EW()5N\LC2=,-]>YS8M5
M&W>%BO.\595[7$L!3"$"?%\J9;L74M#?J5__#U!+ P04    " #@@%%4F6L\
MAF4"   2!0  &0   'AL+W=O<FMS:&5E=',O<VAE970Q-2YX;6R=5$UOVS ,
M_2N$L<,&N+4LQTD:) &:=L5Z*%"TV'H8=E!LVA9J2YXD-^V_'V4G7@:L&;"+
M15)\CQ\FM=QI\VPK1 >O3:WL*JB<:Q=19+,*&V'/=8N*;@IM&N%(-65D6X,B
M[T%-'7'&IE$CI K6R]YV;]9+W;E:*KPW8+NF$>9M@[7>K8(X.!@>9%DY;XC6
MRU:4^(CN:WMO2(M&EEPVJ*S4"@P6J^ R7FPFWK]W^"9Q9X]D\)5LM7[VRFV^
M"IA/"&O,G&<0=+S@%=:U)Z(T?NXY@S&D!Q[+!_:;OG:J92LL7NGZ2>:N6@7S
M '(L1%>[![W[@OMZ4L^7Z=KV7]@-O@D/(.NLT\T>3!DT4@VG>-WWX0@P9^\
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
MT&F'"9DN=+>M(>Z58=CPSPFM#^#O.\-U.4[\!M/O;O4/4$L#!!0    ( ."
M450D8^:G/@8  )0.   9    >&PO=V]R:W-H965T<R]S:&5E=#$Y+GAM;+U7
M[V_;-A#]5PY>L+6 :DNR'<M=$B!)N[; VA5MUV$8]H&6:(LK);HD%2?]Z_>.
ME!VG^=$- _8A#B7Q[MX=WSV21QMC/[E:2D^7C6[=\:#V?OUT-')E+1OAAF8M
M6WQ9&ML(CT>[&KFUE:(*1HT>Y6EZ.&J$:@<G1^'=6WMR9#JO52O?6G)=TPA[
M=2:UV1P/LL'VQ3NUJCV_&)T<K<5*OI?^U_5;BZ?1SDNE&MDZ95JR<GD\.,V>
MGDUX?ICP4<F-VQL39[(PYA,_O*J.!RD#DEJ6GCT(_+N0YU)K=@08GWN?@UU(
M-MP?;[W_%')'+@OAY+G1OZG*U\>#8D"57(I.^W=F\U+V^4S97VFT"[^TB7.G
MXP&5G?.FZ8V!H%%M_"\N^SKL&13I/09Y;Y 'W#%00/E,>'%R9,V&+,^&-QZ$
M5(,UP*F6%^6]M_BJ8.=/7K5>M"NUT)).G9/>'8T\W/+'4=F[.(LN\GM<9#F]
M-JVO'3UO*UG==# "GAVH? OJ+'_0XS-9#FF<)92G>?: O_$NR7'P-[['WPMC
MJHW2FD1;T:V,Z9ERI3:NLY+^.%TX;T&5/Q\(.]F%G82PD_]2VP==<$L^=6M1
MRN,!>LY)>R$'M_WNYR3BF]*@;YR7%9DE^5K2TF@TH&I7]$BU>&,ZAVJXQT_I
MA37.T6E9=DVG!9N\@1B@*-ZJ11=ZIY4^R 0=T+A(TL-T?_#]=T6>Y3_2N6G6
M6K*]EV7=&FU62CK*)TF>S2B;)OEX0D4R+\9T'H@M+=H:$1'!U6KM*$N3Z:R@
M65+,,\J3PV)&;TS[I(1C^"6QLE)"$)#>+$MI,L\ISPKZ8$4%I6)X&5[SWQ;2
MF="B+;DH7 ;02C8+1-U2"^!GX^1P-L7@,$MFB'< ^Z0HBO^K*GDRGL]"S#S]
M9EDR>!XG$^3\4%G&AY3/)E^7Y7"&+]\H2+I?D&F19.$-5FXZG=('D$A4%](Z
M2:H!)_V66N>_?'SU[$DVIS48)1M5$HIC.LAEY\!GE!&,"^Y1N]5*6A1#(,<+
M%FWXT*9=/=$0YZIG;P*#4G<5LU5]3>T$5+:T-AX9*Z$#%F4Y?ZHZRR:,R4ET
M0$6?.V$]$D04!C!$ 1SW!'> <L&C<VR;0%1;[$+!#TPY/*]9+? HK<?VMDL7
M=1?MU0^.EJI57O;0;P&EI5 Z^)!(MC0HG5@HK?P5J. 0D=6(/UB.M)=&60N[
M D<X3QB[G4.)=#1Y$UR*QG28O+BB3:W*FM\I2Z6P]HJ+<"%T)TE>EE+&1/@K
M$-GX91C6LT^%A':&&BE8 R/@ZYDW88KV-M( 5'E>9NR'#]4D$IM#&'Q[LK:F
M9'KL=T8$=AW>T0:$(11,++3"1E<EV")]'6O@6.0"H[$X@EGGG:ID,!5QVZ\N
ME#,V(>9BY ;(A2XCL49\@<HMMIP05&$KX++BN12NIB4TDQI321VI !BJ"1DL
M.\\;!E@L6Q0)LB!%XT*QY"6.3" 6"1_%0G !PK(9=]L$*"X4UQ9+>4U"K@,8
MVG<)M!_'C%#1VT6]@SK>>*$YWX-L#O'(DC1-*>C^?:V1  =2LTI?[:\2\L<<
M0/P+QZC]JH">UC3!X0UAXP*4=^N8*#]WB@D6+-^#RV(!"@[I9U\-Z=$@OAD\
M9G42?<K;IJN@=%89"W?(:J7- IW B1C6&TY(A4#7J&ZITO >+4[NHV+RKY,)
M5(W+$=?JNE&#X!Y RM-9RJN1T,$TF:?]F ,=C)-QD<=G)+^6X<"JKX;8WD'C
MF&#RS_ \;]_78BWI1;-X&9E;"Q;=5=C5OA()!C:9S )'&(C8V_0 WGKU)?82
M3\SS(DPT,;E>-*+\PB*6 #BZ,A+HB[0FZ1<SZOG=&A)\@ZSP?5.;*E51:WPO
M07>1_8:H?"W"<>O)"!*5I]E\2,]W+7PCM[YI@Y9)5H7MN0EK@"M+R3K*^)=0
M"%#O2@H;R8Y)Z.,EMU+84?J3EKMUSOH=)O&(?'/C/8U"#I0Y'R"2'-LO'L8X
M 4WG$Q[B)TF+E(=3PCEE.N/A(8:3:<[%V@*8C=/K$\Q=)]C1WDT!'%J%^Q"?
M%H$@7AIV;W=7KM-XT[B>'N]KKU%\A8;3<@G3=#B;#LC&.U!\\&8=[AT+XT'8
M,*QQ;926)^#[TF /[Q\XP.XB>O(W4$L#!!0    ( ." 4503.#;8'@,  !D'
M   9    >&PO=V]R:W-H965T<R]S:&5E=#(P+GAM;*5538_;-A#]*P,AAP80
M5A+UY5W8!M;Y0',(8F3;Y%#T0$LCBPA%JB2]WOWW'5*VNNEFW:*]2.1PYLV;
M1\UH>=3FF^T1'3P,4ME5U#LWWB2);7H<N+W2(RHZZ;09N*.MV2=V-,C;$#3(
MA*5IE0Q<J&B]#+:M62_UP4FA<&O 'H:!F\<-2GU<15ET-GP6^]YY0[)>CGR/
M=^A^';>&=LF,THH!E15:@<%N%=UF-YO"^P>'+P*/]LD:?"4[K;_YS8=V%:6>
M$$ILG$?@]+K'-RBE!R(:?YPPHSFE#WRZ/J._#[53+3MN\8V67T7K^E6TB*#%
MCA^D^ZR//^.IGM+C-5K:\(3CY)OG$30'Z_1P"B8&@U#3FS^<='@2L$A?"&"G
M !9X3XD"R[?<\?72Z",8[TUH?A%*#=%$3BA_*7?.T*F@.+>^;1ISP!;>/= U
M6[3+Q!&J/TN:$\)F0F O(&0,/FKE>@OO5(OM]P )T9DYL3.G#;N(^!:;*\BS
M&%C*L@MX^5QC'O#R%_"V_)'O)%K@JH50,)<6?KO=66?HJ_C]0HIB3E&$%,7_
MD/$B@F^^&SOR!E<1=9=%<X_1,U@X&_!L:#3UAW5DTAVX'J'3DAI-J#W\)!19
M],%2V?;U#9"L..S0S-+Z1PH?5(/*MP9A#1Z5AW9Y!7D=7V<U+=@BOLY+N..2
M&W&2<>2/AC*!XP]D6<1E=@W>/P-J%FH%W[%.&*3^=:!W4NP#K"6GLF90Q8M%
M!5^Y,5RYQ^\<RKA@M7^F%7SAS<2FB"ORS^.JR. 3E6D\J9RRL2(N%B61O&9Q
MD3-:U'7,J@)^(2V:GJL]T0M"(!R?IX,C&@1N3[+99Z)MJ&@2R+N0P'^3D&I^
M1=3J+(>MT??"A@)H4IY3>;6$M?[&VH/QE^)YC&B$;JF:HLKA_4%V0LI)I^Y'
M'(D4B^LZ?7V9#%WE)-I_HL+*ZM]1(=>\_"<J&>DRW>./>BMY,JX&-/LPE/VG
M?%!NFERS=9[[M].X^\M]^FE\Y&8OB);$CD+3J[J,P$R#>-HX/8;AM]..1FE8
M]O3O0N,=Z+S3VITW/L'\-US_"5!+ P04    " #@@%%4A+?TJ:(%  "$#0
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
MAA;@]Z7&V:Q](0?=5?_R'U!+ P04    " #@@%%42R&.60D)  "O%P  &0
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
M,'5XB1$9$HH+]$<67UQ>Q&F:@M3A L5>=S8[&^G2G@WKS[/+)_WTTJ/O-#X
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
M/3CD;],D7@;I?.["^34Y!ZG>[2B.(K)H!4!(KWQKGG 7&.EX]Y#XR"\EAUV
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
M   9    >&PO=V]R:W-H965T<R]S:&5E=#,P+GAM;*U6;6_;-A#^*P=O'39
MLR5*EN3,,9"D75=@Q8*DW3 ,^T!+9XL(1;HD;<?[]3M2LNQV2?9A X*8$N]Y
M[KDWD?.]-@^V073PV$IE+T>-<YN+R<16#;;<CO4&%>VLM&FYHT>SGMB-05X'
M4"LG+([S2<N%&BWFX=VM6<SUUDFA\-: W;8M-X=KE'I_.4I&QQ=W8MTX_V*R
MF&_X&N_1?=S<&GJ:#"RU:%%9H1487%V.KI*+Z\S;!X-?!>[MV1I\)$NM'_S#
MN_IR%'M!*+%RGH'3SPYO4$I/1#(^]9RCP:4'GJ^/[#^&V"F6);=XH^5OHG;-
MY:@<08TKOI7N3N]_PCZ>J>>KM+3A/^P[VW0Z@FIKG6Y[,"EHA>I^^6.?AS-
M&3\#8#V !=V=HZ#R-7=\,3=Z#\9;$YM?A% #FL0)Y8MR[PSM"L*YQ3VN*<4.
MN*KA+>JUX9M&5/!.=?6FQ,TGCOQXZTG5<UYWG.P9SH3!>ZU<8^&-JK'^G&!"
M @>5[*CRFKW(^!JK,:1)!"QFR0M\Z1!U&OC2?XGZ#C?:.*'6\,?5TCI#/?+G
M"_390)\%^NQ_3>I_Y80/#<*-;C=<'8"FUG"'%H0"K1!L!X^H=ZJ&J&$GPEPY
MK!JEI5X?QN?X;[XJ65+\8(&,<=6S^3S56'7 EC^@ 6'!$:JSPD>LMG[(0*]6
MHD(3P;[1P=(.0 )HX%+JBN316%N]-17M^[BXM>C_@-R%L%2%P%WG0ANJE<=(
MW*$<?Q[M:H6&.&#'C4#G7WP9Z,;H>ELYKY<8&TXJK6B%Y :PTDJWE,RJX;X%
MT CK1&6CSLQ[M[S%(T7/5@6I42?<(-0$,F*Y=5C#\G!"62[1YY$KA3)$/VRY
MPX:V2&LWZ!1"%]9*4W[V/MV.+R7V7TSQ5RCGJ=Y\25]96)^:@61P"]]2R5VC
MMY:4V>\NX*,27M.]"_WP9FNHFO"63"E0N*$<<?B%)!GXH!V7\#M22L+@ HT=
MMDO:.8X>#<P.U1;A:TAG:93/8EJQK(B*+/.K.(Z2=$JK9#:-IFSF5U&<%E$\
M*^%GK=;?2VJ/KM!4BCR-DBR!)(]F)8-9'D,:%;''EUE4E.5+6N(S+:R,(Q9P
M+"X)6'B_>1FQ;C4E5G)#K FI(>032N)HEB0$C^(D(\VL*($DY#ZJDN3EQ0M:
MDMFY%LI&7OK(&:.\I*57D$RC./<**#N4(:^J8-,H9].GM)11-LN!)91?2DZ4
M4124ZY@1BM+*BGQP1^-'1[&EP2;XJ1%HO [AK*K!C[B?GK[!3G.MM\J9,"BU
M[WTA<3S0KHQN:9@L=: \8>D$#2ABI1Z$I'@5>C_)7GD6%YK''(6IKE^\@2]6
MY"=]@^$(EH<O/+F&XAB\[*F%E::^[CN4YE5!$C_G))F-X:H39FFG0K$+,W-B
M#J/V7!#3/HC9&3]_@HZ'.?WG0#P3X%.'R.3LE"8EZW 7Z2O1'=C#V^&Z<]6=
M\B?S[J[TGINUH$^IQ!5!XW%!MPO3W3^Z!Z<WX<Q?:D=AAV5#5S8TWH#V5UJ[
MXX-W,%P"%W\#4$L#!!0    ( ." 4502Q(DQ5P,  !0'   9    >&PO=V]R
M:W-H965T<R]S:&5E=#,Q+GAM;*55W6_;-A#_5P["'C; M63)3=/"-A"G&U9T
M18-F;1^&/5#BV>+"#X6DXOB_WQUINPG:9D#W8I/4W>_C2!X7.^=O0H\8X=YH
M&Y9%'^/PJBQ#UZ,18>H&M/1EX[P1D:9^6X;!HY IR>BRKJJST@AEB]4BK5WY
MU<*-42N+5Q[":(SP^S5JMUL6L^*X\$%M^\@+Y6HQB"U>8_PX7'F:E2<4J0S:
MH)P%CYME<3%[M9YS? KXI' 7'HR!G;3.W?#DC5P6%0M"C5UD!$%_=WB)6C,0
MR;@]8!8G2DY\.#ZB_Y:\DY=6!+QT^K.2L5\6YP5(W(A1QP]N]SL>_#QGO,[I
MD'YAEV.;IH!N#-&90S(I,,KF?W%_J,.#A//J.PGU(:%.NC-14OE:1+%:>+<#
MS]&$QH-D-663.&5Y4ZZCIZ^*\N)J/09:"0$NNMM1!<6E"HLR$C0'E-T!9IUA
MZN_ S&IXYVSL _QJ)<K' "5I.@FKC\+6]9.(K[&;0C.;0%W5LR?PFI/1)N$U
M_V7TTIE669&,PE\7;8B>CL;?3U#,3Q3S1#'_O[7\ 1BX'H46+:F?3N"/**?P
MWL+[+KH6/<S.N$RSEQ.(/;+!0=@]'7A*]RA!:)T^T)T,45BI[!9"+SP&<)NO
M@7_.*[],0,#@W9V21$&!$G$ C<); GC&5T'"G4JW,[A-W!$@4)< 926=6Z^$
M!F7H8H.P0N^#"I!SE(6WCAK(%/XD4=%%"NS((O.D;6&RGV8OF\E9<SZIJHHR
M.CW2L8).A!X&L:>N$$,.>U%-SJHZA8T#Y7;:4?FV4WACD^F-&WWLX784/F8?
M=*"JQY7RV#G/^ (Z*IB*I JVSLF=HM*I#"2,&VW,I$0W3Y0>J14&4L,UI7*-
MONO))-5-=90B_Z%*L-CLU2.W20Y][#?-0G9$'04][]HCFS71S:M$&7L1J0/L
MH275!CE.M!I9YO$\D,-FPJ@LBS!R9=A$7AL)'LV@76)@@AO< ^T#S6C7+>T1
M;1:RT"^E"91LZ"T(63/>\Y@.U1T1'@O];$_' P;TRLGIMVY4^:!3&?3;U(\9
MF4J;F]9I]=3R+W*G^Q*>WXMWPF\570R-&TJMIB^>%^!S#\Z3Z(;4]UH7J8NF
M84_/%GH.H.\;Y^)QP@2GAW#U+U!+ P04    " #@@%%4<+<T=ZT&  "Z$
M&0   'AL+W=O<FMS:&5E=',O<VAE970S,BYX;6RE6$USVS80_2L8-6V3&<82
M*<F2$MLSMM-.<TB3<=+VT.D!(E<B6I!0 -"*^NO[%B!IV9:5S/1B@?C8?;O[
M=A?PV=;8?UQ)Y,672M?N?%!ZOWDU'+J\I$JZ$[.A&BLK8ROI\6G70[>Q)(MP
MJ-+#;#0Z'592U8.+LS#WP5Z<F<9K5=,'*UQ35=+NKDB;[?D@'703-VI=>IX8
M7IQMY)H^DO]M\\'B:]A+*51%M5.F%I96YX/+]-75A/>'#;\KVKJ]L6!+EL;\
MPQ]OB_/!B &1IMRS!(F?6[HFK5D08'QN90YZE7QP?]Q)_SG8#EN6TM&UT7^H
MPI?G@_E %+22C?8W9OL+M?9,65YNM M_Q3;NG6!SWCAOJO8P$%2JCK_R2^N'
MO0/ST1,'LO9 %G!'10'E&^GEQ9DU6V%Y-Z3Q()@:3@.<JCDH'[W%JL(Y?W%#
MSMLF]XU5]5I<E]*NR9T-/43SAF'>BKF*8K(GQ*29>&=J7SKQ4UU0<5_ $)AZ
M8%D'["H[*O$-Y2=BG"8B&V7I$7GCWM!QD#?^)D-E78@;TM)3(2Z9&,HK<N+/
MRR5V@2E_'=$XZ35.@L;)_W7M43&<E:_<1N9T/D#:.;*W-#@L6[ROQ3NY$]EI
M\-HH$;XD<6VJC:QW/SIQ9:0MA%F)-\HB*8QU0FXVUMS""1(9MB]RHV4M5.V)
MPRF\P7+1Y/1 (FJ#E9[WY\9YEV#"JTK]2T)Y)Y:-@RW.B<H4I)/@=%D4EJ=8
MCH*8W#.@(/7][V_?O$P7 K(+JA3"_PG3!V'ENBD"Z+4V2ZE#YJ- Y11AAGR'
MV&#=%X7<);T3\^\# K-:*6S,M7$-A$<MK4DXGAO+HN^KS5L'KZRI&*RC4$Y,
M#4.,EYKW/$NGR2*;)*/1" A# ,2V5'DII*4[S%CZX;MYEHU>WQQ2$=;2UP(&
M1%?7SFA5!*)^]/A!081K8=S[Z'ML.!&7808I0]62;)<V+0$J^;>QRN]:1^]A
MWQ*0Y3!=$\MG[]2&0Z1X'7[M[&8+Z,L&I(ED6 :#&FNC0:L&1I  (&4*QS.6
M<XNC@,V^5.Y &(/C<2J J,T3'N> K&LPJFB=FL: K8Q&/^&=7BXUM4T%^R*U
MG@B?L6%U1]**R.Q'/A//%;O>- [N<"]>B<O*-+5';M%+<!L90!9U.%JWI)I6
M3/5G(ATEZ73! 0L%Y-ZVD!QBFF2CF7@/ %9(YTRN0E3;Q>F<A00*?4573R5'
MMZ! G5,B2I+:EU@"I^-,H'KCX>D\<$9PY0#QHQ?2>2H(<3<[PLRV-#$,I *Z
M3BUT%-&#[#6'4$#HYT9:;& V18Y!7!M#KU;J6\Y@27I>WR%S&UTPG_9T8DUV
MG&+FGP@TX#VX4(0 ?VZ4[4H30FD[ R%LQSHEMTM5-1764<:"#R-#8UJ8HTX.
M%MTGW]/VG,2H;I6CI$VQ3E#2AHL=<H=C:>K&M:&(-Q2HZ U,'FE'B;8MK_FB
MQ<(Z:Z-);:792K>7S\O=8WJ?'&-HSZR[NJY)<L%P#O=#KM?*!C+M9Q3PWU+=
MUE47"BM$; #+QO0GSK6NS.>M^@;E)0IG'"&I';4XI';F#@R?VJ* T4NH8#'A
M6&G &R#B]A5K8F!\X"]S8Q-PVK;'1QQLR1+;$/JBQQNX6,I8^C3 L$MN230<
M3,E,T)I_S</$?=3\7,/%WHG&*QWN$TE/]+[!H!2:I5;K#M4&_;HK2S&X1>05
M3QSRSY/!"YR!U[D,ZMTW<Q?,H?H>Q)RU%H*;=TQB^!BF^@B4A1ATYX[A)T]5
MM#LH?20UK1'U%86ZOA^8GOOW[&K;5-*1^T%2],#[RA9=0);?*E1\4Z.0\?*W
MZYS4.H';<#I[_;!OM?>O#I%RA_KZ99[;AO,9#;-VQUOZE=1<KL5'OL"[1[VG
M;P2?]MQRU=6H/I/W5Z^#\V-,+N]B$J<_\66E5RH/W1IP 7L6+$FSUU\9';S
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
MWKPYS42RK>GS:R;5JV',3#W3R/4!M9\R)KN))N@?_NG_4$L#!!0    ( ."
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
M)[K)!QM9J;/@=T9>$9&1IXC3 L %"# @S;/L*EDKNUEZ)_!%T4\: -,BV&]
M>SCD4.[ZX4#,OS<-V%*(+@87QKB=XC!2^>7Y=V]$*R.?Q6-QT)S0CQ??W0.I
M%Q2!B_/H_3Y?5 5>1V?+I%/[WF]G]N]4>*HAT;*;"_ )88?\D-DEZ81Z6/AS
MJA$QSX+AZB)O&2/(N";GQ.'0-A_5 \6>+'H >#'Y9\F0;WUW6@(SX;]0D7O\
MZO6K-R>!V?WWQ%I4O*D2"HHXZ"#B>-PX=3 "UH.H:8^(@RW[1-7QM&+RA($]
M&/GKZHC$7Y2;CB;A91)$]H?*,;L#;GEH0."LHBL%T9!XUUGVM@>%$91F6<$M
M,$TDLH!A**<+Y%5U"@N2<.31(\\FLHL4G&#Z$T%L\UM0_<4BZ.OX,;%J$AZJ
M1JRZ_MC'Q^0*"YU;L4#/YX#[3&"1L$'_:#8E@SQ=IO"R+:@S_@9E4P.$*9Y[
M()1^3^X6[PBFH-74LGED"V?6]@[*BCH;B9L"^?]&_ES@5&YS4Z/Y0F:8Z/L-
MF8 -G.K&P2Z2$=&QB1$S,R(( N UK-.!D<W<M3 N4U1G/',2.R[* '(+&Q-I
M;(ML>XI4%*#=U<5*XQB,,];7*;[Q#,ZD;O8@\,GG5Q=@51/6UD7J&44^CDA+
MVKOGXX21G0BJMCTB#03Q9;RUPN&!\T[3-DA 0<MD[:D<"^0&ZREX:11\4:#>
M 5-UIT5S5ZN]1UQ<HBC)B<2H ).5Z-8$Z<Z9,?L#:23,<8+V,G_41>,\Z:,R
M+CXM9VGP:;\'8H>=5"!SA;Y( 0#Q48II2)CKD?\39I?V_52FP<L<# 4MD?1"
M<;_ABTK:2%=KU]VY2/\(7O3.@8*!Y,0 /\O^ABPB3@44RDY:!"XJUPA>$<4L
M@'V_N1$\T!@#'AL2'<;5'.M_M;NSF@<Y/Z)$M:&;OJ7S %LZ;F5EK0G9?N0D
M.5C,NQM5X&L,Q56@U*/V LQIAS;&5D(AA+F%Q1GTP\:5 $(00U@2H"9\?+$H
M M^VZ!=%O>IME:./$T&.=NX!N>&D3/U'!LSBSX?XLPL_IY(W"-O"@>@1GFIL
M & 6&+0_Q36(,,Q0H8E.DVB2!#'8>[?M*U#K;O$ 7_1EA=Z2\*#]F9;S]!LV
MUC BP\\";6!$EE69V?>"E1<-C.09$9T]6G5@0Q5WN01N?;/M\,-J$)+MR*>D
MH.)1MWT+-H"&?+?EQX[X;DO\GE7NNV8)42XCHEPNGNO/(*ONRJJ:1(G%5Z?=
M*CI>%OY "98<?<JU''OGG!<VU*'=A[P5?BY;]=CN=+2\KGMBGBY'+1VT&[!P
M0:2U"&\$%NH9#I$%(WH=>5@V90OF*@IMEO$%6I5SD@._#;/M\R-QU+53I1HE
M1[H!P'N,!2/'8!LK)U\!XJGWH_5/VF];W 5JW7'/B!6$D\#2'?)P4.;.LE>
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
M0F@QYG0F6$"Z,A!*K.>D_[#H4Y8M$U^0S8D*5QCDH.+4B!HLS,HVJ 8:BL-
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
M''<KN,@$&D@NT=(DZ1)L.>?$6V;?-,G-D=.D-SIIN=-@ N88E(*;HC!50XT
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
MHS^?S%3(7W3R!=Y6Y"M*X1-T0'Y6A&,U\ (\7WN?A@MV,'Y6N_@W4$L#!!0
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
M   9    >&PO=V]R:W-H965T<R]S:&5E=#0U+GAM;.58;6_;-A#^*P>O&!I
MJ&7)+TJ6!,A;FVY]">J^H!CV@9;.-E&)=$DJ3O;K=T?)LI(Z:MKMVX! %JGC
M\;F[YX[''*ZU^6*7B YNBES9H][2N=5!OV_3)1;"/M,K5/1EKDTA' W-HF]7
M!D7F%Q5Y/PK#<;\04O6.#_W<E3D^U*7+I<(K [8L"F%N3S'7ZZ/>H+>9>"<7
M2\<3_>/#E5C@%-V'U96A4;_1DLD"E95:@<'Y4>]D<'":L+P7^"AQ;5OOP);,
MM/["@Y?942]D0)ACZEB#H)]K/,,\9T4$XVNML]=LR0O;[QOMS[WM9,M,6#S3
M^2>9N>51+^E!AG-1YNZ=7E]B;<^(]:4ZM_X)ZUHV[$%:6J>+>C$A**2J?L5-
M[8?'+(CJ!9''76WD49X+)XX/C5Z#86G2QB_>5+^:P$G%09DZ0U\EK7/'YVCD
MM6#/P$MEG2G)X<["T_=BEJ/=.^P[VH1%^VFM\+12&#V@<!#!:ZW<TL*%RC"[
MJZ!/Z!J(T0;B:=2I\1S39Q / HC":-"A+VY,CKV^^,=,%BJ#2\P64BW@A+DB
MG40+Y]*FN;:E0?CS9$;BQ*._.E ,&Q1#CV+X (HII5=6Y@AZ#F\T,U3D<%+H
MDK'0W-O264>8&$X+\96VDH7MKLAT[LCI?6!7(L6C'N6O17.-O>/W2X0S7:R$
MNH6ER,#1>*YSRE7>6+= 4 %8"Y-!2M%E)Q!)I")Y75J2L'L'!#/%8H:F"=8W
M,R&<E<:@2F^W-G\4>8GP87H.%U]+,C.G:'SGZ]8?EB5I;.5""8<9"-L$L17<
M [@HC8;Q* C#$)[ ) XFPP1&83T>#X)X&,'9DEQF$=ZAHE2;21@-@W@RA"08
MD=BOOR31(/JM^7V--S(5"J[0:A@,*UWC("%%@U&UTR283,;PNR#WLM[/J& <
M5H*C(!K$K5$2)G!J*+9V24$NB8PQ[1W",!B-2&$PGHP@"J)D I>E6@@C:6>J
M2Y+<0>#K_88![<SC.*S'P_TAG DE,I8_I\ *0]^'24C/P7A"SRCA%>$@A#\T
ME74%GZA8WK=U'.Q'H]K >#*!]T*N*YMJG?<7Q$D0QA[*.((IA4.L2/M#TH1H
MS,(#0M&16Z,FMT:/SJT'LIVH.W7$&!ZQV'.IA$HE,6Z380$\%])4!-R5;)T0
M=B?;2U6=HM6!1D'TB>53CK>Z]EPG,#S3G7IKXCG]59GZ;2:>6(MWT^25%#.9
M2W=[9_94Y&0UMBS=-?68O'Z<S(^G+9FL"YD"!72!.QQQ97 E9 9X0VV*Q:J,
M:W*@H=.32XTCW>0,2UD>[],C(J*=I*DIL;6(IF.N W'21;]Q0[]Q)_W>SN>T
MH_,'B=][%WTZ53Q<J[>UV?$)73=3\F\R@EFS,-K:JM7A6)._0.0YM2E-$M3>
M8#?E-2?XF%LO9;J$-5*.^@T51X6[)E#$).I[I.6A\\>%LCJ7F0_<ABY3[D L
M9$07I[V8X7Z(V:R].ZBO<4M 0;ND?,BA60E#$'^6NO\5*5]4'ML>O 93O5#D
MT6P'<[JDV^YL$>K^$N^,^P7P44)O:*X2X9UK<-MHM6#>E6P#:XL_AO.3AO.3
M3L[O+K,!O*![ 3Q]1=;M["4[E?YH$<7YG'I]MKC%=]E&PURNZRN=L&CR6UY+
M9< W>,&&X6F;X?/F9+"; ^.[]?>53BN -+\]6:;;]9^13D'?(.\@J>=E% [V
M?Z9BLL,)$+6L5-CVVOPD+)N22'<ZXP%:[B'HYK+Y1(W9PD>,U^\1.X9!1 ?X
M$W@ZB((X3'B*SO1PU,69I.%,\B^/Z0 NZI@J>.N+.O>J!I=\*_2BJ2ZP@U^=
M ';SZ_\:O'[K$EF@6?BKLJV*=76?;&:;V_A)=0G=BE=7^=?"+-B0'.>T-'PV
MH5[)5-?C:N#TRE])9]K1!=>_+E%00K( ?9]K[38#WJ#Y'\7Q/U!+ P04
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
M"IB_3C +!V:A918>8]:&.X@Y6&/#A\8:>&KBL=#;0P8^3?'C$F$N2LJGHEZ
M-G[JDJKX!Q5H>C:NY/7VYQ_2P$]^5: L9]'L,H$X7X(UA((O-G8QO]C;31<+
MB0NN$3ZLM-*\S@TSKHP>Y ^L9BA[GWB0.I/$@Q\A#-V$P6]D2B("41Q"FKIQ
M /<O*+/"V/O,=^))> XL<0F#,FN.A8$5$O"E*:0!"9AW#I'GLO 5S'U(G-BW
MS"<N2R%VHX0.01 X7L1ZSM9(QP@P)PP#PF$3-TT@<L.(#C[SZ#KMW*5@C6HG
M)]44VFMA;SNZB>.3P"0&:1R3&.'$B.$'3A+&I/8YO"/3YWEA?4"HQD\]T9:'
ML^^[CHT"#HV0%HF8&(!5_2W:3@X-2E1(\ 5%<5%;Z/E*KR2Z@Q[_E5XB9+S,
M5B4WU[,M\*8IM];B-1!$4=F'>>LK(@;2Q$6GPO?2N"=R)AIR)CH9X4,83M<H
MJ3? 5%& =PI\,F%$RMVWDADYW_)"PF=>KE!]GV>JC\9#>79:"IMGAO)ZH+R?
M1PH679R3,,BS)30H"Y$#=4>%]F&#9*R=!5?*)NPWZ;OI5>6=JGRGZB7\B5RV
M9?1 V-K,"SQ_ H^%>KZ82^P\X[L,?J)O2-_ 3>A[WSL]I\S/L<YA6V"9@^<&
MYMES0]\N;+(/O!84$D5)I0+L TOZSP"B459P1@;8DJ3JG,+>L[_(92?B(![B
M(#[I@3]$'UR/M,C"LFR]VY6NOHK"5]NOX".^:+@M">*O0PX_R<X,0)>JX1E>
MCZP/Y1I'AZJM.E)N?U'P^/3I1'WMPWFGU[&"&D6FE$2^\4]?3AF+($U<C\'G
M%OG,CZE.)B[SCQ32R-31U V3_^7H0QHPXAA';A##"=<E@^N2TVWOV&!A0J=6
M>,@[)RF^VCM]_K6NL1G;]?IL7PYLY3#U+N-M8YP;VQU,9%%W?JZ5*(N<MW%(
M2V49D4$_$ YOR\*9K;QBI:AOJ?-7)_&=H&),E"2NL5ZA:4$.:UN1P^)VC;S0
MI (1S)8.39]KFJH;(X-#M3H'K!=D-!*>;.$S)Z* H8514_,C:D,I/-'X2X\.
M++ F><L6C><T619FY#$C,@2IDTY""!)GXDW,B3'344/F)(EM<($3Q[[91$Z4
M3@Y&RWAO)*U0+NS@K<@#JUJWT^EP.\SVTW:DW8&W?PS><TE:*2AQ3JB>FU#5
MENVPW1ZT:.R .Q.:QF6[7=+_$Y0&@-[G0NC^8!@,_WAN_@502P,$%     @
MX(!15,X-O*I!"   VA@  !D   !X;"]W;W)K<VAE971S+W-H965T-#@N>&UL
MS5EK;R.W%?TKA+K;R #7FO?#L0W8WDUBH&D,>Y.B*/J!'E$2NZ.A0G+\Z*_O
MN9S16(IEK7>+)L5:$F=(WN?A?7"/[[7Y9!=2.O:PK!M[,EHXMSJ:3&RUD$MA
M#_5*-IB9:;,4#H]F/K$K(\74;UK6DR@(LLE2J&9T>NS?79G38]VZ6C7RRC#;
M+I?"/)[+6M^?C,+1^L6UFB\<O9B<'J_$7-Y(]_/JRN!I,E"9JJ5LK-(-,W)V
M,CH+CRX*6N\7_*+DO=T8,]+D5NM/]' Y/1D%))"L9>6(@L#/G;R0=4V$(,:O
M/<W1P)(V;H[7U+_SND.76V'EA:[_IJ9N<3(J1FPJ9Z*MW;6^_T'V^J1$K]*U
M]=_LOE\;C%C56J>7_69(L%1-]RL>>CN\9D/4;XA>NR'N-\1>T4XRK]9[X<3I
ML='WS-!J4*.!MXW?#6U40UZ\<0:S"OO<Z653Z:5D'\6#M&S\4=S6TAX<3QQ(
MTX))U9,Y[\A$+Y )(_:C;MS"L@_-5$ZW"4P@TR!8M!;L/-I+\;VL#ED<<A8%
M4;A#H(M7;P_+/>+$@YUB3R_^K)W8>V6K6MO62/:/LUOK#*#XSSTLDH%%XEDD
M+["XT(UURK6R<9;I&;LR^D[YTX+#RC8=M<L_^VGWNQW$EP^( %:R\:ULY$RY
M U:!L;).3HFK6TCPJW&Z53-G8]7@C6ZM:*;VX(C]70K3N9C!PG)Y*\W@)/H*
MO+W916L,U#ABW\FI-*)F;UB4\R(/, @S_YWR(DW8C1-.LI3'><1*(L'#H& X
MH#A^#2MX$F0LC'E8YBP.> 8"2<BSI&!APJ.\8$G!LSB"+#,)CM,GAN.PY%&6
M'6!0=(,XC7@!XAW+<9Z5F$Q3S(1%/+ ,\XYGBDTE&R=)Q),RP<J(9Q'MB'F:
MQO@M2IX&&+QA<<E)9^@4\#Q*,1@G 90-#_: (AU D>YUW+6$=RI5*^&C7N^@
MGQM%[O*JV$%G>FR=-H_L0IN5-J0G ?::!D[[G1=ZN1+-XS<XJ+.9]#'T:<T6
MS)[PMPMN^Z4^0X#?*??AS2&;]>+:0=QJ$)< :IZ+^^<_%5&8?VN9VH-C3O++
M0:LU*<[NA67XZU!M7PWB'6=&N"]0 <3>;GQUN'M20%K.&J1IF&9-KM>$A?@7
M#9 <"$X5E*-SI0C@*4!(^ 8HR5L5X(^MXX@@WWTH4!G9B[2F;60M"#LPL%RN
M:OTH)=30U2>F5^0J9 &"=XY/\GD27C;I6H,@!6<W<]MQAW#>9]&WVR36AMP@
M\;U$-FZ0]MQBH>LI19WUUO#51)9J;@:DB>K75L$<[/)J(#"0+#ZK4[40S9P\
MY1<@OK>5HV#_6U+C*"L./J_>Y5\^7C(%&%?>UZ^E'H4)^PE'P,#MFQSN?'IX
M)@N,WJTFY,2[L/L4[Y&LW[(,GW$$/[W=$Z6R(4IE>\_[#8K+:5M+4O!B4/"L
MJG0+M,*C5[I6U>.N-+Z?\$?$@ V++11.\A/5E:?:&Y?,O17@_"$V$L>2YHRT
MJ.PV \&SY.9/*"I4[Z>?5K)#E-T3+\#@S#[Q:+'&>"D:U*_/!<5:N&75;J]%
M]7VG(,6.#5V,WH!-[]=;B9) [HJ&E%\C7I;)UF@-D[VP6&<M!( RYG&8=SDS
M23+V5\2IGADR>1#S(J,\A^R)=2%EO'[EP>926)#=^SI:3M^).]@3&F!F2>5[
M,^V'[R1.ZYVHR>YV(8P\8N?"JHH4./1Y-3[LLFIT&&1TX&IO0#^=^>DP[Z<A
M_+FH15-)=N-[H#_:7^O"Q)M<6"N!P#<L25 \>-62K$1=X2T8!:A]$+VWMB!_
MWB*N.B5I7QQ'/$XV'?KT;@N\-V1'BJ;2V&_8!QC8/?X_P?A:.C28V Z1&I\U
MWK \C5%S%>17&"+E>9AL FM/E,J'*)7O+[ ]<]M%$A+"2G,GGU77G'UXJ.K6
M9Z++QB'C6N?Q>B4;49,K=A5$>UE3+WYD$:7DR0AV\GQ'&\%MD,ELR+1=*LA!
MIKG1EC9L2+9:2X9B!V_W!;GU^8 S7F)&VS']'"1P3<C3,F3?>Q'$DOSLUV*[
MD>BFO2)M0]7?O%'_[E'<AQA/6/21V)>$F%MIJ[HPZ\0GV=#^E5&0"-%#Z:FE
M*/8_YD>&K[J.I>?*$/_0%#QC.Y5?Q1;T$6Z5V:J%Q6J%PT$-=U]&2L^B5DOE
M^L0SQDDHDH.O]QE*671/9;K#@E^IRFL\-HZ*X.#WQ4@0_/X829&5_G"$)$7Z
MW^"#,@\04J DW!-@BR' %E]T@S&D,FI0SGSVVQ4Z]Q+='3IWY54*A!OYDC._
MO/'W&B@X^KAYB]H"WX_L7ZU1=JK\;2+_DCN0%WK&#@K3YX(=419!E%?D2/^*
ML &&37^52:W/BWT!:H0@X6E$E4X2)3Q,,^1Z]&OOZ/;2%U%4R'7 61=U='V1
ME^39"/7?^GZ #&3=ND?M&\9*&/,(M-P+0P<IY$$:TDU&F(>0F[H-:F]IJZ'>
MHWUJ;G*>0*J4EWG&SG736K(YU73*TJT!'FB7]EW)EI0Y\GS,$E[ZFQMXJ>IO
M"5(>ERDF(M24Z^[7M\A=+0Y?U+ QP)Q#QBR(^I:GY$%$].(D>MD+*+4"7U,D
M6<ZS(F&_B+KMV KRM#] XP(!MZ#;'9Y2<P>3H_SHC9^6/$3!N8/#!NJ.^H;/
MGW8/M7777G4QX?5^'\=13A=*!WX<ESS.DJZ^WF3N"\,0P"@"?YC#DN?I[M,\
MV;@F7DHS][?G5,LA>'47L\/;X8+^S-]+_^;]>7ATT=VS/Y'I;OU_%&:N$)=J
M.0/)X#!/1\QT-^G=@],K?QE]JYW32S]<2 %\T@+,S[1VZP=B,/QWQNE_ %!+
M P04    " #@@%%4(D7$ZZD"  # !0  &0   'AL+W=O<FMS:&5E=',O<VAE
M970T.2YX;6Q]5$UOVS ,_2N$3RN0UE])6@=)@*3ML!T&!.VV8AAV4&PZ%BI+
MJ237W;\?)3M>-C2Y2*)$/CZ2(N>MTL^F0K3P5@MI%D%E[7X6AB:OL&;F2NU1
MTDNI=,TLB7H7FKU&5GBC6H1)%$W#FG$9+.?^;J.7<]58P25N-)BFKIG^O4:A
MVD40!X>+![ZKK+L(E_,]V^$CVF_[C28I'% *7J,T7$G06"Z"53Q;CYV^5_C.
ML35'9W"1;)5Z=L+G8A%$CA *S*U#8+2]XBT*X8"(QDN/&0PNG>'Q^8#^T<=.
ML6R9P5LEGGAAJT5P$T"!)6N$?5#M)^SCF3B\7 GC5V@[W30+(&^,575O3 QJ
M+KN=O?5Y.#*XB4X8)+U!XGEWCCS+.V;9<JY5"]II$YH[^%"]-9'CTA7ET6IZ
MY61GET^>-A:P>D5-58#'BFDT\.$KVPHT%_/0DA>G&^8]XKI#3$X@Q@E\4=)6
M!NYE@<6_ "'1&S@F!X[KY"SB'>97D,8C2*(D/H.7#C&G'B\]@7?/M.1R9V"#
MNHL7?JZVQFKZ(K_.X(\'_+'''Y_ OV4B;P3SOTZ5<"+%[V7V+*[KSYG9LQP7
M 36@0?V*P5# 2]:CFZZ +5)8><^$G#,#I1+4@U1;+L%6JC%,%N9B!C^0Z:Y8
M0*G&>DMI.:3;+1$M<09K9GA.N/_YRU5=4Z"]6^I[8PF7\@OQ]70TGJ:TIZ/Q
M349[/(JS,=R7)?6D2TW!1>.Z$NB?Y\_ 6J8+ Z0]26F-HQ3&H^AZ G=.C^B=
M<DX.^^,EOC3\E0F4]GU*V2B+IY[:)$MHGXR2:0;O53T\ZJH:]<[/#D-^&FF[
M!AMNA_&TZKKRKWHWV[XPO>/2@,"23*.KZTD NIL7G6#5WO?H5EGJ>'^L:,2B
M=@KT7BIE#X)S, SMY1]02P,$%     @ X(!15.GN6$!' P  VP8  !D   !X
M;"]W;W)K<VAE971S+W-H965T-3 N>&ULC55M;]LV$/XK!V$?6H"+*$K62V ;
M<-*L*]!B09)N&(9]H*VS)%0B/9**T_WZ'2G;]8#4VQ?[^/(\]]P=[S3?:_/%
MMH@.7H9>V474.K>[CF.[:7&0]DKO4-')5IM!.EJ:)K8[@[(.H*&/!>=Y/,A.
M1<MYV+LWR[D>7=\IO#=@QV&0YNL-]GJ_B)+HN/'0-:WS&_%ROI,-/J+[O+LW
MM(I/+'4WH+*=5F!PNXA6R?5-YN^'"[]VN+=G-OA(UEI_\8L/]2+B7A#VN'&>
M0=+?,]YBWWLBDO'7@3,ZN?3 <_O(_E.(G6)92XNWNO^MJUV[B,H(:MS*L7</
M>O\S'N*9>;Z-[FWXA?WA+H]@,UJGAP.8% R=FO[ERR$/_P<@#@ 1=$^.@LIW
MTLGEW.@]&'^;V+P10@UH$M<I7Y1'9^BT(YQ;/F)#*78@50WO43=&[MIN Q_4
M5&^?N#=/<MVC?3N/'3GTL'AS(+^9R,5WR!,!G[1RK84[56/];X*8E)[DBJ/<
M&W&1\1UNKB!-& @ND@M\Z2G\-/"E_Q'^ ^ZT<9UJX(_5VCI#C^7/"_39B3X+
M]-GWZ*F'ZK%'T%MR\8QJ1-@:/<#=BT.C9 ^WH<1H;*C 1ZV:'S_2,ZUA92TZ
MRV#]]:PN!%A1Z]G72G%1B>_M:[N3&UQ$U+P6S3-&RZ>6Y.B>&M-'[GR9#]W9
M_8T6NK-'(-?4T=!\>R'2ZX WG0+7ZM&2>OOV&CZKSI'X1R<=$=R-AJ8'O*>K
M%"[<MIV2\(MKR7[2CH+Y':69W@9097%8T\FQNJ>$_0!IE;*\XF2)K&!%EGF+
M<Y:D,[*2:L9FHO(6XVG!>%5.B>Q#(F5().0I2[($DIQ5I8 JYY"R@GM\F;&B
M+"]IX6=:1,F9"#C!2P(6WF]>,C%9,V(E-\2:D!I"OJ*$LRI)",YXDI%F491
M$G(?54GR\N*"EJ0ZUT+9R$L?N1"4E[3T"I(9X[E70-FA#'E5A9BQ7,Q>TU*R
MK,I!))1?2@[+* K*-1>$HK2*(H?7VB ^&SCT>)LP5BUL]*C<-'M.NZ?)O9H&
MUK?KT]C_)$W3*0L];@G*KXI9!&8:I=/"Z5T87VOMJ%."V=+7!XV_0.=;K=UQ
MX1V<OF?+?P!02P,$%     @ X(!15%@K66?I P  RPD  !D   !X;"]W;W)K
M<VAE971S+W-H965T-3$N>&ULG59?D]HV$/\J.VZF<S?C'$C&8.Z &2#-M ]I
M;KAK^]#I@[ 7[,:6J"3"T4_?E6P<H(1<^V*OI/W_V]5JM%/ZD\D1+;Q4I33C
M(+=V<]_IF#3'2I@[M4%))RNE*V%IJ=<=L]$H,B]4E1W>[?8[E2AD,!GYO4<]
M&:FM+0N)CQK,MJJ$WL^P5+MQP(+#QJ)8Y]9M=":CC5CC$]I?-H^:5IU62U94
M*$VA)&A<C8,INY_'CM\S_%K@SAS1X")9*O7)+7[*QD'7.80EIM9I$/3[C',L
M2Z>(W/BKT1FT)IW@,7W0_M['3K$LA<&Y*G\K,IN/@R2 #%=B6]J%VOV(33S>
MP525QG]A5_/&W0#2K;&J:H3)@ZJ0]5^\-'DX$DB^)L ; ?Y:@:@1B'R@M6<^
MK'?"BLE(JQUHQTW:'.%SXZ4IFD(Z%)^LIM."Y.QD@<;J;6JWNI!KF.="K]'
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
M7%ZA+%V/D?7"JI4?K.;*XICF'PL<O4$[ WR_4,IN%^Z =I@?_P]02P,$%
M  @ X(!15+-]MEO; P  E \  !D   !X;"]W;W)K<VAE971S+W-H965T-C N
M>&ULS5=;;^(X%/XK5C0/,U*'Q F7,@*D<IE=1F6W:C7=A]$^F,2 -8G-V@YT
MI/WQ>^R$!$IJD/:E+Y#+^3Y_Y^+CG,%>R)]J0ZE&+UG*U=#;:+W]XOLJWM",
MJ);84@YO5D)F1,.M7/MJ*RE)+"A+_3 (NGY&&/=& _OL08X&(M<IX_1!(I5G
M&9&_QC05^Z&'O<.#1[;>:// 'PVV9$V?J/Z^?9!PYU<L"<LH5TQP).EJZ-WA
M+S/<-P!K\<SH7AU=(^/*4HB?YF:>#+W **(IC;6A(/"WHQ.:IH8)=/Q3DGK5
MF@9X?'U@_VJ=!V>61-&)2/]BB=X,O5L/)71%\E0_BOWOM'2H8_ABD2K[B_:E
M;>"A.%=:9"48%&2,%__DI0S$$0!XF@%A"0A? [IO *(2$+T&M-\ M$M ^UI
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
M](DXOXPH":G(#/3[)>?J<),%J#ZT3/\#4$L#!!0    ( ." 452_FE:Y3P(
M $H&   9    >&PO=V]R:W-H965T<R]S:&5E=#<Q+GAM;(657V_:,!3%OXH5
M]:&5-I(X)(0J1"I%TR:M$BKM]C#MP9 ;8M6)F6U(^^UG.Q"Q8>"%^-\YOW/C
MZ)*U7+S)"D"A]YHU<N)52FWN?5^N*JB)'/ --'JGY*(F2D_%VI<; :2PHIKY
M. @2OR:T\?+,KLU%GO&M8K2!N4!R6]=$?$R!\7;BA=YAX9FN*V46_#S;D#4L
M0+UNYD+/_-ZEH#4TDO(&"2@GWD-X/QV;\_; #PJM/!HC4\F2\S<S^59,O, $
M @8K91R(?NS@$1@S1CK&G[VGUR.-\'A\</]B:]>U+(F$1\Y^TD)5$R_U4 $E
MV3+US-NOL*\G-GXKSJ3]16UW-HX]M-I*Q>N]6">H:=,]R?O^/1P)<'A&@/<"
M;'-W()MR1A3),\%;),QI[68&ME2KUN%H8RYEH83>I5JG\N^@2Y+H,UKHZRZV
M#! OT9Q\Z/>N)+J=@2*4R3MT@VB#7BJ^E:0I9.8KS38._FK/F78<?(8S@]4
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
M1R$6.\;Y=9WR0443A%$4U6L*"DU!JR8KX/2[#4YTO4]:C=7 _-4+# N!8:O
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
M@^'.+3IKFH7] _V/29TH:4WT<4T3NC!"=-^C6QUUJ[*C?TR=T+T4(2AEI%%
M91@C\SQ%,W@R;WN9M;!C5*J-&9_#F7%MS?A5O+ED?>%%0_>0%+5EXG;/;)/B
M_QL5KKT0^^>H?NV,.'B5Z@?[EN2ZP:'RU]:)V[VSM?RG,JS:(?'P#&*0VB")
M^QIBE*S;8GC>@#1K06K[).WV><T?8YH!^BU=?$3?)@MEBWY*)4CMD(2<0XG:
M!(GW*DIX>TJ0_&6[48C:(<E_<\CFT+]\#9TW3.GU#KQ%D-HQR<G>,N<EU78&
MA QV,G"V/E)-DZWL=H)"H5AS77RK5:/5EL7$?JCOC$_QQ76Q\5#3%/L@=T9!
MQA5*8&DHW6Y@,I+%UD)QHD5F/X470IM.MX<QT AD/L%<7PJAGT_R -4&S_A?
M4$L#!!0    ( ." 4525>L)]S0(  $4(   9    >&PO=V]R:W-H965T<R]S
M:&5E=#<V+GAM;(V66T_;,!B&_XH5[0*DC9Q/J(T$[:9Q,0W1 ==NZC86CIW9
M+BW_?K83HI#3N&GLY/W>[_'G4Q<GQE]$@9 $YY)0L;0**:MKVQ9Y@4HHKEB%
MJ/JR9[R$4G7YP1851W!G@DIB>XX3V27$U,H6YMT]SQ;L* FFZ)X#<2Q+R-]N
M$6&GI>5:[R\>\*&0^H6=+2IX0!LD'ZM[KGIVZ[+#):(",PHXVB^M&_=ZE6J]
M$3QA=!*=-M CV3+VHCMWNZ7E:"!$4"ZU U2/5[1"A&@CA?&W\;3:E#JPVWYW
M_V'&KL:RA0*M&'G&.UDLK<0".[2'1R(?V.DG:L83:K^<$6%^P:G1.A;(CT*R
ML@E6!"6F]1.>FSIT MQ@(L!K KS/!OA-@&\&6I.98:VAA-F"LQ/@6JW<=,/4
MQD2KT6"J9W$CN?J*59S,;O*<']$.?#^K=2&0 -_ BE$AL3PB*@5@>S"07*R1
MA)A<*NWC9@TNOER"+P!3\*=@1P'I3BQLJ=!T CMO,&YK#&\"8XWR*^"[7X'G
M>.Y(^.KSX<['<%L5I*V*UU;%,W[^A%^_!+ I 6I*,)/";U/X)D4PD>*.YLI=
M+6&0LU*[0KVLQRI7^X3&1V_*U\R/4S=>V*_= @U57I+Z8:OZ !FTD,$LY 82
MR+&:<C6KH()OG!$")#SW*U"#UEY1!R$)W;3'.12IP;CCF&&+&<YBJ@VMMJL^
M523F2)TQ$K MP0=3TE'4<$@1QEX/=2B*DB0:1XU:U&@6]1ER#JE\^Q]@-,@=
M!EY_SL=$S@1@W +&LX!/,)]<B?$@7Q!U"E)##45^%$Q,<-)");-0OV6!^!A1
M,DCF)7YG.=5((ZH@2";V1MHRI;-,-[-G0HV7#C9EZ@5^?YT-57'L14$/S^X<
M\OJ"_07Y 5,!"-JK..<J5@:\OK3JCF25.?>W3*I;Q#0+=<\CK@7J^YXQ^=[1
M5TG[SR'[!U!+ P04    " #@@%%4ZC>CWM8"  !/!P  &0   'AL+W=O<FMS
M:&5E=',O<VAE970W-RYX;6R-E5%OVC 0Q[^*%?6AE;8F))!,%2 5VFI[J(;*
MNCY,>S#)D5AU;&8[I/WV.SLAI32PO8#MW/W]N_/Y/*ZE>M8%@"$O)1=ZXA7&
M;*Y\7Z<%E%1?R@T(_+*6JJ0&IRKW]48!S9Q3R?TP"&*_I$QXT[%;6ZCI6%:&
M,P$+1715EE2]SH#+>N(-O-W" \L+8Q?\Z7A#<UB">=PL%,[\3B5C)0C-I" *
MUA/O>G U3ZR],_C)H-9[8V(C64GY;"??LHD76"#@D!JK0/%O"W/@W HAQI]6
MT^NVM([[XYWZG8L=8UE1#7/)GUAFBHGWQ2,9K&G%S8.LOT(;S\CJI9)K]TOJ
MUC;P2%II(\O6&0E*)II_^M+F8<]A$!]Q"%N'\-!A>,0A:ATB%VA#YL*ZH89.
MQTK61%EK5+,#EQOGC=$P84]Q:11^9>AGIM=IJBK(R.T+UH4&33Z3>4%%CB,F
MR!-5B@KS2KZO.,NI3;PFYS=@*.,7:/JXO"'G9Q?DS!K_*&2EJ<CTV#=(9O7]
MM*68-13A$8I!2.ZE,(4FMR*#[+V CR%U<86[N&;A2<4;2"])-/A$PB <] #-
M_]\].($3=6F.G%YT1.]>;@%KW]@\+0TFB:J,+)3,JM2\9=D=!N7DUX/DG&"9
MUFCV^\3VPV[[H=M^>&3[&>1,""9R,J.<BA3ZCJB1&#D)>_FWT]$PB,?^=C]M
M'XV&R2#JC-[1C3JZT4DZS,.6:5=;V)9(W:2#V1+4VA9G5BG+;@H@&U!,9GWX
MS1[Q'ED4C@[Q>XR&\1'\N,./3^+?57S-.'?'*]<[_%<BW^Y,'V_\ >5S%$:C
M ^ >JS!)@G[BI"-.3A+C)?M'+20]M1 F!VQ]1GL%TZ#Y>[VI!)6[EJU)*BMA
MFNO<K7:OPK5KA@?K,WPMFN;^)M,\-?=487EKPF&-DL%E@DBJ:=_-Q,B-ZX K
M:;"?NF&!+QXH:X#?UU*:W<1NT+VAT[]02P,$%     @ X(!15,,?6^)3 @
MQ@4  !D   !X;"]W;W)K<VAE971S+W-H965T-S@N>&ULG51;;]HP%/XK5K2'
M5NIP;HRV"I%:HG4\5$-%W1ZF/9CD0*PZ-K,-M/]^QTZ(F* 5&@_$E_-=SK&/
MLYW2+Z8&L.2U$=*,@]K:]2VEIJRA86:@UB!Q9ZETPRQ.]8J:M096>5 C:!R&
M7VC#N SRS*_-=)ZIC15<PDP3LVD:IM_N0:C=.(B"_<(37]76+= \6[,5S,$^
MKV<:9[1GJ7@#TG EB8;E.+B+;HO4Q?N 'QQVYF!,7"8+I5[<9%J-@] 9 @&E
M=0P,/UN8@!"."&W\Z3B#7M(!#\=[]J\^=\QEP0Q,E/C)*UN/@^N 5+!D&V&?
MU.X;=/D,'5^IA/'_9-?&CM* E!MC5=.!T4'#9?MEKUT=#@#1>X"X \3G I(.
MD)P+2#N +S5M4_%U*)AE>:;5CF@7C6QNX(OIT9@^E^[8YU;C+D><S2>J:;C%
M<[2&,%F1B9*6RQ7(DH,AG\E=57%W0$R0J6QOF3NNBP(LX^(2(Y[G!;GX=)E1
MBW8<*2T[Z?M6.GY'NH!R0)+HBL1A')V 3\Z'AR?@Q=GPZ.9?.,4:]H6,^T+&
MGB_YKT(6W)1"F8T&\NMN8:S&^_[[ ]6D5TV\:OJ.ZFRCRQJO/5&Z DVPKXU%
M=10^=1XMU]!SN?=@FT=A.!J&^,OH]H2-M+>1?FCCNZU1?2JWF+[2;U=D[ZLB
M#TI5YHH\:&7,*4_IL:>;-+T^M-3>AN/ -+Z)CN**X[AD%)Y(D1XTC7OA'IE>
M<6F(@"4BP\$(*73[:K03J]:^CQ;*8E?Z88T/+6@7@/M+I>Q^XEJS?[KSOU!+
M P04    " #@@%%41-QPJ"P"  #G!   &0   'AL+W=O<FMS:&5E=',O<VAE
M970W.2YX;6R%5-]OVC 0_E>L/&W21DB ;JL "<JF(HT)M=KV4.W!Q$=BU3^8
M?6G:_WYG)V1,*NPEN;/OON^[L\_3QKI'7P$@>];*^%E2(1ZNT]07%6CN!_8
MAG;VUFF.Y+HR]0<'7,0DK=)\.+Q*-9<FF4_CVM;-I[9&)0UL'?.UUMR]+$'9
M9I9DR7'A3I85AH5T/CWP$NX!OQ^VCKRT1Q%2@_'2&N9@/TL6V?5R$N)CP \)
MC3^Q6:AD9^UC<-9BE@R#(%!08$#@]'N"&U J )&,WQUFTE.&Q%/[B/XEUDZU
M[+B'&ZM^2H'5+/F8, %[7BN\L\TM=/5$@855/GY9T\9.Q@DK:H]6=\FD0$O3
M_OESUX>3A.SJ3$+>)>11=TL45:XX\OG4V8:Y$$UHP8BEQFP2)TTXE'MTM"LI
M#^<K</*)A\ZPM?'H:FHX>O:>+820H6]<L14@E\JS-YWQ=IHB40> M.AHEBU-
M?H8FR]G&&JP\^VP$B'\!4M+<"\^/PI?Y1<05% ,VRMZQ?)AG%_!&?2-&$6]\
M!N^;12K4R])P!,&X9[<@2FG*D[ZPAPWH';A?%_C&/=\X\HW^W_B'K[3'U@C:
M7T*>],B3BY5L.-:.S@X\LWM&<]MP)X)9T DX&@/_VOE=QOPT88*_^-?4I2>7
M3X,KXXAY(JL-MO>P7^VG>-%>WK_A[1.PX8XZ[IF"/:4.!Q](E&O'JG70'N)5
MWEFDP8AF12\1N!! ^WMK\>@$@OYMF_\!4$L#!!0    ( ." 451>&,:1P 4
M !4?   9    >&PO=V]R:W-H965T<R]S:&5E=#@P+GAM;+69:W/:.!2&_XJ&
M[>RD,]EB2;[1)<PD4)(T#:60E.UT]H,""GCJ"[5$Z/[[E6WY@F_8&?HEP?(Y
MCZ7S^IPCC?M[S__!-I1R\,NQ77;1V7"^?=_MLN6&.H2]\[;4%7>>/=\A7%SZ
MZR[;^I2L0B?'[B)%T;L.L=S.H!^.3?U!W]MQVW+IU =LYSC$_^^*VM[^H@,[
M\<#,6F]X,- =]+=D3>>4/VZGOKCJ)I25Y5"769X+?/I\T;F$[Q<X= @MOEIT
MSS*_0;"4)\_[$5S<KBXZ2C C:M,E#Q!$_'NA0VK; 4G,XZ>$=I)G!H[9WS%]
M'"Y>+.:),#KT[(6UXIN+CMD!*_I,=C:?>?L;*A>D!;RE9[/P+]A+6Z4#ECO&
M/4<ZBQDXEAO])[]D(#(."%8X(.F FCI@Z8";.JC206WJH$D'K:F#+AWTI@Z&
M=##R#JC"P90.9M,G]*1#KZD#5&+EE,8NB=B-U8:QW+"QWC 6'#96',:2P\::
MPUATV%AU&,L.&^L.8^%A0?E*EUAZ6-"^ZF6!L?BPL?HH5A\U5A_%ZJ/FN9XD
M>V/U4:P^"M7O1I4H+&,CPLF@[WM[X ?V@A?\"&MAZ"^JE^4&97O.?7'7$GY\
M,**^]4*"T@EN7<;]G2C)G(&_P.<=9YRX*\M= U$@]\1?@:'G<E\46@;.1I03
MRV9OA>7$XV!$F;5V":<K0!BXH:MUX)<2P?=[ZCQ1_U_PYQ\FUM6_@>6"AXVW
M8^(1[#P:A<51J&N-!W%^<,QS V].>MWO<B% $,;N4@;[*@HVJ@SV\AW \!P@
M!<$/CS-P)J/QMH0U;,%ZG(_ V9LRRJ@%93CY%LPH"&\9ZD,+U/T_DXH)C5M0
M/DYK)W3= G5]-8U0N!1UTP)U\S@&9V->AKEM$^W+*LT^MJ#<S1;R+8*E"[MK
MP7I85,WH4PO*_+J*<M^<HAS+CDD+5G5V?&Y!.9(=TQ:HZNSXTH)R)#MF+5!'
MLF/> E63'0]MHEV9'8\M*,>RXVL+5G5V+%I02K.C*YIVTKE1TKE1B%4KL'>>
M.*:Y8"'./G%SK:'BA(I#*CZ^'_C^2=P#MYPZK(ZL)F2U=KX9\B5CE)\'&P=Q
M<B,VN'2\G<O+>F"$U$)D< )]&2C][DNV5D86O6J+29&A8\,X-'HL8O0>TA0E
MA1TL6DL6K=4N^L/.]YK(HR<\_<3R& G9.+D\5Q$R."JE83L(6J1B9*9GK QL
MJ.:AU7T)+&#EY2S"=(A55*Z3F:S>K%W]1[(E+F44?*.-TJF7<'LGU@LJZ<Y=
M.7U"268V?!J"^##&8VD%83;*2HD893A3R2G[I0'N, :9TPNLC<$]_64M116<
M4M8HSV!:72$ZM7)IC87X-RB'BR^^F7GOY1X=%ZH=5,N$*](,P] /K:9E-*VZ
M*L*T%\#Z9G#E6]QB&S 5JUTU$BZMN% [M7!I]87Z;Q!.+X1:U;2<<-?2"J*,
M&<9&0;<B#"$SU\UF93"H&UJ%;&F/@/5-XF;GKHEOB80;>[Z5.=;713>MP= \
MM7)I'8:]WZ!<KZB<>/\/@WTCK2#.!AMKQ3XX*>.I/?70:E[.P]7E$J4M ]6W
MC =B[:,^-_)LF_A-]$-I,4;PQ/JAS&:W?K?[*OTD,QOOG"1WTJ1FASDIH4"L
MY_+W:PD(FPJN2#F4]@I4WRN&Q"6K(.-:*):68:2>6K&T#J/ZK>_K%-.*L1:%
MZS#6M]+JL,F9!=U*6 K,63V4L9!9)5O:*5!]IYA;HE)NQ1&MC6YI'4;&J75+
MJS"JWPJ_3C?S6*9]DB:UF5:D0)A7;%$"@JI>I5C:(5!]AQAN+)><@V\[D6LS
MZCJ6^V35':C3HHN5$XN%TY*+Z_>_KQ)+,K,!-+5\LQI)JX--NZ:*<UM.M!):
M#O6Y#)7O9=W,-XS@@_$]\=>6RX!-GX6/\LX0#_"C;[#1!?>VX6>-)X]SSPE_
M;BA943\P$/>?/8_'%\&7DN1+^.!_4$L#!!0    ( ." 4505U5'BQ (  )0(
M   9    >&PO=V]R:W-H965T<R]S:&5E=#@Q+GAM;+5674_;,!3]*U<1#R Q
MDB;] K65H!T"";:*#O: >'"3V\;"L3O;:9FT'S_;2;- 2V$2O"1V<L_QN>=>
MQ^FMA'Q4*:*&IXQQU?=2K1<GOJ_B%#.BCL0"N7DS$S(CVDSEW%<+B21QH(SY
M81"T_8Q0[@UZ[ME8#GHBUXQR'$M0>981^?L,F5CUO8:W?G!#YZFV#_Q!;T'F
M.$%]NQA+,_,KEH1FR!45'"3.^MYIXV38""S 1=Q17*G:&&PJ4R$>[>0RZ7N!
M580,8VTIB+DM<8B,62:CXU=)ZE5K6F!]O&8_=\F;9*9$X5"PGS31:=_K>I#@
MC.1,WXC5!98)M2Q?+)AR5UB5L8$'<:ZTR$JP49!17MS)4VE$#=!HO@((2T#X
M7D!4 B*7:*',I34BF@QZ4JQ VFC#9@?.&X<VV5!NRSC1TKRE!J<'(Y1T2:R5
M<,F5EKDID5;P!<X((SQ&F+AFNA(Q<;;OCU 3RM2!";F=C&!_[P#V@'+XD8I<
M$9ZHGJ^-+LONQZ6&LT)#^*J&^ BBQB&$0=C8 A^^'QX\A_O&C<J2L+(D='S1
MFY:H0S@G5,(=83G"_94)A$N-F7K8L4Q4+1.Y99JO+//-V$HRD7,-8@9$*32^
MFZVH3 $PV>9BP==R?'9[+@?1<<]?UIW:# G;K2KFF<YFI;/Y'SH9)5/*J*;X
MAMB"M%U7$@4OU&[&1-WM8EN5V-9NL4+#"!6=<V)T&5?A I,YY?-:=\/]-693
ME _P!\82%X0F\/7)?!>5R<ET,'S7*4H8YE+:Z-.B,FO0CLJW*Y'MSVRP3K5,
MYX,;K+-9CY<-MAGR:H-U*YW=#ZW9:1S+'&LU>T=ICBLMQY]9FD;P[[,;?,:N
M*EE;.[?5EJ"-?>77C@Q[7E\3:2Q7P'!F0,%1QZ!E<006$RT6[A29"FW.)#=,
MS6\#2AM@WL^$T.N)/9BJ'Y'!7U!+ P04    " #@@%%4A-61D,@"  !6"
M&0   'AL+W=O<FMS:&5E=',O<VAE970X,BYX;6R5EF]OVC 0QK_**>J+5NJ:
MD/!O%2!14-=*VU2U:_=BV@M##F+5B9GM0/OM=W9"!$U*J83 CN^Y_/SX;#/8
M2/6L$T0#+ZG(]-!+C%E=^KZ>)Y@R?2%7F-'(0JJ4&>JJI:]7"EGL1*GPPR#H
M^BGCF3<:N&=W:C20N1$\PSL%.D]3IEZO4,C-T&MYVP?W?)D8^\ ?#59LB0]H
M'E=WBGI^E27F*6::RPP4+H;>N'4YZ=MX%_#$<:-WVF!G,I/RV79NXZ$76" 4
M.#<V Z.?-4Y0")N(,/Z5.;WJE5:XV]YFOW9SI[G,F,:)%+]Y;)*AU_<@Q@7+
MA;F7FQLLY].Q^>92:/<-FS(V\&">:R/34DP$*<^*7_92^K C:+7?$82E(#Q6
M$)6"R$VT('/3FC+#1@,E-Z!L-&6S#>>-4]-L>&97\<$H&N6D,Z,I*KYFUDJX
MS;11.:V0T? %QEHC-5@6@^!LQ@4W'#50J6B*P!CL&D!&=48N<@UQCF DF 1!
M6>M +NBSH"1P.D7#N-!GE/;Q80JG)V=P CR#7XG,-;U!#WQ#<[%$_KSDOBJX
MPW>YYQ<0M<XA#,)6@WQRO#S8E_OD8&5C6-D8NGS1YVRT[MU@O.39$L:V8 L3
MIUS/A=2Y0O@SGE$X%?/? Q1111$YBO;'%&[YSN&:<05/3.1X#M^4U+H8:/*[
M2-UQJ>W>7X^BKP-_O>MI/23L=JJ8/>1VA=S^%#(L'25+99Z9LH"::(NLW1V4
MX WLH8@]U$Z%VCF(^I/H*BY@Q?ZH]D,39*>&4+.T'O*NI=V*LWNLI=_+G?O:
M5 G58!-ZM\X5O76X'A/UF]%[%7KO6/3MH?-Z;$7T/JR(0Q%[N/T*M_^)BF@\
M)IM(^_5M5/.V'E/SUM\Y]>V-^X,I.F@T"%R0*+CHD5H5MUC1,7+E+H*9-'2M
MN&9"%S\J&T#C"RG-MF/OENJOQ.@_4$L#!!0    ( ." 453OJ]SOJP(  )8&
M   9    >&PO=V]R:W-H965T<R]S:&5E=#@S+GAM;)5574_;,!3]*U:T!Y"
M?+6,H302;;:!!!N"L3V@/;C);6(1VYWMM##MQ^_:2;,6:,5>$OOZGN-S/W*3
M+*5ZT!6 (8^\%GKD5<;,3WU?YQ5PJH_D' 2>S*3BU.!6E;Z>*Z"% _':CX+@
MV.>4"2]-G.U:I8EL3,T$7"NB&\ZI>AI#+9<C+_16AAM65L8:_#29TQ)NP=S-
MKQ7N_)ZE8!R$9E(0!;.1=Q:>9D/K[QR^,UCJM36QD4RE?+";BV+D!580U) ;
MRT#QM8 )U+4E0AF_.DZOO]("U]<K]D\N=HQE2C5,9/V#%:8:>2<>*6!&F]K<
MR.4Y=/$X@;FLM7N29><;>"1OM)&\ Z,"SD3[IH]='M8 X?$60-0!HN> P19
MW 'BMP(&'6#@,M.&XO*044/31,DE4=8;V>S")=.A,7PF;-EOC<)3ACB39J#8
M@MK<DPNAC6JPI$:30_(96X;L74JM]\D-Y+(4[#<4!(U?306*3"3'/JML SAL
M+CFL_/<R,)35N#HD=[<9V7NW3]Y9Z+=*-IJ*0B>^0?%6@I]W0L>MT&B+T# B
M5U*82I./HH!BD\#'J/O0HU7HXV@G8P;Y$8G# Q(%4?B*H,G;X<$K\.S-\/##
MCFCBOI"QXQMLX<.O 'M<8,\H!2)_(J4K8.T*\H=\D89DH-&#&BPCU>0<BI*)
M<JWLY/X*^!34SQUR!KV<@9,3_U=?'6RTU?TE@LB% :YW73GLKQSNS("EUFW$
M@.QJHVD%3E#FFO2UUFN)AX[8#LI%.HB.H\1?K+?#2Z?#,(J#DTVW[*5;& ?#
MWJD-S5_[8CFHTDT^37+9"--V<&_MA^N9FRG/[&,<NNV,_$?33NPKJDJ;D!IF
M2!D<O4=)JIV"[<;(N9L+4VEPRKAEA3\.4-8!SV=2FM7&7M#_BM*_4$L#!!0
M   ( ." 453QE<05$0(  (8$   9    >&PO=V]R:W-H965T<R]S:&5E=#@T
M+GAM;(U4RV[;,!#\%4+H(0%24P_;-0)90"*CCT,+PT;:0]$#+:TL(A2IDFL[
M[=>7I&151>,V%XN[W)G9':^4GI1^-#4 DJ=&2+,,:L3VEE)3U- P,U$M2'M3
M*=TPM*'>4]-J8*4'-8+&83BG#>,RR%*?6^LL50<47,):$W-H&J9_W(-0IV40
M!>?$AN]K= F:I2W;PQ;PH5UK&]&!I>0-2,.5)!JJ97 7W>:)J_<%GSF<S.A,
MW"0[I1Y=\*%<!J%K" 04Z!B8?1PA!R$<D6WC>\\9#)(..#Z?V=_ZV>TL.V8@
M5^(++[%>!HN E%"Q@\"-.KV'?IZ9XRN4,/Z7G+K:61*0XF!0-3W8=M!PV3W9
M4^_#"!!-+P#B'A"_%)#T .\<[3KS8ZT8LBS5ZD2TJ[9L[N"]\6@[#9?N7]RB
MMK?<XC#;P!'D <@&"K67W%O[FGQB6C/GKR%7*T#&A;FVZ8?MBER]NDXI6F6'
MIT6O<M^IQ!=45E!,2!+=D#B,HV?@^<OAX9]P:N<=AHZ'H6//E_QGZ$JKAN1*
MHK;;9(W'FN3><M#DZ]W.^/RW?P@F@V#B!:<7!'/6<F2"_X3RMUZN#-Z0=UH9
M\YRC'>/,,[IW\9A%X6(V#4/KP''LW=^%\\5T/J[K>J:C+7%OZ$>F]UP:(J"R
MR'#RQE+H;NN[ %7K%V>GT'KBC[7]4(!V!?:^4@K/@=O%X=.3_0)02P,$%
M  @ X(!15'W?I1O/ P   0\  !D   !X;"]W;W)K<VAE971S+W-H965T.#4N
M>&ULM5==CYLX%/TK%NI#*VT';+ZK)-+,I-NMM*,=S;2[#]4^.." 5<"L;9+.
MOU]C"!!"4!0I+PDVYUS?>P\YX2[VC/\4*2$2_,JS0BR-5,KRDVF**"4Y%G>L
M)(6ZLV4\QU(M>6**DA,<:U*>F<BR/#/'M#!6"[WWS%<+5LF,%N29 U'E.>9O
M#R1C^Z4!C</&"TU266^8JT6)$_)*Y/?RF:N5V46):4X*05D!.-DNC7OX:8U0
M3="(ORG9B\$UJ$O9,/:S7GR-EX959T0R$LDZ!%9?._)(LJR.I/+XKPUJ=&?6
MQ.'U(?KONGA5S 8+\LBR?V@LTZ41&" F6UQE\H7M_R!M06X=+V*9T)]@WV(M
M T25D"QOR2J#G!;--_[5-F) @-X9 FH):$QPSA#LEF!?2G!:@J,[TY2B^[#&
M$J\6G.T!K]$J6GVAFZG9JGQ:U+J_2J[N4L63JQ>R(T5%P N)6%)0K<5'L*8"
M)PDG"=8;FS?PA;"$XS)] [B(P;>WDH#W:R(QS<0'1?C^N@;OWWT [P MP+>4
M54+!Q,*4*L7Z(#-JTWEHTD%GTH$(/+%"I@)\+F(2'P<P56U=@>A0X .:C;@F
MT1VPX6\ 60A.)/1X.=V:H*\OIL-PIAJ[D\O6\>QS\8Z%85MP$/#'GPH*ODJ2
MBW]G#G*Z@QQ]D#/_7$PIV!!=3:QM9;>"ENU;8; P=\/&GN(""'47A[#U*<Q'
MKH?<#G:4O]OE[\[F_RK5 XAY#$K.XBJ20C^W@O =C8B8:9#7'>#=5@F_.\B_
M5HF&Z T['(3(M4="G,(\WPGLL1 3,!2B@5Y'Z0==^L%L^O=EF=%(-^FC*$E$
MMS1JC8VH_Q^65?6M.47"[J3PMHI JS=-ZUI-6N:PC=#Q \<=B3*%LST8CE69
MP(6>8YWY><"![\-Y753[E2X"_'@B^8;PV<:@/BJZL0:]$T+[:@WLDYXYMHO&
MUO,X@;.A92%_K,$I#OD^=,^)T)LLG'?9SQ57;W 72= ;'W1O+$%O@="[6@+O
MM&6.[SO.6(()G!7XP8D$$SBE@1V<D:!W5SAOKU_4V[)43O28T@)?I$3O?#"X
ML1*]]<'P:B7"B0Y;T#XQI%,<] )TJL0$#KJ6!Z>50+VIHGE3_4NF2H=[02^2
M ?5.A^!M94"]_2%TK0PM\^BUR;7#,!S),(5#=@A'N/44SG(]?RR#.9@-E.4G
M>L82(&)5(9NWZ&ZWF^/N]?0RVG]0\UTSC?5AFN'P"?.$%@)D9*M"6G>^2HHW
M\U:SD*S4$\B&2?6WKR]3-:,27@/4_2UC\K"H#^BFWM7_4$L#!!0    ( ."
M453LSYI7X (  -L'   9    >&PO=V]R:W-H965T<R]S:&5E=#@V+GAM;(V5
M;6_:,!#'O\HIZHM6:IN0E( J0.)ATR:M4D77]<6T%R8YB%7'9K:![MOO[$!&
M>4CW!FSG[N_?72YWO8W2KZ9 M/!6"FGZ06'M\CX,359@R<RM6J*D)W.E2V9I
MJQ>A66IDN7<J11A'41J6C,M@T/-GCWK04RLKN,1'#695EDS_&:%0FW[0"G8'
M4[XHK#L(![TE6^ 3VN?EHZ9=6*ODO$1IN)*@<=X/AJW[<=?9>X,?'#=F;PTN
MDIE2KV[S->\'D0-"@9EU"HS^UCA&(9P08?S>:@;UE<YQ?[U3_^QCIUAFS.!8
MB1>>VZ(?= /(<<Y6PD[5Y@MNXVD[O4P)XW]AL[6- LA6QJIRZTP$)9?5/WO;
MYF'/H96><8BW#O&AP]T9AV3KD/A *S(?UH19-NAIM0'MK$G-+7QNO#=%PZ5[
MBT]6TU-.?G8PQ37*%<(4,[60W*?V!H:"WBZ3&0+5"8PUYMS"-V4,7$[0,B[,
M%5D]/TW@\N(*+H!+^%ZHE6$R-[W0$I=3#[,MPZABB,\PM&)X4-(6!C[)'//W
M B$%5$<5[Z(:Q8V*$\QN(6E=0QS%K1- X_]WCQIPDCK)B==+SN@-LTRMI#4N
MR\C7;";PNB''/Z=*"* JW3"=_VJX_ZZ^_\[??W?F_A$NN)1<+JCBA;ORU#NJ
M)-I>PGW[ZT$WH=RM]]-V;--.HMKF'5N[9FLWLGV5&74?@P:L EL@L'=YR:J\
M",H+GBRM2CW=0XH.H(\MTN@,=%I#IXW0+YI;O%'SN;D&2:U6S:FC96J-FI^F
M3(\8;MKM \X3-LDYT$X-VFD$I2*B1B8!W[*"R06"9A:A6I\$[7R8SF.+UFG&
M;LW8;62DC_Z#TNP>E5VGDQY@'=OLEV\%%N[UR1+UPH\/ _[CK)I+?5I/J*%O
MS ?G(YI<U:#Y)U.-O0>FZ5LS('!.DM%MAXAT-4JJC55+WXUGRE)O]\N"IB]J
M9T#/YTK9W<9=4,_SP5]02P,$%     @ X(!15.MW94OK @  _ <  !D   !X
M;"]W;W)K<VAE971S+W-H965T.#<N>&ULC95M;YLP$,>_BH7VHI7:\IB054FD
M)MFT2:M4I>OVVH$+6 6;V4[2?ON=#6$T(6AOP ]W?__N.'S3@Y"O*@?0Y*TL
MN)HYN=;5O>NJ)(>2JCM1 <>=K9 EU3B5F:LJ"32U3F7A!IXW=DO*N#.?VK4G
M.9^*G2X8AR=)U*XLJ7Q?0"$.,\=WC@MKEN7:++CS:44S> ;]4CU)G+FM2LI*
MX(H)3B1L9\Z#?[^<&'MK\(O!077&Q$2R$>+53+ZG,\<S0%! HHT"Q=<>EE 4
M1@@Q_C2:3GND<>R.C^I?;>P8RX8J6(KB-TMU/G,F#DEA2W>%7HO#-VCB&1F]
M1!3*/LFAL?4<DNR4%F7CC 0EX_6;OC5YZ#CXXPL.0>,0G#I$%QS"QB&T@=9D
M-JP5U70^E>) I+%&-3.PN;'>& WCYBL^:XF[#/WT? U[X#L@:TA$QIE-[2U9
MP1:DA)0<MRE/R=+2@,3=2BBF%5F+PA32@<J47*U 4U:H:W1_>5Z1JT_7Y!-A
MG/S,Q4ZAOYJZ&H'-L6[2P"UJN. "G!^01\%UKL@7GD+Z4<#%2-MP@V.XBV!0
M<07)'0G]&Q)X@=\#M/Q_=V\ )VRS'UJ]\()>F](EABFQI!7YP>B&%4R_WV#"
M\1MP/7!.U)X3V7.B"^<L(&.<,YYAR1>4)]#W+6J)D94P/_]^'OA!'$W=?3=!
MYU9^%(5!:_6!;]3RC0;YVGJ3G7I+CLE)FWKK@ZYUQQV<T/_LQ2?0YU9HY$?]
MT.,6>CP(W?UEQ+9%3X^Q8.U7D@E)*L!7VD<_/N.Z]>/("T_P^\P"S'H_?]SR
MQX/\> WB)<<)O"4YY1D02360>MR;Z_@<(QR=H)[;!+'?SSEI.2>#G/CO#Y7M
MY*P@PU$<G:;PW.IC<==D;N<BQ<K+;']1)!$[KNM+IEUM6]B#O;E/UA?8VNI.
M]$^F[HN/5.*_J$@!6Y3T[F)DDG6OJ2=:5/:ZW@B-Y6^'.;9GD,8 ][="Z./$
M'- V_/E?4$L#!!0    ( ." 453!$I2DG08  .T>   9    >&PO=V]R:W-H
M965T<R]S:&5E=#@X+GAM;+59VW+;-A#]%8R:MLF,(Q*@2$FNK1E?DLB.G3CV
M)'W(Y &F((D3DF! R)=,/[X 2?$*0K#;^$'F9?=@=\]BL2 .[BG[GJX)X> A
M"N/T<+#F/-FWK-1?DPBG0YJ06+Q94A9A+F[9RDH31O B4XI""]FV9T4XB >S
M@^S9%9L=T T/@YA<,9!NH@BSQV,2TOO# 1QL'UP'JS67#ZS908)7Y(;PS\D5
M$W=6B;(((A*G 8T!(\O#P1'<OT9CJ9!)? G(?5J[!M*56TJ_RYNSQ>' EA:1
MD/A<0F#Q[XZ<D#"42,*.'P7HH!Q3*M:OM^AO,^>%,[<X)2<T_#M8\/7A8#(
M"[+$FY!?T_LY*1QR)9Y/PS3[!?>%K#T _B;E-"J4A051$.?_\4,1B)H"@CT*
MJ%! +851GX)3*#@M!:?/I%&A,#(UR2T4W+;"J$?!*Q0\4X5QH3 V=7I2*$Q:
M"M#I49@6"M-VE,9]Q-E;YFS3,6!)=IOM_E&V=,,VW_VC; F';<9["81;RJ$Q
MYW!+.NRPWIOJ6]IAA_=>E2WQL,U\O\J6>IAQ;^53,9O'IYCCV0&C]X!)>8$G
M+[)BD.F+Z1O$LF[=<";>!D*/SV[6F)$U#1>$I7^"-S\V 7\$K\'18A'(NH)#
M<!;GU5%6F9>GA.,@?'5@<3&V1+#\8ISC?!S4,\XI\8< 3?8 LI']^>84O'RA
M0CDQ0'%@A@(+E"^4DQ?  JGT),U_%<BGYLBV =P;/=SY)C9Q]ZVQ47!:&:4
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
M12!_7S(F=B]J@_I6\NI_4$L#!!0    ( ." 4532+9_8=P0  ,\1   9
M>&PO=V]R:W-H965T<R]S:&5E=#DP+GAM;*U846_B.!#^*Q;:AU:B)'9" BN*
M!&WO;A]66VVOMP^G>S#) %&3F+,-%&E__-E.2-(-,6VO+V []LPWXYGY;$_V
MC#^)-8!$SUF:B^O>6LK-9\<1T1HR*@9L [GZLF0\HU)U^<H1&PXT-HNRU"&N
M&S@93?+>=&+&[OETPK8R37*XYTALLXSRPQQ2MK_NX=YQX'NR6DL]X$PG&[J"
M!Y"/FWNN>DXE)4XRR$7"<L1A>=V;X<]SXNL%9L9?">Q%HXVT*0O&GG3G2WS=
M<S4B2"&26@15?SNX@335DA2.?TNAO4JG7MAL'Z7_9HQ7QBRH@!N6_DABN;[N
MC7HHAB7=IO([V_\!I4%#+2]BJ3"_:%_.=7LHV@K)LG*Q0I E>?%/GTM'-!9X
M8<<"4BX@!G>AR*"\I9).)YSM$=>SE33=,*::U0I<DNM=>9!<?4W4.CE]D"QZ
MNIHKNV)TPS*UV8(:=]T]ZS:@*_10;!AB2V1FHV\;,V.F'9K( [JX!4F3]!)]
M0@X2:\I!H"1'CWDB1;\Q\.>:;07-8S7XZ45_XDAEB@;D1"7L>0&;=,#&!'UE
MN5P+=)?'$+\4X"@?5(X@1T?,B57B+40#Y.$^(B[!CP^WZ.+396U/\6M1XU7^
M]HP:K\O?YP3YE2#?"/([!,UAE>1YDJ]44*8TCP"IG!-2N5./_42G$!=^*.0&
M1JY.VMUT- [=B;,[@698H1E:T?S.:2Y5"-GT#EMZAX%_6FU0J0VL:N^>@4>)
M.*,X:"F^PL&X0W58J0ZMJE5-6$*B;68<P?,FX6=0A&T4Q.MP^Z@",;+;7^SV
M6R-@U((2!K@#RKB",CX?V%>+=B&9<14;*U"57*+% 37GW=.#&9[M*8_[95U1
MU>%;;4<?_3"%5<V>[8 KHD#'34?W/%%&_SU;",E5=?_'DE78K>NA^_Z\ZJ-]
MB>:*EFC@B&9CT/QL%,&39:W0'C9\[_N#T#OM?-PHX_@U"?@! $N^\)OU830(
M2 ="4B,DK\O5#\!(VAB]<!!V0*QK,_;>G-,?@-9KHQVZ Z^C .&: ;"= KJS
M_P- ^^TX'0^\40?FFB>PG2C***"+%/I%+1#64H7;K.'Y?E<PUKR![<11EAJT
M U%OMSHHJK9D9M2.JDTI(>[<T)I2L)U37CCG?^]@V-I!;SP8=25)33G8SCGG
M7?<!V$?MZ%,U*.C 7G,4'MNQ6U.$@[[&Z)2*U-E24\J6ID@"S]"%.JX>@')Q
M>1*N76M0+$4!RHHS*QFBF!YLIT!2\Q6Q\Y4]9MYMTAFMP]*DX=$D=2 _9U+-
M9<3.9>^*L/=;:@<3_&HI"<Y:6G,BL7/BBWBDJQ6'%96@[D:2)^KB&Z$=3;<F
M74XB+X0/&UE""'&''8<)4O,@L?/@BYAZ.RRO51RQY_I^!W>0FN^(G>]>$Q=O
M1^NWG8A)Z/]::YS&'3L#OC(O"4(%VS:7Q76[&JU>*V;%';V>7CQU?*5<G3$%
M2F&IEKJ#4"GGQ>M!T9%L8V[L"R;5_=\TUT!CX'J"^KYD3!X[6D'UAC/]#U!+
M P04    " #@@%%4N):-MA0#  !^"0  &0   'AL+W=O<FMS:&5E=',O<VAE
M970Y,2YX;6R=EFUOVC 0Q[_**=*D3AKDB8=U B0HW59IU:I6ZUY,>V&2 ZS:
M,;--*=]^9R?-:!?2;F\@=N[WS_WOG-BCG=)W9HUHX4&*PHR#M;6;#V%HLC5*
M9KIJ@P7=62HMF:6A7H5FHY'E'I(B3*)H$$K&BV R\G-7>C)26RMX@5<:S%9*
MIO<S%&HW#N+@<>*:K];63823T8:M\ ;MM\V5IE%8J^1<8F&X*D#C<AQ,XP_S
MH8OW ;<<=^;@&IR3A5)W;G"1CX/()80",^L4&/W=XQD*X80HC5^59E _TH&'
MUX_J'[UW\K)@!L^4^,YSNQX'[P/(<<FVPEZKW6>L_/2=7J:$\;^PJV*C +*M
ML4I6,&4@>5'^LX>J#@= /#@")!60/ =Z1X"T M)G0-(_ O0JH.<K4UKQ=9@S
MRR8CK7:@732IN0M?3$^3?5ZXMM]837<Y<79R8U5VUYE1Y7(X4Y)6DV&^(></
M[AJA ]]][3#O3.]1TU* J:%%LG%1!KXYD%.XL9RZP(L5?&1<PRT36S2@EN"?
M %^K^$^:%:0%)W.TC(NWI'\N-T+M$9]$PH]+E O4/T>A)9LNV3"K+,U*2\D1
M2W$"EZJP:P/G18[Y4X&0ZE,7*7DLTBQI59QCUH4T?@=)E,0-"9V]'H\:\/FK
M\?BTQ4U:MSSU>NFQEJ^9QL[B[Y9/-35GA?126UCLX3#NBNW]]'3'= X_OI D
M7%B4YF=+0KTZH9Y/J'<DH6MN[CI+32M ,XM-#6_GXVX:O6EJRTM8KQ&;MV-)
M=_@<>^*Z7[ONM^JX%RQSKT+.[WF.10Y[CB)OLM\N%'638:/]E[!>W&C_)2P]
M;;,_J.T/7F?_7@E:?H+;?9/U=I'TM!LUM_X%;GB$F_\[]\3]L'8_?)U[BUK"
M"7U ]\BT>=M4@G:E04DVU>!_P7D[V"]!2$&6G]GX/>1L;YK*$A[L3!+URN_P
M!C*U+6SY_:UGZT/$U.^=S^9G=+@HSP)_9,J3R273*TX[B\ E24;=(:U?7>[V
MY<"JC=__%LK2;NHOUW1 0NT"Z/Y2*?LX< ^HCUR3WU!+ P04    " #@@%%4
M*!.?)XL#   >"P  &0   'AL+W=O<FMS:&5E=',O<VAE970Y,BYX;6RM5MV/
MVC@0_U=&T3U<I85\$: 5(,'NMM>';5?+W?:AZH-)!F)M8J>V ZQT?_S93@CT
M".FV6AZ"[<S';W[CF<QDQ\633!$5[/.,R:F3*E6\<UT9IY@3V><%,OUFS45.
ME-Z*C2L+@22Q2GGF!IXW='-"F3.;V+-[,9OP4F64X;T 6>8Y$<\+S/ANZOC.
MX>"!;E)E#MS9I" ;7*+ZI[@7>N<V5A*:(Y.4,Q"XGCIS_]W"'Q@%*_%(<2=/
MUF!"67'^9#8?DZGC&4288:R,":+_MGB-668L:1S?:Z-.X],HGJX/UM_;X'4P
M*R+QFF=?:*+2J3-V(,$U*3/UP'=_81U09.S%/)/V";M:UG,@+J7B>:VL$>24
M5?]D7Q-QHA!>4@AJA<#BKAQ9E#=$D=E$\!T((ZVMF84-U6IK<)29K"R5T&^I
MUE.SI>+Q4V^AXTK@FN<ZV9)8NF[W9HW0@V65,.!K>$"I!(V5%K:*\+FPPG/#
M+57/\.<-*D*S-UKM3/;K'>8K%-] ID2@!,K@[Y27DK!$3ERE@S&0W+@&OJB
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
M@,FI9SV2<C50NG:@/)B"9HG,XPQV;*74KV-!H87/Q2;)V:A<:!1T9T?-A09
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
M4=Z$<KL-)>T()4G)%\'U$OWQ HIC Q'RTI*3[LBY3;T6,\@'9)B<D31.$\>
M9F^'QPYX]F9X<N6)9MA.]=#:&P:GFF1,Y950:PGDWYLGI25NO_\\+D:MBY%U
M,?*[T.@"7C U*2!4D\?!PX"4S:I1[:K)VU5C^IL/UYS[':;)((Y_<4W-B;CL
M_;@CILY;ILZ]ANQ>(JSE"]09X9CF<<?MF'H"#B73+E+\MCLY.0V6^6%I@)%Q
MR\C8:P?3."9IWBX&4C!,&Q*X9K1RD> WUS\WXW*ED5D ..X"9@'@E0-X1,5%
M2\6%UY+9HKF$PCWY?FP_[8P[ $PZXSX!>!3W91OWI=>224L2FH30+'\4%Q4U
MIP^>*%"O*O$*@$E$Y-^(6)E#2KDX\OOI#SLY"@ O.CD* $<ACJY:CJ[>SM$N
MR?8;LCX<LF4W$NBUY*3$$YTOG$SYO74OBED V+G],C\P#J23)-XKF]AK::\Z
M#DX^*SZ.5<Z9;4"%JRM 1:O/2).*SL@<9(XU3BWB=^X(8TM; ->9A-_O[YBV
M T&8O'^!'2RKFBUDJPYI_GW-,%.1N[F3)+^K;I).PV4!7'(98BG=LY3^5*K*
MEY0OS %O.Z#"6N>X$YT*)^"IFZ33<%D UT_'EZ%DE>PU9S+\J=7TQ]V?7^\(
MPYM";L7/>WCS>^[F[31<%L"ER2BTNO8R.O'+S+_PUB51 !UR]XR)R)G! [:Z
M>3@-EP5P83F0[$5RXM>6E@=GS"<JX #.H66;F/VX86CF]R(X\8M(QPVJ/=R=
M1/C-)5T1S0+ <2<3 1&<N@[^+1G1P3-%#7)AGWL4W@/77&\OY6UM^Z1T8Q]2
M?JB_-4]-]OEC;V;[3O6%R@7CBE10HLEX<('S)K=//]N"%BO[&/(DM!:U_5P"
MQ0N7Z8#MI1!Z5S .V@>XZ?]02P,$%     @ X(!15..!$?SO!   ZA4  !D
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
ME0!Y?T>I>#TI']!\4EG\ U!+ P04    " #@@%%4,ZQ4(Z,#  #9#0  &@
M 'AL+W=O<FMS:&5E=',O<VAE970Q,#4N>&ULM5=-C]LV$/TK R&'!$@M45^V
M ]M UNYN-TA28S=I#T$/M#1K$:%$A:36*= ?'U+6RDXLJVH*7VR1XIL9SKQY
M(F<[(3^K#%'#UYP7:NYD6I>O7%<E&>94C42)A7GS(&1.M1G*K:M*B32M03EW
M?<^+W9RRPEG,ZKFU7,Q$I3DK<"U!57E.Y=]7R,5N[A#G:>*.;3-M)]S%K*1;
MO$?]L5Q+,W);*RG+L5!,%"#Q8>Z\)J]NR,0"ZA5_,-RIHV>P6]D(\=D.;M.Y
MX]F(D&.BK0EJ_AYQB9Q;2R:.+XU1I_5I@<?/3]:OZ\V;S6RHPJ7@?[)49W-G
MXD"*#[3B^D[L?L-F0Y&UEPBNZE_8-6L]!Y)*:9$W8!-!SHK]/_W:).((0,(S
M +\!^$,!00,(A@+"!A .!40-(!H*B!M /!0P;@#CNEC[[-:E65%-%S,I=B#M
M:F/-/M3UK=&F(JRP5+S7TKQE!J<75Y4R,TK!Z^1+Q12S_%#P"]Q7E-,-+,7H
M);S5Z0C>4RFII0T\7Z&FC*L79MG'^Q4\?_8"G@$KX$,F*D6+5,U<;4*S#MRD
M">-J'X9_)HS?$ST"$K\$WR/3#OBR'[["9 0!L7#?ZX"O^N%OJF($_N0L_-?A
MWDD'_/K_!7\S&/YCZEQ#AI81?LL(O[87_ =&P*>W9@YN->;JKQX?0>LCJ'V$
M9WS<%IH66[;A"%0I([@L+RF31N(T)!F56^SBT&IO-*J-6HU]7)!I-#8I?SPN
MUNDJ[_L5UX/LW/39^6[78;OKL'?7)SWUZ1WF&Y1]&8U:V]'%JA:W/N+>^->5
M-,51"*5D"78U>=R1V" .)MUY&[=^Q[U^EU1E8/B16I$I_S6(O;'X.(BQ%WM^
M=Q"3-HA)?Q 24Z9!"]@*D>X8YUTR-3E-@.>%W9ZGK>=IOV=1:%9LZ]XPXLQ2
MM$)LRLL9W3!N2MW9+5?3DUC\T O/<)AXAP^&]W,LAG_@MH"U%(GEX1TJI*94
M8#X(L,)'<^@IZ_X>0'IR]/4B%Z,].2@B\2\A5XW58R9&4^]< 0[:2?K%LZ\
M2Y&7'#6F\ &3K!!<; T[!N7\H&(DO%S.#WI&HHOD/#KM?L\;GTOZ0?I(O_;U
M)KT^IJ$$VZG2'*Y-:@SI[Y#7?:HR5@XKP4$0R?AR)3@H'NF7O)\MP:D(!L'D
M1_EUC\ZL]M+SSMACYNC)\<' O-'8X.7^'K$?:%'6Q]B-T";;]6-F[EXH[0+S
M_D$(_32P)^/V-K?X!E!+ P04    " #@@%%4!*&1!<4"  !S!P  &@   'AL
M+W=O<FMS:&5E=',O<VAE970Q,#8N>&ULC57;;MLP#/T5P>B %MCJ6Y)>D 3(
M;5L?.A3INCT,>U!L)A8J2YXD-RW0CQ\E.UZ2)49>$DGF.>0A*:J_ENI99P"&
MO.9<Z(&7&5/<^KY.,LBIOI0%"/RRE"JG!K=JY>M" 4T=*.=^% 0]/Z=,>,.^
M.WM0P[XL#6<"'A3199Y3]38&+M<#+_0V!W.VRHP]\(?]@J[@$<Q3\:!PYS<L
M*<M!:"8%4; <>*/P=M:S]L[@!X.UWEH3JV0AY;/=W*4#+[ ! 8?$6 :*?R\P
M <XM$8;QI^;T&I<6N+W>L']VVE'+@FJ82/Z3I28;>-<>26%)2V[F<OT5:CU=
MRY=(KMTO65>V5Y%'DE(;F==@C"!GHOJGKW4>M@!1> 00U8!H#Q '1P!Q#8A/
M]="I 9T]0!@? 71K@)/N5]I=XJ;4T&%?R351UAK9[,)EWZ$Q7TS8/GDT"K\R
MQ)GA'+1196)*Q<2*3#*J5J#))S)*4V8K23FY$U4[VKJ>3\%0QO4%.2-,D.^9
M+#45J>[[!H.QE'Y2.QY7CJ,CCL.(W$MA,DUF(H5TE\!'%8V4:"-E'+4R3B&Y
M)''XD41!%#X]3LGYV<6!N":GLP0URRPON'P#."1S>C)=>',\J%D[RSU](U&O
MBJDE4W%3]-C1Q2<5'>M'YL"I@92,[+W%PF,/_!HMT HO\N\6CYW&8\=Y[!SQ
M^(7+!;:2'1K83 G@B$E+-RH.):.=Z_HR"#ZTQ-1M8NJV\NQF(:E;_YV<'6KF
MBJKKJ.SL?1EB(5ZVV^I_B[![$W5VK:9M/#LJ>HV*7JN*;V6^ $7DDA12NRNK
M"7"&H\(5])VT->^DXNYM!WT=[@7D;TV7'#!)=JQKDLA2F.IV-J?-RS%R W/O
M?!S>3JL'X!]-]1S=8^X9!LYAB93!Y14F2%4COMH86;@9MI &)Z);9O@J@K(&
M^'TII=ELK(/FG1W^!5!+ P04    " #@@%%49JEU5>@"  #,"0  &@   'AL
M+W=O<FMS:&5E=',O<VAE970Q,#<N>&ULO59-;]LP#/TK@M%#"ZSU5YR/(@G0
M)!M68,6*IMT.Q0Z*S<1&;2F3Y*3[]Z-DQW'2U/"AZ,669+Y'\E&F--QR\2)C
M $5>LY3)D14KM;ZV;1G&D%%YQ=? \,N2BXPJG(J5+=<":&1 66I[CM.U,YHP
M:SPT:_=B/.2Y2A,&]X+(/,NH^#>!E&]'EFOM%AZ25:ST@CT>KND*YJ">UO<"
M9W;%$B49,)EP1@0L1]:->SUS?0TP%K\2V,K:F.A4%IR_Z,EM-+(<'1&D$"I-
M0?&U@2FDJ6;"./Z6I%;E4P/KXQW[-Y,\)K.@$J8\_9U$*AY9?8M$L*1YJA[X
M]CN4"06:+^2I-$^R+6T=BX2Y5#PKP1A!EK#B35]+(6H M_L.P"L!WC&@\P[
M+P%^6T"G!'2,,D4J1H<9570\%'Q+A+9&-CTP8AHTII\P7?>Y$O@U09P:/X!4
M(@]5+A*V(M.8BA5(<DGFN,&B/ 7"E^30AK((5U*J(")3+I4DYS-0-$GE!>*>
MYC-R?G9!SDC"R&/,<XGV<F@KC%5[M,,RKDD1E_=.7*Y'[CA3L21?6031(8&-
M25:9>KM,)UXCXPS"*^*[7XCG>.Z)@*;MX<X)^*PUW!TT9.-7=?,-G]^N;EB'
MLC 2Q ;(\P^T)[<*,OFGP5NG\M8QWCJMO(7%+CE5U((F,#2ZY6S&J-6FKO);
M"S<8>)U#JUD3ST$&095!T)C!3P:7"AL6>02!OQ$U36<"#)8)[N#G.\@6()JD
MZE:.NI]0F%[EK?<AA9D6--VZ[ X*?UK4?N6]W^A]BG^HP,Y](&H++0<5_^ 3
MM'2=?2]T/D;-DJ<N9^ YO=-JNK5>[#9O4A6#.&JW+>1TO;T#[S,$W3<IU_\@
M0?TW/WP0](_TM&O'7 9(I:\+DH0\9ZHX!ZK5ZDIR8P[BH_6)OJJ8XW-/4]QS
M[C#"A$F2PA(IG:L>1B2*JT,Q47QM#M,%5W@TFV&,URT0V@"_+SE7NXEV4%W@
MQO\!4$L#!!0    ( ." 451U'0;4EP4  (X>   :    >&PO=V]R:W-H965T
M<R]S:&5E=#$P."YX;6RUF5EOXS80@/\*8>S#+E#'YB'9"A(#L=VB!9HV2++M
MPZ(/C$3'ZNIP*3I.@/[X4D=$6SQ\-'ZQ=<P,9X;DQQ%YM<GY]V+)F "O:9(5
MU[VE$*O+P: (ERREQ46^8IE\L\AY2H6\Y<^#8L49C2JE-!F@X= ?I#3.>I.K
MZMD=GUSE:Y'$&;OCH%BG*>5O4Y;DF^L>[+T_N(^?EZ)\,)A<K>@S>V#BZ^J.
MR[M!:R6*4Y85<9X!SA;7O1MX.2=!J5!)_!&S3;%U#<I0GO+\>WGS2W3=&Y8>
ML82%HC1!Y=\+F[$D*2U)/_YIC/;:-DO%[>MWZS]5P<M@GFC!9GGR9QR)Y75O
MW ,16]!U(N[SS<^L"<@K[85Y4E2_8-/(#GL@7!<B3QMEZ4$:9_4_?6T2L:4
M?8L":A105X%8%'"C@ ]5((T"J3)3AU+E84X%G5SQ? -X*2VME1=5,BMM&7Z<
ME?W^(+A\&TL],;EGA>#K4*QYG#V#V9+R9U: /GB0 RQ:)PSD"[ K(^\8?V'@
MZ0T\OJTJ@5E>"/!YS@2-D^*+U/[Z, >?/WT!GT"<@<=EOBYH%A57 R$]+ML=
MA(UWT]H[9/$.(G";9V)9@!^SB$6[!@8RU#9>]![O%#DMSEEX 3#\ : A@@:'
M9H>K#PWJ\X/58>"(!K>]ARM[^*#>>^^9;_=YD@ Y+3:41W\YFB%M,Z1JAAS4
M3%@/$E-OUF:\RDQ)G)>)3-++=GIU">@%B.Q*S5UV=B+PV@@\9P2_9ZPO)*_
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
M:,"0("C?@QOO(V_UGO*:WX0'?P%02P,$%     @ X(!15)>*NQS     $P(
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
M2P$"% ,4    " #@@%%4!T%-8H$   "Q    $               @ $
M9&]C4')O<',O87!P+GAM;%!+ 0(4 Q0    ( ." 451Q0VKQ[@   "L"   1
M              "  :\   !D;V-0<F]P<R]C;W)E+GAM;%!+ 0(4 Q0    (
M ." 45297)PC$ 8  )PG   3              "  <P!  !X;"]T:&5M92]T
M:&5M93$N>&UL4$L! A0#%     @ X(!15$/*TI^L!0  !Q@  !@
M     ("!#0@  'AL+W=O<FMS:&5E=',O<VAE970Q+GAM;%!+ 0(4 Q0    (
M ." 452GYK* 'P(  &8%   8              " @>\-  !X;"]W;W)K<VAE
M971S+W-H965T,BYX;6Q02P$"% ,4    " #@@%%4T__,WRP&  "3%P  &
M            @(%$$   >&PO=V]R:W-H965T<R]S:&5E=#,N>&UL4$L! A0#
M%     @ X(!15)\D?MP4!   %PT  !@              ("!IA8  'AL+W=O
M<FMS:&5E=',O<VAE970T+GAM;%!+ 0(4 Q0    ( ." 452>!ZS*GP(    &
M   8              " @? :  !X;"]W;W)K<VAE971S+W-H965T-2YX;6Q0
M2P$"% ,4    " #@@%%44ETT%4X'   >'P  &               @('%'0
M>&PO=V]R:W-H965T<R]S:&5E=#8N>&UL4$L! A0#%     @ X(!15'4+N(#%
M P  BPT  !@              ("!224  'AL+W=O<FMS:&5E=',O<VAE970W
M+GAM;%!+ 0(4 Q0    ( ." 4521N['>H @  !0E   8              "
M@40I  !X;"]W;W)K<VAE971S+W-H965T."YX;6Q02P$"% ,4    " #@@%%4
M ].:=K@'  #")P  &               @($:,@  >&PO=V]R:W-H965T<R]S
M:&5E=#DN>&UL4$L! A0#%     @ X(!15$"V&0W1 @  V 8  !D
M     ("!"#H  'AL+W=O<FMS:&5E=',O<VAE970Q,"YX;6Q02P$"% ,4
M" #@@%%4,K_.RKDH   _A0  &0              @($0/0  >&PO=V]R:W-H
M965T<R]S:&5E=#$Q+GAM;%!+ 0(4 Q0    ( ." 450G\6&7(@<  $03   9
M              " @0!F  !X;"]W;W)K<VAE971S+W-H965T,3(N>&UL4$L!
M A0#%     @ X(!15$0*YQ<1!P  QA$  !D              ("!66T  'AL
M+W=O<FMS:&5E=',O<VAE970Q,RYX;6Q02P$"% ,4    " #@@%%4X4$80YD(
M  !?%P  &0              @(&A=   >&PO=V]R:W-H965T<R]S:&5E=#$T
M+GAM;%!+ 0(4 Q0    ( ." 4529:SR&90(  !(%   9              "
M@7%]  !X;"]W;W)K<VAE971S+W-H965T,34N>&UL4$L! A0#%     @ X(!1
M5#@ M#_G @  0 8  !D              ("!#8   'AL+W=O<FMS:&5E=',O
M<VAE970Q-BYX;6Q02P$"% ,4    " #@@%%41GG\<@ '  !%$@  &0
M        @($K@P  >&PO=V]R:W-H965T<R]S:&5E=#$W+GAM;%!+ 0(4 Q0
M   ( ." 452=&T0S-@,  /H&   9              " @6**  !X;"]W;W)K
M<VAE971S+W-H965T,3@N>&UL4$L! A0#%     @ X(!15"1CYJ<^!@  E X
M !D              ("!SXT  'AL+W=O<FMS:&5E=',O<VAE970Q.2YX;6Q0
M2P$"% ,4    " #@@%%4$S@VV!X#   9!P  &0              @(%$E
M>&PO=V]R:W-H965T<R]S:&5E=#(P+GAM;%!+ 0(4 Q0    ( ." 452$M_2I
MH@4  (0-   9              " @9F7  !X;"]W;W)K<VAE971S+W-H965T
M,C$N>&UL4$L! A0#%     @ X(!15 V^??9&!   M H  !D
M ("!<IT  'AL+W=O<FMS:&5E=',O<VAE970R,BYX;6Q02P$"% ,4    " #@
M@%%4/^75#B$&  "[#P  &0              @('OH0  >&PO=V]R:W-H965T
M<R]S:&5E=#(S+GAM;%!+ 0(4 Q0    ( ." 450IH<4U+P8  -(/   9
M          " @4>H  !X;"]W;W)K<VAE971S+W-H965T,C0N>&UL4$L! A0#
M%     @ X(!15)^N5%D-!@  ]@\  !D              ("!K:X  'AL+W=O
M<FMS:&5E=',O<VAE970R-2YX;6Q02P$"% ,4    " #@@%%42R&.60D)  "O
M%P  &0              @('QM   >&PO=V]R:W-H965T<R]S:&5E=#(V+GAM
M;%!+ 0(4 Q0    ( ." 450:_R:=.P,  #\'   9              " @3&^
M  !X;"]W;W)K<VAE971S+W-H965T,C<N>&UL4$L! A0#%     @ X(!15&V7
MRO))$0  F3,  !D              ("!H\$  'AL+W=O<FMS:&5E=',O<VAE
M970R."YX;6Q02P$"% ,4    " #@@%%4)K)_/R\#  #-!P  &0
M    @($CTP  >&PO=V]R:W-H965T<R]S:&5E=#(Y+GAM;%!+ 0(4 Q0    (
M ." 453]VCJT? 0  ! *   9              " @8G6  !X;"]W;W)K<VAE
M971S+W-H965T,S N>&UL4$L! A0#%     @ X(!15!+$B3%7 P  % <  !D
M             ("!/-L  'AL+W=O<FMS:&5E=',O<VAE970S,2YX;6Q02P$"
M% ,4    " #@@%%4<+<T=ZT&  "Z$   &0              @('*W@  >&PO
M=V]R:W-H965T<R]S:&5E=#,R+GAM;%!+ 0(4 Q0    ( ." 450R;+M05P(
M "@%   9              " @:[E  !X;"]W;W)K<VAE971S+W-H965T,S,N
M>&UL4$L! A0#%     @ X(!15"N69<=G P  ! @  !D              ("!
M/.@  'AL+W=O<FMS:&5E=',O<VAE970S-"YX;6Q02P$"% ,4    " #@@%%4
MFQD?@] P  "OL   &0              @(':ZP  >&PO=V]R:W-H965T<R]S
M:&5E=#,U+GAM;%!+ 0(4 Q0    ( ." 452:+6_@-0<  &(3   9
M      " @>$< 0!X;"]W;W)K<VAE971S+W-H965T,S8N>&UL4$L! A0#%
M  @ X(!15,IN52#& P  2PD  !D              ("!320! 'AL+W=O<FMS
M:&5E=',O<VAE970S-RYX;6Q02P$"% ,4    " #@@%%42^K#CY(&  "5%
M&0              @(%** $ >&PO=V]R:W-H965T<R]S:&5E=#,X+GAM;%!+
M 0(4 Q0    ( ." 450_@HH+; (   \%   9              " @1,O 0!X
M;"]W;W)K<VAE971S+W-H965T,SDN>&UL4$L! A0#%     @ X(!15,OY;ECO
M @  *@8  !D              ("!MC$! 'AL+W=O<FMS:&5E=',O<VAE970T
M,"YX;6Q02P$"% ,4    " #@@%%4])_W)VD"   '!0  &0
M@('<- $ >&PO=V]R:W-H965T<R]S:&5E=#0Q+GAM;%!+ 0(4 Q0    ( ."
M450M*IM%M@(  .8%   9              " @7PW 0!X;"]W;W)K<VAE971S
M+W-H965T-#(N>&UL4$L! A0#%     @ X(!15/,+U3ZC P  C0@  !D
M         ("!:3H! 'AL+W=O<FMS:&5E=',O<VAE970T,RYX;6Q02P$"% ,4
M    " #@@%%4T&DB1TD#  #*!P  &0              @(%#/@$ >&PO=V]R
M:W-H965T<R]S:&5E=#0T+GAM;%!+ 0(4 Q0    ( ." 453.HP9AI@4  *\0
M   9              " @<-! 0!X;"]W;W)K<VAE971S+W-H965T-#4N>&UL
M4$L! A0#%     @ X(!15)G7*G9U!   1@P  !D              ("!H$<!
M 'AL+W=O<FMS:&5E=',O<VAE970T-BYX;6Q02P$"% ,4    " #@@%%4"%5B
MODT%  #]#   &0              @(%,3 $ >&PO=V]R:W-H965T<R]S:&5E
M=#0W+GAM;%!+ 0(4 Q0    ( ." 453.#;RJ00@  -H8   9
M  " @=!1 0!X;"]W;W)K<VAE971S+W-H965T-#@N>&UL4$L! A0#%     @
MX(!15")%Q.NI @  P 4  !D              ("!2%H! 'AL+W=O<FMS:&5E
M=',O<VAE970T.2YX;6Q02P$"% ,4    " #@@%%4Z>Y80$<#  #;!@  &0
M            @($H70$ >&PO=V]R:W-H965T<R]S:&5E=#4P+GAM;%!+ 0(4
M Q0    ( ." 4518*UEGZ0,  ,L)   9              " @:9@ 0!X;"]W
M;W)K<VAE971S+W-H965T-3$N>&UL4$L! A0#%     @ X(!15#\@*SNY P
MF1$  !D              ("!QF0! 'AL+W=O<FMS:&5E=',O<VAE970U,BYX
M;6Q02P$"% ,4    " #@@%%4W4U=N'0#  "6$0  &0              @(&V
M: $ >&PO=V]R:W-H965T<R]S:&5E=#4S+GAM;%!+ 0(4 Q0    ( ." 450-
MB3I930(  "X&   9              " @6%L 0!X;"]W;W)K<VAE971S+W-H
M965T-30N>&UL4$L! A0#%     @ X(!15$"#C0I1 @  6P8  !D
M     ("!Y6X! 'AL+W=O<FMS:&5E=',O<VAE970U-2YX;6Q02P$"% ,4
M" #@@%%4H2EP\T\"  #!!0  &0              @(%M<0$ >&PO=V]R:W-H
M965T<R]S:&5E=#4V+GAM;%!+ 0(4 Q0    ( ." 453>3K'V: ,  )(*   9
M              " @?-S 0!X;"]W;W)K<VAE971S+W-H965T-3<N>&UL4$L!
M A0#%     @ X(!15"4C<6-C!   .!0  !D              ("!DG<! 'AL
M+W=O<FMS:&5E=',O<VAE970U."YX;6Q02P$"% ,4    " #@@%%4T*@2X5$#
M  #8"P  &0              @($L? $ >&PO=V]R:W-H965T<R]S:&5E=#4Y
M+GAM;%!+ 0(4 Q0    ( ." 452S?;9;VP,  )0/   9              "
M@;1_ 0!X;"]W;W)K<VAE971S+W-H965T-C N>&UL4$L! A0#%     @ X(!1
M5),@*Q_=!   _!<  !D              ("!QH,! 'AL+W=O<FMS:&5E=',O
M<VAE970V,2YX;6Q02P$"% ,4    " #@@%%4.WF8#=@"  #M!P  &0
M        @(':B $ >&PO=V]R:W-H965T<R]S:&5E=#8R+GAM;%!+ 0(4 Q0
M   ( ." 453+D<JXJ08  &LM   9              " @>F+ 0!X;"]W;W)K
M<VAE971S+W-H965T-C,N>&UL4$L! A0#%     @ X(!15$?(F=8T!0  QQX
M !D              ("!R9(! 'AL+W=O<FMS:&5E=',O<VAE970V-"YX;6Q0
M2P$"% ,4    " #@@%%4L64E&;,"  !@!P  &0              @($TF $
M>&PO=V]R:W-H965T<R]S:&5E=#8U+GAM;%!+ 0(4 Q0    ( ." 453OP(56
M. 4  /8;   9              " @1Z; 0!X;"]W;W)K<VAE971S+W-H965T
M-C8N>&UL4$L! A0#%     @ X(!15'O+K@]A @  .@8  !D
M ("!C: ! 'AL+W=O<FMS:&5E=',O<VAE970V-RYX;6Q02P$"% ,4    " #@
M@%%4G2@"^,0#  "^$   &0              @($EHP$ >&PO=V]R:W-H965T
M<R]S:&5E=#8X+GAM;%!+ 0(4 Q0    ( ." 451R$IGZJ@(  +P&   9
M          " @2"G 0!X;"]W;W)K<VAE971S+W-H965T-CDN>&UL4$L! A0#
M%     @ X(!15!<_(9&*!   =!$  !D              ("! :H! 'AL+W=O
M<FMS:&5E=',O<VAE970W,"YX;6Q02P$"% ,4    " #@@%%4OYI6N4\"  !*
M!@  &0              @('"K@$ >&PO=V]R:W-H965T<R]S:&5E=#<Q+GAM
M;%!+ 0(4 Q0    ( ." 450(UJ(/TP(  ,0'   9              " @4BQ
M 0!X;"]W;W)K<VAE971S+W-H965T-S(N>&UL4$L! A0#%     @ X(!15(_-
MSQ!:!   _14  !D              ("!4K0! 'AL+W=O<FMS:&5E=',O<VAE
M970W,RYX;6Q02P$"% ,4    " #@@%%4KFQ$/:0"   ^!P  &0
M    @('CN $ >&PO=V]R:W-H965T<R]S:&5E=#<T+GAM;%!+ 0(4 Q0    (
M ." 452'*ZW:' 0  .P1   9              " @;Z[ 0!X;"]W;W)K<VAE
M971S+W-H965T-S4N>&UL4$L! A0#%     @ X(!15)5ZPGW- @  10@  !D
M             ("!$< ! 'AL+W=O<FMS:&5E=',O<VAE970W-BYX;6Q02P$"
M% ,4    " #@@%%4ZC>CWM8"  !/!P  &0              @($5PP$ >&PO
M=V]R:W-H965T<R]S:&5E=#<W+GAM;%!+ 0(4 Q0    ( ." 453#'UOB4P(
M ,8%   9              " @2+& 0!X;"]W;W)K<VAE971S+W-H965T-S@N
M>&UL4$L! A0#%     @ X(!15$3<<*@L @  YP0  !D              ("!
MK,@! 'AL+W=O<FMS:&5E=',O<VAE970W.2YX;6Q02P$"% ,4    " #@@%%4
M7AC&D< %   5'P  &0              @($/RP$ >&PO=V]R:W-H965T<R]S
M:&5E=#@P+GAM;%!+ 0(4 Q0    ( ." 4505U5'BQ (  )0(   9
M      " @0;1 0!X;"]W;W)K<VAE971S+W-H965T.#$N>&UL4$L! A0#%
M  @ X(!15(35D9#( @  5@@  !D              ("! =0! 'AL+W=O<FMS
M:&5E=',O<VAE970X,BYX;6Q02P$"% ,4    " #@@%%4[ZO<[ZL"  "6!@
M&0              @($ UP$ >&PO=V]R:W-H965T<R]S:&5E=#@S+GAM;%!+
M 0(4 Q0    ( ." 453QE<05$0(  (8$   9              " @>+9 0!X
M;"]W;W)K<VAE971S+W-H965T.#0N>&UL4$L! A0#%     @ X(!15'W?I1O/
M P   0\  !D              ("!*MP! 'AL+W=O<FMS:&5E=',O<VAE970X
M-2YX;6Q02P$"% ,4    " #@@%%4[,^:5^ "  #;!P  &0
M@($PX $ >&PO=V]R:W-H965T<R]S:&5E=#@V+GAM;%!+ 0(4 Q0    ( ."
M453K=V5+ZP(  /P'   9              " @4?C 0!X;"]W;W)K<VAE971S
M+W-H965T.#<N>&UL4$L! A0#%     @ X(!15,$2E*2=!@  [1X  !D
M         ("!:>8! 'AL+W=O<FMS:&5E=',O<VAE970X."YX;6Q02P$"% ,4
M    " #@@%%4Q08GQ%H&  "A'   &0              @($][0$ >&PO=V]R
M:W-H965T<R]S:&5E=#@Y+GAM;%!+ 0(4 Q0    ( ." 4532+9_8=P0  ,\1
M   9              " @<[S 0!X;"]W;W)K<VAE971S+W-H965T.3 N>&UL
M4$L! A0#%     @ X(!15+B6C;84 P  ?@D  !D              ("!?/@!
M 'AL+W=O<FMS:&5E=',O<VAE970Y,2YX;6Q02P$"% ,4    " #@@%%4*!.?
M)XL#   >"P  &0              @(''^P$ >&PO=V]R:W-H965T<R]S:&5E
M=#DR+GAM;%!+ 0(4 Q0    ( ." 452\ K&R_ ,  .H.   9
M  " @8G_ 0!X;"]W;W)K<VAE971S+W-H965T.3,N>&UL4$L! A0#%     @
MX(!15%C7V<I- P  + L  !D              ("!O ," 'AL+W=O<FMS:&5E
M=',O<VAE970Y-"YX;6Q02P$"% ,4    " #@@%%4@#%-][((  #B*   &0
M            @(% !P( >&PO=V]R:W-H965T<R]S:&5E=#DU+GAM;%!+ 0(4
M Q0    ( ." 453*684!C@,  %H,   9              " @2D0 @!X;"]W
M;W)K<VAE971S+W-H965T.38N>&UL4$L! A0#%     @ X(!15/2[SU%H!
MC!,  !D              ("![A," 'AL+W=O<FMS:&5E=',O<VAE970Y-RYX
M;6Q02P$"% ,4    " #@@%%4XX$1_.\$  #J%0  &0              @(&-
M& ( >&PO=V]R:W-H965T<R]S:&5E=#DX+GAM;%!+ 0(4 Q0    ( ." 452J
M2D/<@ ,  !@*   9              " @;,= @!X;"]W;W)K<VAE971S+W-H
M965T.3DN>&UL4$L! A0#%     @ X(!15):Z?"@S!   Q X  !H
M     ("!:B$" 'AL+W=O<FMS:&5E=',O<VAE970Q,# N>&UL4$L! A0#%
M  @ X(!15/I.,WW. @  P@<  !H              ("!U24" 'AL+W=O<FMS
M:&5E=',O<VAE970Q,#$N>&UL4$L! A0#%     @ X(!15/BM.Y;= @  10@
M !H              ("!VR@" 'AL+W=O<FMS:&5E=',O<VAE970Q,#(N>&UL
M4$L! A0#%     @ X(!15)-##]@E P  < P  !H              ("!\"L"
M 'AL+W=O<FMS:&5E=',O<VAE970Q,#,N>&UL4$L! A0#%     @ X(!15 AH
MD^A&!   7A$  !H              ("!32\" 'AL+W=O<FMS:&5E=',O<VAE
M970Q,#0N>&UL4$L! A0#%     @ X(!15#.L5".C P  V0T  !H
M     ("!RS," 'AL+W=O<FMS:&5E=',O<VAE970Q,#4N>&UL4$L! A0#%
M  @ X(!15 2AD07% @  <P<  !H              ("!IC<" 'AL+W=O<FMS
M:&5E=',O<VAE970Q,#8N>&UL4$L! A0#%     @ X(!15&:I=57H @  S D
M !H              ("!HSH" 'AL+W=O<FMS:&5E=',O<VAE970Q,#<N>&UL
M4$L! A0#%     @ X(!15'4=!M27!0  CAX  !H              ("!PST"
M 'AL+W=O<FMS:&5E=',O<VAE970Q,#@N>&UL4$L! A0#%     @ X(!15,,O
M&C@J @  - 4  !H              ("!DD," 'AL+W=O<FMS:&5E=',O<VAE
M970Q,#DN>&UL4$L! A0#%     @ X(!15/]5-,7)!   !A8  !H
M     ("!]$4" 'AL+W=O<FMS:&5E=',O<VAE970Q,3 N>&UL4$L! A0#%
M  @ X(!15/Y2:-AG P  (!8   T              ( !]4H" 'AL+W-T>6QE
M<RYX;6Q02P$"% ,4    " #@@%%4EXJ[',     3 @  "P
M@ &'3@( 7W)E;',O+G)E;'-02P$"% ,4    " #@@%%4NP3F3<L'  #\1P
M#P              @ %P3P( >&PO=V]R:V)O;VLN>&UL4$L! A0#%     @
MX(!15#J;0#48 P  F4   !H              ( !:%<" 'AL+U]R96QS+W=O
M<FMB;V]K+GAM;"YR96QS4$L! A0#%     @ X(!15,>%E:QZ @  )SX  !,
M             ( !N%H" %M#;VYT96YT7U1Y<&5S72YX;6Q02P4&     '8
,=@!\(   8UT"

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>132
<FILENAME>Show.js
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
// 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)}}}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>133
<FILENAME>report.css
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
/* 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;
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>134
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.22.0.1</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>308</ContextCount>
  <ElementCount>583</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>true</FootnotesReported>
  <SegmentCount>99</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>18</UnitCount>
  <MyReports>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>000010001 - Document - Cover Page</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CoverPage</Role>
      <ShortName>Cover Page</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>000020002 - Document - Audit Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AuditInformation</Role>
      <ShortName>Audit Information</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>100010003 - Statement - CONSOLIDATED STATEMENTS OF OPERATIONS</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS</Role>
      <ShortName>CONSOLIDATED STATEMENTS OF OPERATIONS</ShortName>
      <MenuCategory>Uncategorized</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>100020004 - Statement - CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME</Role>
      <ShortName>CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>100030005 - Statement - CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Parenthetical)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical</Role>
      <ShortName>CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Parenthetical)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>100040006 - Statement - CONSOLIDATED BALANCE SHEETS</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDBALANCESHEETS</Role>
      <ShortName>CONSOLIDATED BALANCE SHEETS</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>100050007 - Statement - CONSOLIDATED BALANCE SHEETS (Parenthetical)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical</Role>
      <ShortName>CONSOLIDATED BALANCE SHEETS (Parenthetical)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>100060008 - Statement - CONSOLIDATED STATEMENTS OF CASH FLOWS</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS</Role>
      <ShortName>CONSOLIDATED STATEMENTS OF CASH FLOWS</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>100070009 - Statement - CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY</Role>
      <ShortName>CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>100080010 - Statement - CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY (Parenthetical)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical</Role>
      <ShortName>CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY (Parenthetical)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.htm</HtmlFileName>
      <LongName>210011001 - Disclosure - Summary of Significant Accounting Policies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SummaryofSignificantAccountingPolicies</Role>
      <ShortName>Summary of Significant Accounting Policies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>11</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.htm</HtmlFileName>
      <LongName>210091002 - Disclosure - New Pronouncements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/NewPronouncements</Role>
      <ShortName>New Pronouncements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.htm</HtmlFileName>
      <LongName>210111003 - Disclosure - Fair Value Measurements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/FairValueMeasurements</Role>
      <ShortName>Fair Value Measurements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>210161004 - Disclosure - Cash, Cash Equivalents, and Investments</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CashCashEquivalentsandInvestments</Role>
      <ShortName>Cash, Cash Equivalents, and Investments</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>210241005 - Disclosure - Inventories</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/Inventories</Role>
      <ShortName>Inventories</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>210271006 - Disclosure - Property, Plant, and Equipment</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/PropertyPlantandEquipment</Role>
      <ShortName>Property, Plant, and Equipment</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>210311007 - Disclosure - Leases Leases</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/LeasesLeases</Role>
      <ShortName>Leases Leases</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>210351008 - Disclosure - Goodwill</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/Goodwill</Role>
      <ShortName>Goodwill</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>210391009 - Disclosure - Intangible Assets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IntangibleAssets</Role>
      <ShortName>Intangible Assets</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>19</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>210441010 - Disclosure - Accrued Expenses</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AccruedExpenses</Role>
      <ShortName>Accrued Expenses</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>20</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>210481011 - Disclosure - Commitments and Contingencies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CommitmentsandContingencies</Role>
      <ShortName>Commitments and Contingencies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>21</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>210501012 - Disclosure - Indemnification Provisions</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IndemnificationProvisions</Role>
      <ShortName>Indemnification Provisions</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>22</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>210511013 - Disclosure - Derivative Instruments</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/DerivativeInstruments</Role>
      <ShortName>Derivative Instruments</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>23</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>210581014 - Disclosure - Revenue Recognition</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RevenueRecognition</Role>
      <ShortName>Revenue Recognition</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>24</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>210641015 - Disclosure - Shareholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/ShareholdersEquity</Role>
      <ShortName>Shareholders' Equity</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>25</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>210661016 - Disclosure - Stock-Based Compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/StockBasedCompensation</Role>
      <ShortName>Stock-Based Compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>26</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>210731017 - Disclosure - Employee Savings Plan</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/EmployeeSavingsPlan</Role>
      <ShortName>Employee Savings Plan</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>27</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>210751018 - Disclosure - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxes</Role>
      <ShortName>Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>28</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>210831019 - Disclosure - Weighted Average Shares</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/WeightedAverageShares</Role>
      <ShortName>Weighted Average Shares</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>29</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>210871020 - Disclosure - Segment and Geographic Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SegmentandGeographicInformation</Role>
      <ShortName>Segment and Geographic Information</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>30</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>210911021 - Disclosure - Business Acquisitions</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/BusinessAcquisitions</Role>
      <ShortName>Business Acquisitions</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>31</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>210931022 - Disclosure - Restructuring Charges</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RestructuringCharges</Role>
      <ShortName>Restructuring Charges</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>32</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>210981023 - Disclosure - Subsequent Events</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SubsequentEvents</Role>
      <ShortName>Subsequent Events</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>33</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>211001024 - Disclosure - Schedule II - Valuation and Qualifying Accounts</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts</Role>
      <ShortName>Schedule II - Valuation and Qualifying Accounts</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>34</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>220022001 - Disclosure - Summary of Significant Accounting Policies (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies</Role>
      <ShortName>Summary of Significant Accounting Policies (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <ParentRole>http://cognex.com/role/SummaryofSignificantAccountingPolicies</ParentRole>
      <Position>35</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>220102002 - Disclosure - New Pronouncements (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/NewPronouncementsPolicies</Role>
      <ShortName>New Pronouncements (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <ParentRole>http://cognex.com/role/SummaryofSignificantAccountingPolicies</ParentRole>
      <Position>36</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>230123001 - Disclosure - Fair Value Measurements (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/FairValueMeasurementsTables</Role>
      <ShortName>Fair Value Measurements (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/FairValueMeasurements</ParentRole>
      <Position>37</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>230173002 - Disclosure - Cash, Cash Equivalents, and Investments (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CashCashEquivalentsandInvestmentsTables</Role>
      <ShortName>Cash, Cash Equivalents, and Investments (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/CashCashEquivalentsandInvestments</ParentRole>
      <Position>38</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>230253003 - Disclosure - Inventories (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/InventoriesTables</Role>
      <ShortName>Inventories (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/Inventories</ParentRole>
      <Position>39</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>230283004 - Disclosure - Property, Plant, and Equipment (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/PropertyPlantandEquipmentTables</Role>
      <ShortName>Property, Plant, and Equipment (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/PropertyPlantandEquipment</ParentRole>
      <Position>40</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>230323005 - Disclosure - Leases (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/LeasesTables</Role>
      <ShortName>Leases (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/LeasesLeases</ParentRole>
      <Position>41</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>230363006 - Disclosure - Goodwill (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/GoodwillTables</Role>
      <ShortName>Goodwill (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/Goodwill</ParentRole>
      <Position>42</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>230403007 - Disclosure - Intangible Assets (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IntangibleAssetsTables</Role>
      <ShortName>Intangible Assets (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/IntangibleAssets</ParentRole>
      <Position>43</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>230453008 - Disclosure - Accrued Expenses (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AccruedExpensesTables</Role>
      <ShortName>Accrued Expenses (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/AccruedExpenses</ParentRole>
      <Position>44</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>230523009 - Disclosure - Derivative Instruments (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/DerivativeInstrumentsTables</Role>
      <ShortName>Derivative Instruments (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/DerivativeInstruments</ParentRole>
      <Position>45</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>230593010 - Disclosure - Revenue Recognition (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RevenueRecognitionTables</Role>
      <ShortName>Revenue Recognition (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/RevenueRecognition</ParentRole>
      <Position>46</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>230673011 - Disclosure - Stock-Based Compensation (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/StockBasedCompensationTables</Role>
      <ShortName>Stock-Based Compensation (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/StockBasedCompensation</ParentRole>
      <Position>47</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>230763012 - Disclosure - Income Taxes (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxesTables</Role>
      <ShortName>Income Taxes (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/IncomeTaxes</ParentRole>
      <Position>48</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>230843013 - Disclosure - Weighted Average Shares (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/WeightedAverageSharesTables</Role>
      <ShortName>Weighted Average Shares (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/WeightedAverageShares</ParentRole>
      <Position>49</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>230883014 - Disclosure - Segment and Geographic Information (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SegmentandGeographicInformationTables</Role>
      <ShortName>Segment and Geographic Information (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/SegmentandGeographicInformation</ParentRole>
      <Position>50</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>230943015 - Disclosure - Restructuring Charges (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RestructuringChargesTables</Role>
      <ShortName>Restructuring Charges (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/RestructuringCharges</ParentRole>
      <Position>51</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>240034001 - Disclosure - Summary of Significant Accounting Policies - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail</Role>
      <ShortName>Summary of Significant Accounting Policies - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>52</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>240044002 - Disclosure - Summary of Significant Accounting Policies - Intangible Assets (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails</Role>
      <ShortName>Summary of Significant Accounting Policies - Intangible Assets (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>53</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.htm</HtmlFileName>
      <LongName>240054003 - Disclosure - Summary of Significant Accounting Policies - Warranty (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails</Role>
      <ShortName>Summary of Significant Accounting Policies - Warranty (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>54</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.htm</HtmlFileName>
      <LongName>240064004 - Disclosure - Summary of Significant Accounting Policies Summary of Significant Accounting Policies - Revenue Recognition (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails</Role>
      <ShortName>Summary of Significant Accounting Policies Summary of Significant Accounting Policies - Revenue Recognition (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>55</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R56.htm</HtmlFileName>
      <LongName>240074005 - Disclosure - Summary of Significant Accounting Policies - Advertising Costs (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails</Role>
      <ShortName>Summary of Significant Accounting Policies - Advertising Costs (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>56</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R57.htm</HtmlFileName>
      <LongName>240084006 - Disclosure - Summary of Significant Accounting Policies - Comprehensive Income (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails</Role>
      <ShortName>Summary of Significant Accounting Policies - Comprehensive Income (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>57</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R58.htm</HtmlFileName>
      <LongName>240134007 - Disclosure - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on a Recurring Basis (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail</Role>
      <ShortName>Fair Value Measurements - Assets and Liabilities Measured at Fair Value on a Recurring Basis (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>58</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R59.htm</HtmlFileName>
      <LongName>240144008 - Disclosure - Fair Value Measurements - Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails</Role>
      <ShortName>Fair Value Measurements - Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>59</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R60.htm</HtmlFileName>
      <LongName>240154009 - Disclosure - Fair Value Measurements - Additional Information (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails</Role>
      <ShortName>Fair Value Measurements - Additional Information (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>60</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R61.htm</HtmlFileName>
      <LongName>240184010 - Disclosure - Cash, Cash Equivalents and Investments - Components of Cash, Cash Equivalents and Investments (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail</Role>
      <ShortName>Cash, Cash Equivalents and Investments - Components of Cash, Cash Equivalents and Investments (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>61</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R62.htm</HtmlFileName>
      <LongName>240194011 - Disclosure - Cash, Cash Equivalents and Investments - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail</Role>
      <ShortName>Cash, Cash Equivalents and Investments - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>62</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R63.htm</HtmlFileName>
      <LongName>240204012 - Disclosure - Cash, Cash Equivalents and Investments - Amortized Cost to Fair Value (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail</Role>
      <ShortName>Cash, Cash Equivalents and Investments - Amortized Cost to Fair Value (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>63</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R64.htm</HtmlFileName>
      <LongName>240214013 - Disclosure - Cash, Cash Equivalents and Investments - Gross Unrealized Losses and Fair Value for Available-for-Sale Investments (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail</Role>
      <ShortName>Cash, Cash Equivalents and Investments - Gross Unrealized Losses and Fair Value for Available-for-Sale Investments (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>64</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R65.htm</HtmlFileName>
      <LongName>240224014 - Disclosure - Cash, Cash Equivalents, and Investments - Allowance for Credit Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails</Role>
      <ShortName>Cash, Cash Equivalents, and Investments - Allowance for Credit Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>65</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R66.htm</HtmlFileName>
      <LongName>240234015 - Disclosure - Cash, Cash Equivalents and Investments - Effective Maturity Dates of Available-for-Sale Investments (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail</Role>
      <ShortName>Cash, Cash Equivalents and Investments - Effective Maturity Dates of Available-for-Sale Investments (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>66</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R67.htm</HtmlFileName>
      <LongName>240264016 - Disclosure - Inventories - Inventories (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/InventoriesInventoriesDetail</Role>
      <ShortName>Inventories - Inventories (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>67</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R68.htm</HtmlFileName>
      <LongName>240294017 - Disclosure - Property, Plant, and Equipment - Property, Plant, and Equipment (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail</Role>
      <ShortName>Property, Plant, and Equipment - Property, Plant, and Equipment (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>68</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R69.htm</HtmlFileName>
      <LongName>240304018 - Disclosure - Property, Plant and Equipment - Additional Information (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails</Role>
      <ShortName>Property, Plant and Equipment - Additional Information (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>69</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R70.htm</HtmlFileName>
      <LongName>240334019 - Disclosure - Leases (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/LeasesDetails</Role>
      <ShortName>Leases (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://cognex.com/role/LeasesTables</ParentRole>
      <Position>70</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R71.htm</HtmlFileName>
      <LongName>240344020 - Disclosure - Leases - Schedule of Payments (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/LeasesScheduleofPaymentsDetails</Role>
      <ShortName>Leases - Schedule of Payments (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>71</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R72.htm</HtmlFileName>
      <LongName>240374021 - Disclosure - Goodwill - Changes in the Carrying Value of Goodwill (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail</Role>
      <ShortName>Goodwill - Changes in the Carrying Value of Goodwill (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>72</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R73.htm</HtmlFileName>
      <LongName>240414023 - Disclosure - Intangible Assets - Amortized Intangible Assets (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail</Role>
      <ShortName>Intangible Assets - Amortized Intangible Assets (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>73</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R74.htm</HtmlFileName>
      <LongName>240424024 - Disclosure - Intangible Assets - Estimated Amortization Expense Succeeding Fiscal Years (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail</Role>
      <ShortName>Intangible Assets - Estimated Amortization Expense Succeeding Fiscal Years (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>74</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R75.htm</HtmlFileName>
      <LongName>240434025 - Disclosure - Intangible Assets - Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IntangibleAssetsNarrativeDetails</Role>
      <ShortName>Intangible Assets - Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>75</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R76.htm</HtmlFileName>
      <LongName>240464026 - Disclosure - Accrued Expenses - Constituents of Accrued Expenses (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail</Role>
      <ShortName>Accrued Expenses - Constituents of Accrued Expenses (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>76</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R77.htm</HtmlFileName>
      <LongName>240474027 - Disclosure - Accrued Expenses - Changes in Warranty Obligations (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail</Role>
      <ShortName>Accrued Expenses - Changes in Warranty Obligations (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>77</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R78.htm</HtmlFileName>
      <LongName>240494028 - Disclosure - Commitments and Contingencies - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail</Role>
      <ShortName>Commitments and Contingencies - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>78</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R79.htm</HtmlFileName>
      <LongName>240534029 - Disclosure - Derivative Instruments - Additional Details (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails</Role>
      <ShortName>Derivative Instruments - Additional Details (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>79</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R80.htm</HtmlFileName>
      <LongName>240544030 - Disclosure - Derivative Instruments - Outstanding Forward Contracts (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails</Role>
      <ShortName>Derivative Instruments - Outstanding Forward Contracts (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>80</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R81.htm</HtmlFileName>
      <LongName>240554031 - Disclosure - Derivative Instruments - Balance Sheet Location (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails</Role>
      <ShortName>Derivative Instruments - Balance Sheet Location (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>81</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R82.htm</HtmlFileName>
      <LongName>240564032 - Disclosure - Derivative Instruments - Assets and liabilities presented on a net basis due to the right of offset (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails</Role>
      <ShortName>Derivative Instruments - Assets and liabilities presented on a net basis due to the right of offset (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>82</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R83.htm</HtmlFileName>
      <LongName>240574033 - Disclosure - Derivative Instruments - Gain (Loss) Recognized in Other Comprehensive Income (Loss) (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails</Role>
      <ShortName>Derivative Instruments - Gain (Loss) Recognized in Other Comprehensive Income (Loss) (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>83</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R84.htm</HtmlFileName>
      <LongName>240604034 - Disclosure - Revenue Recognition - Narratives (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RevenueRecognitionNarrativesDetails</Role>
      <ShortName>Revenue Recognition - Narratives (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>84</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R85.htm</HtmlFileName>
      <LongName>240614035 - Disclosure - Revenue Recognition - Disaggregation by Geography and Type (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails</Role>
      <ShortName>Revenue Recognition - Disaggregation by Geography and Type (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>85</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R86.htm</HtmlFileName>
      <LongName>240624036 - Disclosure - Revenue Recognition - Allowance for Credit Loss (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails</Role>
      <ShortName>Revenue Recognition - Allowance for Credit Loss (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>86</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R87.htm</HtmlFileName>
      <LongName>240634037 - Disclosure - Revenue Recognition - Deferred Revenue and Customer Deposits Rollforward (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails</Role>
      <ShortName>Revenue Recognition - Deferred Revenue and Customer Deposits Rollforward (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>87</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R88.htm</HtmlFileName>
      <LongName>240654038 - Disclosure - Shareholders' Equity - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail</Role>
      <ShortName>Shareholders' Equity - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>88</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R89.htm</HtmlFileName>
      <LongName>240684039 - Disclosure - Stock-Based Compensation Expense - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail</Role>
      <ShortName>Stock-Based Compensation Expense - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>89</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R90.htm</HtmlFileName>
      <LongName>240694040 - Disclosure - Stock-Based Compensation Expense - Summary of Stock Option Activity (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail</Role>
      <ShortName>Stock-Based Compensation Expense - Summary of Stock Option Activity (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>90</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R91.htm</HtmlFileName>
      <LongName>240704041 - Disclosure - Stock-Based Compensation Expense - Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail</Role>
      <ShortName>Stock-Based Compensation Expense - Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>91</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R92.htm</HtmlFileName>
      <LongName>240714042 - Disclosure - Stock-Based Compensation Expense - Summary of Restricted Stock Option Activity (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail</Role>
      <ShortName>Stock-Based Compensation Expense - Summary of Restricted Stock Option Activity (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>92</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R93.htm</HtmlFileName>
      <LongName>240724043 - Disclosure - Stock-Based Compensation Expense - Stock-Based Compensation Expense (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail</Role>
      <ShortName>Stock-Based Compensation Expense - Stock-Based Compensation Expense (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>93</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R94.htm</HtmlFileName>
      <LongName>240744044 - Disclosure - Employee Savings Plan - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail</Role>
      <ShortName>Employee Savings Plan - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>94</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R95.htm</HtmlFileName>
      <LongName>240774045 - Disclosure - Income Taxes - Additional Information (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxesAdditionalInformationDetails</Role>
      <ShortName>Income Taxes - Additional Information (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>95</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R96.htm</HtmlFileName>
      <LongName>240784046 - Disclosure - Income Taxes - Constituents of Provision for Income Taxes (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails</Role>
      <ShortName>Income Taxes - Constituents of Provision for Income Taxes (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>96</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R97.htm</HtmlFileName>
      <LongName>240794047 - Disclosure - Income Taxes - Reconciliation of the United States Federal Statutory Corporate Tax Rate to Company's Effective Tax Rate or Income Tax Provision (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails</Role>
      <ShortName>Income Taxes - Reconciliation of the United States Federal Statutory Corporate Tax Rate to Company's Effective Tax Rate or Income Tax Provision (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>97</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R98.htm</HtmlFileName>
      <LongName>240804048 - Disclosure - Income Taxes - Schedule of Change in Accounting Policy (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails</Role>
      <ShortName>Income Taxes - Schedule of Change in Accounting Policy (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>98</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R99.htm</HtmlFileName>
      <LongName>240814049 - Disclosure - Income Taxes - Changes in the Reserve for Income Taxes, Excluding Interest and Penalties (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails</Role>
      <ShortName>Income Taxes - Changes in the Reserve for Income Taxes, Excluding Interest and Penalties (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>99</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R100.htm</HtmlFileName>
      <LongName>240824050 - Disclosure - Income Taxes - Constituents of Deferred Tax Assets (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails</Role>
      <ShortName>Income Taxes - Constituents of Deferred Tax Assets (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>100</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R101.htm</HtmlFileName>
      <LongName>240854051 - Disclosure - Weighted Average Shares - Calculation of Weighted Average Shares (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail</Role>
      <ShortName>Weighted Average Shares - Calculation of Weighted Average Shares (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>101</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R102.htm</HtmlFileName>
      <LongName>240864052 - Disclosure - Weighted Average Shares - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail</Role>
      <ShortName>Weighted Average Shares - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>102</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R103.htm</HtmlFileName>
      <LongName>240894053 - Disclosure - Segment and Geographic Information - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail</Role>
      <ShortName>Segment and Geographic Information - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>103</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R104.htm</HtmlFileName>
      <LongName>240904054 - Disclosure - Segment and Geographic Information - Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail</Role>
      <ShortName>Segment and Geographic Information - Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>104</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R105.htm</HtmlFileName>
      <LongName>240924055 - Disclosure - Business Acquisitions - Sualab Co., Ltd. Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails</Role>
      <ShortName>Business Acquisitions - Sualab Co., Ltd. Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>105</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R106.htm</HtmlFileName>
      <LongName>240954056 - Disclosure - Restructuring Charges - Additional Information (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RestructuringChargesAdditionalInformationDetails</Role>
      <ShortName>Restructuring Charges - Additional Information (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>106</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R107.htm</HtmlFileName>
      <LongName>240964057 - Disclosure - Restructuring Charges - Schedule of Restructuring and Related Costs (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails</Role>
      <ShortName>Restructuring Charges - Schedule of Restructuring and Related Costs (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>107</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R108.htm</HtmlFileName>
      <LongName>240974058 - Disclosure - Restructuring Charges - Schedule of Restructuring Reserve by Type of Cost (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails</Role>
      <ShortName>Restructuring Charges - Schedule of Restructuring Reserve by Type of Cost (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>108</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R109.htm</HtmlFileName>
      <LongName>240994059 - Disclosure - Subsequent Events - (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SubsequentEventsDetails</Role>
      <ShortName>Subsequent Events - (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://cognex.com/role/SubsequentEvents</ParentRole>
      <Position>109</Position>
    </Report>
    <Report instance="cgnx-20211231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R110.htm</HtmlFileName>
      <LongName>241014060 - Disclosure - Schedule II -Valuation and Qualifying Accounts (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail</Role>
      <ShortName>Schedule II -Valuation and Qualifying Accounts (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>110</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <InputFiles>
    <File doctype="10-K" original="cgnx-20211231.htm">cgnx-20211231.htm</File>
    <File>cgnx-20211231.xsd</File>
    <File>cgnx-20211231_cal.xml</File>
    <File>cgnx-20211231_def.xml</File>
    <File>cgnx-20211231_lab.xml</File>
    <File>cgnx-20211231_pre.xml</File>
    <File>cgnx-20211231xexhibit10l.htm</File>
    <File>cgnx-20211231xexhibit21.htm</File>
    <File>cgnx-20211231xexhibit231.htm</File>
    <File>cgnx-20211231xexhibit311.htm</File>
    <File>cgnx-20211231xexhibit312.htm</File>
    <File>cgnx-20211231xexhibit321.htm</File>
    <File>cgnx-20211231xexhibit322.htm</File>
  </InputFiles>
  <SupplementalFiles>
    <File>cgnx-20211231_g1.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy items="1">http://fasb.org/srt/2021-01-31</BaseTaxonomy>
    <BaseTaxonomy items="1329">http://fasb.org/us-gaap/2021-01-31</BaseTaxonomy>
    <BaseTaxonomy items="38">http://xbrl.sec.gov/dei/2021q4</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>137
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "instance": {
  "cgnx-20211231.htm": {
   "axisCustom": 1,
   "axisStandard": 31,
   "contextCount": 308,
   "dts": {
    "calculationLink": {
     "local": [
      "cgnx-20211231_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "cgnx-20211231_def.xml"
     ]
    },
    "inline": {
     "local": [
      "cgnx-20211231.htm"
     ]
    },
    "labelLink": {
     "local": [
      "cgnx-20211231_lab.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "cgnx-20211231_pre.xml"
     ]
    },
    "schema": {
     "local": [
      "cgnx-20211231.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://xbrl.fasb.org/srt/2021/elts/srt-2021-01-31.xsd",
      "https://xbrl.fasb.org/srt/2021/elts/srt-roles-2021-01-31.xsd",
      "https://xbrl.fasb.org/srt/2021/elts/srt-types-2021-01-31.xsd",
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-gaap-2021-01-31.xsd",
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-roles-2021-01-31.xsd",
      "https://xbrl.fasb.org/us-gaap/2021/elts/us-types-2021-01-31.xsd",
      "https://xbrl.sec.gov/country/2021/country-2021.xsd",
      "https://xbrl.sec.gov/currency/2021/currency-2021.xsd",
      "https://xbrl.sec.gov/dei/2021q4/dei-2021q4.xsd"
     ]
    }
   },
   "elementCount": 781,
   "entityCount": 1,
   "hidden": {
    "http://cognex.com/20211231": 10,
    "http://fasb.org/us-gaap/2021-01-31": 59,
    "http://xbrl.sec.gov/dei/2021q4": 7,
    "total": 76
   },
   "keyCustom": 60,
   "keyStandard": 523,
   "memberCustom": 28,
   "memberStandard": 69,
   "nsprefix": "cgnx",
   "nsuri": "http://cognex.com/20211231",
   "report": {
    "R1": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "document",
     "isDefault": "true",
     "longName": "000010001 - Document - Cover Page",
     "role": "http://cognex.com/role/CoverPage",
     "shortName": "Cover Page",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R10": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100080010 - Statement - CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY (Parenthetical)",
     "role": "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical",
     "shortName": "CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": null
    },
    "R100": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240824050 - Disclosure - Income Taxes - Constituents of Deferred Tax Assets (Details)",
     "role": "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails",
     "shortName": "Income Taxes - Constituents of Deferred Tax Assets (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R101": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:WeightedAverageNumberOfSharesOutstandingBasic",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240854051 - Disclosure - Weighted Average Shares - Calculation of Weighted Average Shares (Detail)",
     "role": "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail",
     "shortName": "Weighted Average Shares - Calculation of Weighted Average Shares (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R102": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i7c9f8c01dcbb4324b28ecd41ace87fd9_D20210101-20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240864052 - Disclosure - Weighted Average Shares - Additional Information (Detail)",
     "role": "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail",
     "shortName": "Weighted Average Shares - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i7c9f8c01dcbb4324b28ecd41ace87fd9_D20210101-20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R103": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NumberOfReportableSegments",
      "reportCount": 1,
      "unitRef": "segment",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240894053 - Disclosure - Segment and Geographic Information - Additional Information (Detail)",
     "role": "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail",
     "shortName": "Segment and Geographic Information - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "if4d3420bee2e4188a13523c87c8f50bf_D20210101-20211231",
      "decimals": "2",
      "lang": "en-US",
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R104": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240904054 - Disclosure - Segment and Geographic Information - Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas (Detail)",
     "role": "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail",
     "shortName": "Segment and Geographic Information - Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:NoncurrentAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R105": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240924055 - Disclosure - Business Acquisitions - Sualab Co., Ltd. Narrative (Details)",
     "role": "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
     "shortName": "Business Acquisitions - Sualab Co., Ltd. Narrative (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i0b6307f55f5e4750a8f66d44f395a2ba_D20191016-20191016",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationConsiderationTransferred1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R106": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i9ff3a1f2d3354f8b9e1a3862c0d45393_I20200526",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240954056 - Disclosure - Restructuring Charges - Additional Information (Details)",
     "role": "http://cognex.com/role/RestructuringChargesAdditionalInformationDetails",
     "shortName": "Restructuring Charges - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i9ff3a1f2d3354f8b9e1a3862c0d45393_I20200526",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R107": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringCharges",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240964057 - Disclosure - Restructuring Charges - Schedule of Restructuring and Related Costs (Details)",
     "role": "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails",
     "shortName": "Restructuring Charges - Schedule of Restructuring and Related Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R108": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringCharges",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240974058 - Disclosure - Restructuring Charges - Schedule of Restructuring Reserve by Type of Cost (Details)",
     "role": "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
     "shortName": "Restructuring Charges - Schedule of Restructuring Reserve by Type of Cost (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i0667b335c8d842be8dbe3b6c483d1fba_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:RestructuringCharges",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R109": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia0707d1af0314a219bcf26b1a7beb49a_I20220217",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DividendsPayableAmountPerShare",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240994059 - Disclosure - Subsequent Events - (Details)",
     "role": "http://cognex.com/role/SubsequentEventsDetails",
     "shortName": "Subsequent Events - (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia0707d1af0314a219bcf26b1a7beb49a_I20220217",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DividendsPayableAmountPerShare",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     }
    },
    "R11": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210011001 - Disclosure - Summary of Significant Accounting Policies",
     "role": "http://cognex.com/role/SummaryofSignificantAccountingPolicies",
     "shortName": "Summary of Significant Accounting Policies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R110": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i6d0d3605ae3a47539276eb78b04403f8_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ValuationAllowancesAndReservesBalance",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "241014060 - Disclosure - Schedule II -Valuation and Qualifying Accounts (Detail)",
     "role": "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail",
     "shortName": "Schedule II -Valuation and Qualifying Accounts (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "id3be38a15bc644abb5cb39c413e9327b_I20181231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ValuationAllowancesAndReservesBalance",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R12": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210091002 - Disclosure - New Pronouncements",
     "role": "http://cognex.com/role/NewPronouncements",
     "shortName": "New Pronouncements",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R13": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210111003 - Disclosure - Fair Value Measurements",
     "role": "http://cognex.com/role/FairValueMeasurements",
     "shortName": "Fair Value Measurements",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R14": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210161004 - Disclosure - Cash, Cash Equivalents, and Investments",
     "role": "http://cognex.com/role/CashCashEquivalentsandInvestments",
     "shortName": "Cash, Cash Equivalents, and Investments",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R15": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210241005 - Disclosure - Inventories",
     "role": "http://cognex.com/role/Inventories",
     "shortName": "Inventories",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R16": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210271006 - Disclosure - Property, Plant, and Equipment",
     "role": "http://cognex.com/role/PropertyPlantandEquipment",
     "shortName": "Property, Plant, and Equipment",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R17": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeasesOfLessorDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210311007 - Disclosure - Leases Leases",
     "role": "http://cognex.com/role/LeasesLeases",
     "shortName": "Leases Leases",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeasesOfLessorDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R18": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210351008 - Disclosure - Goodwill",
     "role": "http://cognex.com/role/Goodwill",
     "shortName": "Goodwill",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R19": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IntangibleAssetsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210391009 - Disclosure - Intangible Assets",
     "role": "http://cognex.com/role/IntangibleAssets",
     "shortName": "Intangible Assets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IntangibleAssetsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R2": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:AuditorName",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "document",
     "isDefault": "false",
     "longName": "000020002 - Document - Audit Information",
     "role": "http://cognex.com/role/AuditInformation",
     "shortName": "Audit Information",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:AuditorName",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R20": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210441010 - Disclosure - Accrued Expenses",
     "role": "http://cognex.com/role/AccruedExpenses",
     "shortName": "Accrued Expenses",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R21": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210481011 - Disclosure - Commitments and Contingencies",
     "role": "http://cognex.com/role/CommitmentsandContingencies",
     "shortName": "Commitments and Contingencies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R22": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:IndemnificationProvisionsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210501012 - Disclosure - Indemnification Provisions",
     "role": "http://cognex.com/role/IndemnificationProvisions",
     "shortName": "Indemnification Provisions",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:IndemnificationProvisionsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R23": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210511013 - Disclosure - Derivative Instruments",
     "role": "http://cognex.com/role/DerivativeInstruments",
     "shortName": "Derivative Instruments",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R24": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210581014 - Disclosure - Revenue Recognition",
     "role": "http://cognex.com/role/RevenueRecognition",
     "shortName": "Revenue Recognition",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R25": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210641015 - Disclosure - Shareholders' Equity",
     "role": "http://cognex.com/role/ShareholdersEquity",
     "shortName": "Shareholders' Equity",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R26": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210661016 - Disclosure - Stock-Based Compensation",
     "role": "http://cognex.com/role/StockBasedCompensation",
     "shortName": "Stock-Based Compensation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R27": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210731017 - Disclosure - Employee Savings Plan",
     "role": "http://cognex.com/role/EmployeeSavingsPlan",
     "shortName": "Employee Savings Plan",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R28": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210751018 - Disclosure - Income Taxes",
     "role": "http://cognex.com/role/IncomeTaxes",
     "shortName": "Income Taxes",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R29": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210831019 - Disclosure - Weighted Average Shares",
     "role": "http://cognex.com/role/WeightedAverageShares",
     "shortName": "Weighted Average Shares",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R3": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100010003 - Statement - CONSOLIDATED STATEMENTS OF OPERATIONS",
     "role": "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
     "shortName": "CONSOLIDATED STATEMENTS OF OPERATIONS",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:CostOfGoodsAndServicesSold",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R30": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210871020 - Disclosure - Segment and Geographic Information",
     "role": "http://cognex.com/role/SegmentandGeographicInformation",
     "shortName": "Segment and Geographic Information",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R31": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210911021 - Disclosure - Business Acquisitions",
     "role": "http://cognex.com/role/BusinessAcquisitions",
     "shortName": "Business Acquisitions",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R32": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210931022 - Disclosure - Restructuring Charges",
     "role": "http://cognex.com/role/RestructuringCharges",
     "shortName": "Restructuring Charges",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R33": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SubsequentEventsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210981023 - Disclosure - Subsequent Events",
     "role": "http://cognex.com/role/SubsequentEvents",
     "shortName": "Subsequent Events",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SubsequentEventsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R34": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "211001024 - Disclosure - Schedule II - Valuation and Qualifying Accounts",
     "role": "http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts",
     "shortName": "Schedule II - Valuation and Qualifying Accounts",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R35": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:NatureOfOperationsPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "220022001 - Disclosure - Summary of Significant Accounting Policies (Policies)",
     "role": "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies",
     "shortName": "Summary of Significant Accounting Policies (Policies)",
     "subGroupType": "policies",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:NatureOfOperationsPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R36": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "220102002 - Disclosure - New Pronouncements (Policies)",
     "role": "http://cognex.com/role/NewPronouncementsPolicies",
     "shortName": "New Pronouncements (Policies)",
     "subGroupType": "policies",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R37": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230123001 - Disclosure - Fair Value Measurements (Tables)",
     "role": "http://cognex.com/role/FairValueMeasurementsTables",
     "shortName": "Fair Value Measurements (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R38": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230173002 - Disclosure - Cash, Cash Equivalents, and Investments (Tables)",
     "role": "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables",
     "shortName": "Cash, Cash Equivalents, and Investments (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R39": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230253003 - Disclosure - Inventories (Tables)",
     "role": "http://cognex.com/role/InventoriesTables",
     "shortName": "Inventories (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R4": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100020004 - Statement - CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME",
     "role": "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
     "shortName": "CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R40": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230283004 - Disclosure - Property, Plant, and Equipment (Tables)",
     "role": "http://cognex.com/role/PropertyPlantandEquipmentTables",
     "shortName": "Property, Plant, and Equipment (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R41": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230323005 - Disclosure - Leases (Tables)",
     "role": "http://cognex.com/role/LeasesTables",
     "shortName": "Leases (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R42": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230363006 - Disclosure - Goodwill (Tables)",
     "role": "http://cognex.com/role/GoodwillTables",
     "shortName": "Goodwill (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R43": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230403007 - Disclosure - Intangible Assets (Tables)",
     "role": "http://cognex.com/role/IntangibleAssetsTables",
     "shortName": "Intangible Assets (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R44": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230453008 - Disclosure - Accrued Expenses (Tables)",
     "role": "http://cognex.com/role/AccruedExpensesTables",
     "shortName": "Accrued Expenses (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R45": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230523009 - Disclosure - Derivative Instruments (Tables)",
     "role": "http://cognex.com/role/DerivativeInstrumentsTables",
     "shortName": "Derivative Instruments (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R46": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230593010 - Disclosure - Revenue Recognition (Tables)",
     "role": "http://cognex.com/role/RevenueRecognitionTables",
     "shortName": "Revenue Recognition (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R47": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230673011 - Disclosure - Stock-Based Compensation (Tables)",
     "role": "http://cognex.com/role/StockBasedCompensationTables",
     "shortName": "Stock-Based Compensation (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R48": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230763012 - Disclosure - Income Taxes (Tables)",
     "role": "http://cognex.com/role/IncomeTaxesTables",
     "shortName": "Income Taxes (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R49": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230843013 - Disclosure - Weighted Average Shares (Tables)",
     "role": "http://cognex.com/role/WeightedAverageSharesTables",
     "shortName": "Weighted Average Shares (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R5": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100030005 - Statement - CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Parenthetical)",
     "role": "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical",
     "shortName": "CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": null
    },
    "R50": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230883014 - Disclosure - Segment and Geographic Information (Tables)",
     "role": "http://cognex.com/role/SegmentandGeographicInformationTables",
     "shortName": "Segment and Geographic Information (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R51": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230943015 - Disclosure - Restructuring Charges (Tables)",
     "role": "http://cognex.com/role/RestructuringChargesTables",
     "shortName": "Restructuring Charges (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i0c7d47f8534b4b0b80d6d30f88ecb1c3_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R52": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:CashAndCashEquivalentsPolicyTextBlock",
       "us-gaap:InvestmentPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240034001 - Disclosure - Summary of Significant Accounting Policies - Additional Information (Detail)",
     "role": "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail",
     "shortName": "Summary of Significant Accounting Policies - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:CashAndCashEquivalentsPolicyTextBlock",
       "us-gaap:InvestmentPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R53": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i826aff0c969544a5a804571eeeecac12_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240044002 - Disclosure - Summary of Significant Accounting Policies - Intangible Assets (Details)",
     "role": "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails",
     "shortName": "Summary of Significant Accounting Policies - Intangible Assets (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i826aff0c969544a5a804571eeeecac12_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R54": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:StandardProductWarrantyPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:ProductWarrantyPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240054003 - Disclosure - Summary of Significant Accounting Policies - Warranty (Details)",
     "role": "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails",
     "shortName": "Summary of Significant Accounting Policies - Warranty (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:StandardProductWarrantyPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i2bdea3feb5ee4e4395116243f2bbd0f8_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:ProductWarrantyPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R55": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:RevenuePaymentTerms",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240064004 - Disclosure - Summary of Significant Accounting Policies Summary of Significant Accounting Policies - Revenue Recognition (Details)",
     "role": "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails",
     "shortName": "Summary of Significant Accounting Policies Summary of Significant Accounting Policies - Revenue Recognition (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i258063d49d9b48f296f8e28b9d01a914_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:RevenuePaymentTerms",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R56": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:AdvertisingCostsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AdvertisingExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240074005 - Disclosure - Summary of Significant Accounting Policies - Advertising Costs (Details)",
     "role": "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails",
     "shortName": "Summary of Significant Accounting Policies - Advertising Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:AdvertisingCostsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AdvertisingExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R57": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240084006 - Disclosure - Summary of Significant Accounting Policies - Comprehensive Income (Details)",
     "role": "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails",
     "shortName": "Summary of Significant Accounting Policies - Comprehensive Income (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R58": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ib0c023c21ea94cfda67a9aed5e4824e6_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:MoneyMarketInstrumentsFairValueDisclosure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240134007 - Disclosure - Fair Value Measurements - Assets and Liabilities Measured at Fair Value on a Recurring Basis (Detail)",
     "role": "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail",
     "shortName": "Fair Value Measurements - Assets and Liabilities Measured at Fair Value on a Recurring Basis (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ib0c023c21ea94cfda67a9aed5e4824e6_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:MoneyMarketInstrumentsFairValueDisclosure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R59": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240144008 - Disclosure - Fair Value Measurements - Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation (Details)",
     "role": "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails",
     "shortName": "Fair Value Measurements - Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "icbe413b8380b4b74b96766d056cfe1be_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:LiabilitiesFairValueAdjustment",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R6": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100040006 - Statement - CONSOLIDATED BALANCE SHEETS",
     "role": "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
     "shortName": "CONSOLIDATED BALANCE SHEETS",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:AccountsReceivableNetCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R60": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240154009 - Disclosure - Fair Value Measurements - Additional Information (Details)",
     "role": "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
     "shortName": "Fair Value Measurements - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "id9c74275ab59442fb9ded8deb5674d28_I20211231",
      "decimals": "INF",
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R61": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:Cash",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240184010 - Disclosure - Cash, Cash Equivalents and Investments - Components of Cash, Cash Equivalents and Investments (Detail)",
     "role": "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
     "shortName": "Cash, Cash Equivalents and Investments - Components of Cash, Cash Equivalents and Investments (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:MoneyMarketFundsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R62": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:DueFromForeignBanks",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240194011 - Disclosure - Cash, Cash Equivalents and Investments - Additional Information (Detail)",
     "role": "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail",
     "shortName": "Cash, Cash Equivalents and Investments - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:DueFromForeignBanks",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R63": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240204012 - Disclosure - Cash, Cash Equivalents and Investments - Amortized Cost to Fair Value (Detail)",
     "role": "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
     "shortName": "Cash, Cash Equivalents and Investments - Amortized Cost to Fair Value (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R64": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240214013 - Disclosure - Cash, Cash Equivalents and Investments - Gross Unrealized Losses and Fair Value for Available-for-Sale Investments (Detail)",
     "role": "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail",
     "shortName": "Cash, Cash Equivalents and Investments - Gross Unrealized Losses and Fair Value for Available-for-Sale Investments (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R65": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
       "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240224014 - Disclosure - Cash, Cash Equivalents, and Investments - Allowance for Credit Loss (Details)",
     "role": "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails",
     "shortName": "Cash, Cash Equivalents, and Investments - Allowance for Credit Loss (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
       "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia991b13c7b074439964a26d579235ee4_I20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R66": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240234015 - Disclosure - Cash, Cash Equivalents and Investments - Effective Maturity Dates of Available-for-Sale Investments (Detail)",
     "role": "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
     "shortName": "Cash, Cash Equivalents and Investments - Effective Maturity Dates of Available-for-Sale Investments (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R67": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryRawMaterialsNetOfReserves",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240264016 - Disclosure - Inventories - Inventories (Detail)",
     "role": "http://cognex.com/role/InventoriesInventoriesDetail",
     "shortName": "Inventories - Inventories (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryRawMaterialsNetOfReserves",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R68": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240294017 - Disclosure - Property, Plant, and Equipment - Property, Plant, and Equipment (Detail)",
     "role": "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
     "shortName": "Property, Plant, and Equipment - Property, Plant, and Equipment (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R69": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisposals",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240304018 - Disclosure - Property, Plant and Equipment - Additional Information (Details)",
     "role": "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails",
     "shortName": "Property, Plant and Equipment - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisposals",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R7": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100050007 - Statement - CONSOLIDATED BALANCE SHEETS (Parenthetical)",
     "role": "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
     "shortName": "CONSOLIDATED BALANCE SHEETS (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleAmortizedCostCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R70": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240334019 - Disclosure - Leases (Details)",
     "role": "http://cognex.com/role/LeasesDetails",
     "shortName": "Leases (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R71": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240344020 - Disclosure - Leases - Schedule of Payments (Details)",
     "role": "http://cognex.com/role/LeasesScheduleofPaymentsDetails",
     "shortName": "Leases - Schedule of Payments (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R72": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240374021 - Disclosure - Goodwill - Changes in the Carrying Value of Goodwill (Detail)",
     "role": "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail",
     "shortName": "Goodwill - Changes in the Carrying Value of Goodwill (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia991b13c7b074439964a26d579235ee4_I20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R73": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240414023 - Disclosure - Intangible Assets - Amortized Intangible Assets (Detail)",
     "role": "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
     "shortName": "Intangible Assets - Amortized Intangible Assets (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R74": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240424024 - Disclosure - Intangible Assets - Estimated Amortization Expense Succeeding Fiscal Years (Detail)",
     "role": "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail",
     "shortName": "Intangible Assets - Estimated Amortization Expense Succeeding Fiscal Years (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R75": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ib02ea70179e047879c445fd8d0e9275f_D20200330-20200628",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240434025 - Disclosure - Intangible Assets - Narrative (Details)",
     "role": "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
     "shortName": "Intangible Assets - Narrative (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i868c84ba01b343969f185bfae762ea09_D20200330-20200628",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R76": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccruedBonusesCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240464026 - Disclosure - Accrued Expenses - Constituents of Accrued Expenses (Detail)",
     "role": "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail",
     "shortName": "Accrued Expenses - Constituents of Accrued Expenses (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccruedBonusesCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R77": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ProductWarrantyAccrual",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240474027 - Disclosure - Accrued Expenses - Changes in Warranty Obligations (Detail)",
     "role": "http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail",
     "shortName": "Accrued Expenses - Changes in Warranty Obligations (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia991b13c7b074439964a26d579235ee4_I20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ProductWarrantyAccrual",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R78": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240494028 - Disclosure - Commitments and Contingencies - Additional Information (Detail)",
     "role": "http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail",
     "shortName": "Commitments and Contingencies - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R79": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i8403092ce78e46f287d80209e29e1af1_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240534029 - Disclosure - Derivative Instruments - Additional Details (Details)",
     "role": "http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails",
     "shortName": "Derivative Instruments - Additional Details (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i8403092ce78e46f287d80209e29e1af1_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R8": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100060008 - Statement - CONSOLIDATED STATEMENTS OF CASH FLOWS",
     "role": "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
     "shortName": "CONSOLIDATED STATEMENTS OF CASH FLOWS",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:StockOptionPlanExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R80": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ibaaae7dc618d498782e79c903a2d481b_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeAssetNotionalAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240544030 - Disclosure - Derivative Instruments - Outstanding Forward Contracts (Details)",
     "role": "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails",
     "shortName": "Derivative Instruments - Outstanding Forward Contracts (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ibaaae7dc618d498782e79c903a2d481b_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeAssetNotionalAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R81": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:OffsettingAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeAssets",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240554031 - Disclosure - Derivative Instruments - Balance Sheet Location (Details)",
     "role": "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails",
     "shortName": "Derivative Instruments - Balance Sheet Location (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i9c4108ecbb154b9689e5bb60e97d0990_I20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:DerivativeAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R82": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:OffsettingAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeFairValueOfDerivativeAsset",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240564032 - Disclosure - Derivative Instruments - Assets and liabilities presented on a net basis due to the right of offset (Details)",
     "role": "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails",
     "shortName": "Derivative Instruments - Assets and liabilities presented on a net basis due to the right of offset (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:OffsettingAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeFairValueOfDerivativeAsset",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R83": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock",
       "div",
       "us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i7738a97fca024a00829bfaed4f536e63_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeGainLossOnDerivativeNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240574033 - Disclosure - Derivative Instruments - Gain (Loss) Recognized in Other Comprehensive Income (Loss) (Details)",
     "role": "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails",
     "shortName": "Derivative Instruments - Gain (Loss) Recognized in Other Comprehensive Income (Loss) (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock",
       "div",
       "us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i7738a97fca024a00829bfaed4f536e63_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeGainLossOnDerivativeNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R84": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CapitalizedContractCostGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240604034 - Disclosure - Revenue Recognition - Narratives (Details)",
     "role": "http://cognex.com/role/RevenueRecognitionNarrativesDetails",
     "shortName": "Revenue Recognition - Narratives (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CapitalizedContractCostGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R85": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240614035 - Disclosure - Revenue Recognition - Disaggregation by Geography and Type (Details)",
     "role": "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
     "shortName": "Revenue Recognition - Disaggregation by Geography and Type (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DisaggregationOfRevenueTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i978d0a39464248048a6adfb0338684b7_D20210101-20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R86": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivable",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240624036 - Disclosure - Revenue Recognition - Allowance for Credit Loss (Details)",
     "role": "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails",
     "shortName": "Revenue Recognition - Allowance for Credit Loss (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia991b13c7b074439964a26d579235ee4_I20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivable",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R87": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ContractWithCustomerLiabilityCurrent",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240634037 - Disclosure - Revenue Recognition - Deferred Revenue and Customer Deposits Rollforward (Details)",
     "role": "http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails",
     "shortName": "Revenue Recognition - Deferred Revenue and Customer Deposits Rollforward (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia991b13c7b074439964a26d579235ee4_I20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ContractWithCustomerLiabilityCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R88": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PreferredStockSharesAuthorized",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240654038 - Disclosure - Shareholders' Equity - Additional Information (Detail)",
     "role": "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail",
     "shortName": "Shareholders' Equity - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ibc957dc1955640e68337295dda8c967f_I20180425",
      "decimals": "INF",
      "lang": "en-US",
      "name": "us-gaap:CommonStockSharesAuthorized",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R89": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:NumberOfGroupsWithinEmployeePopulation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "group",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240684039 - Disclosure - Stock-Based Compensation Expense - Additional Information (Detail)",
     "role": "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
     "shortName": "Stock-Based Compensation Expense - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i08ecc75ccb2444bba42689bbb8bcf8ce_I20211231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:NumberOfGroupsWithinEmployeePopulation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "group",
      "xsiNil": "false"
     }
    },
    "R9": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i96c261e6b700458483d45a690ef3428a_I20181231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100070009 - Statement - CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY",
     "role": "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
     "shortName": "CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i96c261e6b700458483d45a690ef3428a_I20181231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R90": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240694040 - Disclosure - Stock-Based Compensation Expense - Summary of Stock Option Activity (Detail)",
     "role": "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail",
     "shortName": "Stock-Based Compensation Expense - Summary of Stock Option Activity (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R91": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i45c675b042014dca8b974960686e1ed3_D20210101-20211231",
      "decimals": "3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240704041 - Disclosure - Stock-Based Compensation Expense - Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted (Detail)",
     "role": "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail",
     "shortName": "Stock-Based Compensation Expense - Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i45c675b042014dca8b974960686e1ed3_D20210101-20211231",
      "decimals": "3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R92": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i0d2d7b131c914aa3813c98711237ce0c_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240714042 - Disclosure - Stock-Based Compensation Expense - Summary of Restricted Stock Option Activity (Detail)",
     "role": "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail",
     "shortName": "Stock-Based Compensation Expense - Summary of Restricted Stock Option Activity (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i0d2d7b131c914aa3813c98711237ce0c_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R93": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
      "reportCount": 1,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240724043 - Disclosure - Stock-Based Compensation Expense - Stock-Based Compensation Expense (Detail)",
     "role": "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail",
     "shortName": "Stock-Based Compensation Expense - Stock-Based Compensation Expense (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia5a436cb2a4b40208126b213a56803a5_D20210101-20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R94": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240744044 - Disclosure - Employee Savings Plan - Additional Information (Detail)",
     "role": "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail",
     "shortName": "Employee Savings Plan - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R95": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty",
      "reportCount": 1,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240774045 - Disclosure - Income Taxes - Additional Information (Details)",
     "role": "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
     "shortName": "Income Taxes - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "i812edbd5d6934fd0927c267aff739860_D20190101-20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R96": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240784046 - Disclosure - Income Taxes - Constituents of Provision for Income Taxes (Details)",
     "role": "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails",
     "shortName": "Income Taxes - Constituents of Provision for Income Taxes (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R97": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
      "reportCount": 1,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240794047 - Disclosure - Income Taxes - Reconciliation of the United States Federal Statutory Corporate Tax Rate to Company's Effective Tax Rate or Income Tax Provision (Details)",
     "role": "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails",
     "shortName": "Income Taxes - Reconciliation of the United States Federal Statutory Corporate Tax Rate to Company's Effective Tax Rate or Income Tax Provision (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "2",
      "lang": "en-US",
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R98": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240804048 - Disclosure - Income Taxes - Schedule of Change in Accounting Policy (Details)",
     "role": "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails",
     "shortName": "Income Taxes - Schedule of Change in Accounting Policy (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfChangeInAccountingEstimateTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ia991b13c7b074439964a26d579235ee4_I20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:DeferredTaxAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R99": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:SummaryOfIncomeTaxContingenciesTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ic4a82097975f4c7480e06bdb28375b4a_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:UnrecognizedTaxBenefits",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240814049 - Disclosure - Income Taxes - Changes in the Reserve for Income Taxes, Excluding Interest and Penalties (Details)",
     "role": "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails",
     "shortName": "Income Taxes - Changes in the Reserve for Income Taxes, Excluding Interest and Penalties (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:SummaryOfIncomeTaxContingenciesTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20211231.htm",
      "contextRef": "ie1e95ee90c94472cb15acb9db95282e5_D20210101-20211231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    }
   },
   "segmentCount": 99,
   "tag": {
    "cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accounts Receivable, Allowance For Credit Loss, Foreign Exchange Rate Adjustment",
        "label": "Accounts Receivable, Allowance For Credit Loss, Foreign Exchange Rate Adjustment",
        "terseLabel": "Foreign exchange rate changes"
       }
      }
     },
     "localname": "AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_AccruedExpensesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accrued expenses.",
        "label": "Accrued Expenses [Member]",
        "terseLabel": "Accrued Expenses [Member]"
       }
      }
     },
     "localname": "AccruedExpensesMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_AgencyBondsFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Agency bonds fair value disclosure.",
        "label": "Agency Bonds Fair Value Disclosure",
        "terseLabel": "Agency bonds"
       }
      }
     },
     "localname": "AgencyBondsFairValueDisclosure",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_AgencyBondsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Agency bond.",
        "label": "Agency Bonds [Member]",
        "terseLabel": "Agency Bonds [Member]"
       }
      }
     },
     "localname": "AgencyBondsMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_ApplicationofCustomerSpecificSolutionsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Application of Customer Specific Solutions [Member]",
        "label": "Application of Customer Specific Solutions [Member]",
        "terseLabel": "Application-specific customer solutions"
       }
      }
     },
     "localname": "ApplicationofCustomerSpecificSolutionsMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_AssetBackedSecuritiesFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Asset Backed Securities Fair Value Disclosure",
        "label": "Asset Backed Securities Fair Value Disclosure",
        "verboseLabel": "Asset-backed securities"
       }
      }
     },
     "localname": "AssetBackedSecuritiesFairValueDisclosure",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail": {
       "order": 5.0,
       "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Available-for-sale securities, debt maturities after fourth year but before fifth year, fair value.",
        "label": "Available For Sale Securities Debt Maturities After Four Years Before Five Years Fair Value",
        "terseLabel": "4-5 Years"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This item represents the fair value of debt securities which are expected to mature within one year of the balance sheet date and which are categorized neither as held-to-maturity nor trading securities.",
        "label": "Available For Sale Securities Debt Maturities After One Year Before Two Years Fair Value",
        "terseLabel": "1-2 Years"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail": {
       "order": 4.0,
       "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Available-for-sale securities, debt maturities after third year but before fourth year, fair value.",
        "label": "Available For Sale Securities Debt Maturities After Three Years Before Four Years Fair Value",
        "terseLabel": "3-4 Years"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail": {
       "order": 3.0,
       "parentTag": "us-gaap_AvailableForSaleSecuritiesDebtSecurities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Available-for-sale securities, debt maturities after second year but before third year, fair value.",
        "label": "Available For Sale Securities Debt Maturities After Two Years Before Three Years Fair Value",
        "terseLabel": "2-3 Years"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Available-for-sale Securities, Debt Maturities, Effective Term, Maximum",
        "label": "Available-for-sale Securities, Debt Maturities, Effective Term, Maximum",
        "terseLabel": "Effective maturity of investments"
       }
      }
     },
     "localname": "AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "cgnx_CashCashEquivalentsShortTermAndLongTermInvestments": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cash, cash equivalents, short term and long term investments.",
        "label": "Cash Cash Equivalents Short Term And Long Term Investments",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "CashCashEquivalentsShortTermAndLongTermInvestments",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Change in Global Intangible Low-Taxed Income [Member]",
        "label": "Change in Global Intangible Low-Taxed Income [Member]",
        "terseLabel": "Change in accounting policy"
       }
      }
     },
     "localname": "ChangeinGlobalIntangibleLowTaxedIncomeMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_ChiaroTechnologiesLLCMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Chiaro Technologies LLC [Member]",
        "label": "Chiaro Technologies LLC [Member]",
        "terseLabel": "Chiaro Technologies LLC"
       }
      }
     },
     "localname": "ChiaroTechnologiesLLCMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_CompanyContributionsVestAtEndOfFourYears": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Company contributions vest at end of four years.",
        "label": "Company Contributions Vest At End Of Four Years",
        "totalLabel": "Company contributions vest at end of four years"
       }
      }
     },
     "localname": "CompanyContributionsVestAtEndOfFourYears",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_CompanyContributionsVestAtEndOfOneYear": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail": {
       "order": 1.0,
       "parentTag": "cgnx_CompanyContributionsVestAtEndOfFourYears",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Company Contributions Vest At End Of One Year",
        "label": "Company Contributions Vest At End Of One Year",
        "terseLabel": "Company contributions vest at end of one year"
       }
      }
     },
     "localname": "CompanyContributionsVestAtEndOfOneYear",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_CompanyContributionsVestAtEndOfThreeYears": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail": {
       "order": 3.0,
       "parentTag": "cgnx_CompanyContributionsVestAtEndOfFourYears",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Company contributions vest at end of three years.",
        "label": "Company Contributions Vest At End Of Three Years",
        "terseLabel": "Company contributions vest at end of three years"
       }
      }
     },
     "localname": "CompanyContributionsVestAtEndOfThreeYears",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_CompanyContributionsVestAtEndOfTwoYear": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail": {
       "order": 2.0,
       "parentTag": "cgnx_CompanyContributionsVestAtEndOfFourYears",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Company contributions vest at end of two year.",
        "label": "Company Contributions Vest At End Of Two Year",
        "terseLabel": "Company contributions vest at end of two years"
       }
      }
     },
     "localname": "CompanyContributionsVestAtEndOfTwoYear",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Completed Technologies And Other Intangible Assets [Member]",
        "label": "Completed Technologies And Other Intangible Assets [Member]",
        "terseLabel": "Completed Technologies And Other Intangible Assets [Member]"
       }
      }
     },
     "localname": "CompletedTechnologiesAndOtherIntangibleAssetsMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Components of cash cash equivalents and investments.",
        "label": "Components Of Cash Cash Equivalents And Investments Table [Table Text Block]",
        "terseLabel": "Components of Cash, Cash Equivalents and Investments"
       }
      }
     },
     "localname": "ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "cgnx_ComputerHardwareAndSoftwareMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Computer Hardware and Software Member.",
        "label": "Computer Hardware And Software [Member]",
        "terseLabel": "Computer Hardware and Software [Member]"
       }
      }
     },
     "localname": "ComputerHardwareAndSoftwareMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Concentrations of Risk.",
        "label": "Concentrations Of Risk Policy [Policy Text Block]",
        "terseLabel": "Concentrations of Risk"
       }
      }
     },
     "localname": "ConcentrationsOfRiskPolicyPolicyTextBlock",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "cgnx_ContractLiabilityForeignExchangeRateChanges": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Contract Liability Foreign Exchange Rate Changes",
        "label": "Contract Liability Foreign Exchange Rate Changes",
        "terseLabel": "Foreign exchange rate changes"
       }
      }
     },
     "localname": "ContractLiabilityForeignExchangeRateChanges",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Contract with Customer, Liability, Current And Prior Period Revenue Recognized",
        "label": "Contract with Customer, Liability, Current And Prior Period Revenue Recognized",
        "negatedTerseLabel": "Recognition of revenue deferred in prior period"
       }
      }
     },
     "localname": "ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Contract With Customer, Liability, Period Increase (Decrease)",
        "label": "Contract With Customer, Liability, Period Increase (Decrease)",
        "terseLabel": "Deferred revenue and customer deposits"
       }
      }
     },
     "localname": "ContractWithCustomerLiabilityPeriodIncreaseDecrease",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_CorporateBondsFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Corporate bonds fair value disclosure.",
        "label": "Corporate Bonds Fair Value Disclosure",
        "terseLabel": "Corporate bonds"
       }
      }
     },
     "localname": "CorporateBondsFairValueDisclosure",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_CurrencytranslationadjustmentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Currency translation adjustment [Abstract]",
        "label": "Currency translation adjustment [Abstract]",
        "terseLabel": "Foreign currency translation adjustments:"
       }
      }
     },
     "localname": "CurrencytranslationadjustmentAbstract",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "stringItemType"
    },
    "cgnx_Customer1Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Customer 1",
        "label": "Customer 1 [Member]",
        "terseLabel": "Customer 1 [Member]"
       }
      }
     },
     "localname": "Customer1Member",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_Customer2Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Customer 2",
        "label": "Customer 2 [Member]",
        "terseLabel": "Customer 2 [Member]"
       }
      }
     },
     "localname": "Customer2Member",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_CustomerContractsAndRelationshipsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Customer Contracts And Relationships [Member]",
        "label": "Customer Contracts And Relationships [Member]",
        "terseLabel": "Customer Contracts And Relationships [Member]",
        "verboseLabel": "Customer Relationships [Member]"
       }
      }
     },
     "localname": "CustomerContractsAndRelationshipsMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_CustomerContractsLiabilityCurrentRollForward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Customer Contracts Liability Current [Roll Forward]",
        "label": "Customer Contracts Liability Current [Roll Forward]",
        "terseLabel": "Customer Contracts Liability, Current"
       }
      }
     },
     "localname": "CustomerContractsLiabilityCurrentRollForward",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "cgnx_DeferredIncomeTaxAssetsLiabilitiesNet": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred income tax assets (liabilities), net",
        "label": "Deferred income tax assets (liabilities), net",
        "totalLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "DeferredIncomeTaxAssetsLiabilitiesNet",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DeferredTaxAssetsForeignTaxStructureChange": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred Tax Assets, Foreign Tax Structure Change",
        "label": "Deferred Tax Assets, Foreign Tax Structure Change",
        "terseLabel": "Foreign tax structure deferred tax asset"
       }
      }
     },
     "localname": "DeferredTaxAssetsForeignTaxStructureChange",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 1.0,
       "parentTag": "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred Tax Assets, Intangible Asset, Change in Tax Structure",
        "label": "Deferred Tax Assets, Intangible Asset, Change in Tax Structure",
        "terseLabel": "Intangible asset in connection with change in tax structure"
       }
      }
     },
     "localname": "DeferredTaxAssetsIntangibleAssetChangeinTaxStructure",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DeferredTaxAssetsOtherNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 8.0,
       "parentTag": "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred tax assets other non current.",
        "label": "Deferred Tax Assets Other Noncurrent",
        "terseLabel": "Other"
       }
      }
     },
     "localname": "DeferredTaxAssetsOtherNoncurrent",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsLiabilitiesNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred Tax Assets, With Jurisdictional Netting, Gross",
        "label": "Deferred Tax Assets, With Jurisdictional Netting, Gross",
        "totalLabel": "Gross deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsWithJurisdictionalNettingGross",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 1.0,
       "parentTag": "cgnx_DeferredIncomeTaxAssetsLiabilitiesNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred Tax Liabilities, Tax Cuts And Jobs Act, Global Intangible Low Tax Income",
        "label": "Deferred Tax Liabilities, Tax Cuts And Jobs Act, Global Intangible Low Tax Income",
        "negatedTerseLabel": "GILTI tax basis differences in connection with change in tax structure",
        "terseLabel": "GILTI tax basis differences"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Discrete Tax Expense - Foreign Tax Filing Adjustments",
        "label": "Discrete Tax Expense - Foreign Tax Filing Adjustments [Member]",
        "terseLabel": "Discrete Tax Expense - Foreign Tax Filing Adjustments [Member]"
       }
      }
     },
     "localname": "DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_DiscreteTaxItemsAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Discrete Tax Items",
        "label": "Discrete Tax Items [Axis]",
        "terseLabel": "Discrete Tax Items [Axis]"
       }
      }
     },
     "localname": "DiscreteTaxItemsAxis",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "cgnx_DiscreteTaxItemsDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Discrete Tax Items",
        "label": "Discrete Tax Items [Domain]",
        "terseLabel": "Discrete Tax Items [Domain]"
       }
      }
     },
     "localname": "DiscreteTaxItemsDomain",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_DueFromForeignBanks": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Due from foreign banks.",
        "label": "Due From Foreign Banks",
        "terseLabel": "Cash balance included foreign bank balance"
       }
      }
     },
     "localname": "DueFromForeignBanks",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar",
        "label": "Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar",
        "terseLabel": "Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property",
        "label": "Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property",
        "terseLabel": "Discrete tax expense related to migration of acquired IP",
        "verboseLabel": "Discrete tax expense for migration of acquired intellectual property"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 8.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Effective Income Tax Rate Reconciliation, Tax Cuts and Jobs Act, Global Intangible Low Tax Income, Percent",
        "label": "Effective Income Tax Rate Reconciliation, Tax Cuts and Jobs Act, Global Intangible Low Tax Income, Percent",
        "terseLabel": "Discrete tax expense related to GILTI impact of change in tax structure"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Employee service share based compensation recognized period costs capitalized amount.",
        "label": "Employee Service Share Based Compensation Recognized Period Costs Capitalized Amount",
        "terseLabel": "Compensation expense capitalized"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_EnShapeGmbHAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "EnShape GmbH",
        "label": "EnShape GmbH [Abstract]",
        "terseLabel": "EnShape GmbH [Abstract]"
       }
      }
     },
     "localname": "EnShapeGmbHAbstract",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Estimated forfeiture rate for unvested options for all non-senior management.",
        "label": "Estimated Forfeiture Rate For Unvested Options For All Non Senior Management",
        "terseLabel": "Estimated forfeiture rate for unvested options for all non-senior management"
       }
      }
     },
     "localname": "EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Estimated forfeiture rate for unvested options for senior management.",
        "label": "Estimated Forfeiture Rate For Unvested Options For Senior Management",
        "terseLabel": "Estimated forfeiture rate for unvested options for senior management"
       }
      }
     },
     "localname": "EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_ExcessAndObsoleteInventoryCharges": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 9.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Excess and Obsolete Inventory Charges",
        "label": "Excess and Obsolete Inventory Charges",
        "terseLabel": "Excess and Obsolete Inventory Charges"
       }
      }
     },
     "localname": "ExcessAndObsoleteInventoryCharges",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_ExpirationPeriodOfStockOptionPlan": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Expiration period of stock option plan.",
        "label": "Expiration Period Of Stock Option Plan",
        "terseLabel": "Expiration period of stock option plan"
       }
      }
     },
     "localname": "ExpirationPeriodOfStockOptionPlan",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Foreign Tax Benefit - Gains Taxed Outside U.S.",
        "label": "Foreign Tax Benefit - Gains Taxed Outside U.S. [Member]",
        "terseLabel": "Foreign Tax Benefit - Gains Taxed Outside U.S. [Member]"
       }
      }
     },
     "localname": "ForeignTaxBenefitGainsTaxedOutsideUSMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Foreign Tax Expense - Transfer Price Adjustment",
        "label": "Foreign Tax Expense - Transfer Price Adjustment [Member]",
        "terseLabel": "Foreign Tax Expense - Transfer Price Adjustment [Member]"
       }
      }
     },
     "localname": "ForeignTaxExpenseTransferPriceAdjustmentMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_GViVenturesInc.Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "GVi Ventures, Inc. [Member]",
        "label": "GVi Ventures, Inc. [Member]",
        "terseLabel": "GVi Ventures, Inc."
       }
      }
     },
     "localname": "GViVenturesInc.Member",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_GreaterChinaMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Greater China [Member]",
        "label": "Greater China [Member]",
        "terseLabel": "Greater China [Member]",
        "verboseLabel": "Greater China [Member]"
       }
      }
     },
     "localname": "GreaterChinaMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_HardwareAndSoftwareMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Hardware and software.",
        "label": "Hardware And Software [Member]",
        "terseLabel": "Computer Hardware And Software [Member]"
       }
      }
     },
     "localname": "HardwareAndSoftwareMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Increase (decrease) in compensation expense due to revised estimated forfeiture rates.",
        "label": "Increase (Decrease) In Compensation Expense Due To Revised Estimated Forfeiture Rates",
        "terseLabel": "Increase in compensation expense due to revised estimated forfeiture rates"
       }
      }
     },
     "localname": "IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_IndemnificationProvisionsTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indemnification provisions are a potential liability whereby the Company indemnifies certain directors, officers, and employees (current or former) against expenses incurred by them in relation to specific legal proceedings. The company also indemnifies other parties for specific situations.",
        "label": "Indemnification Provisions [Text Block]",
        "terseLabel": "Indemnification Provisions"
       }
      }
     },
     "localname": "IndemnificationProvisionsTextBlock",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IndemnificationProvisions"
     ],
     "xbrltype": "textBlockItemType"
    },
    "cgnx_LongTermInvestmentsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Long-term investments.",
        "label": "Long Term Investments [Member]",
        "terseLabel": "Long-term investments [Member]"
       }
      }
     },
     "localname": "LongTermInvestmentsMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Maximum decrease in income tax expense due to release in reserves.",
        "label": "Maximum Decrease In Income Tax Expense Due To Release In Reserves",
        "terseLabel": "Maximum decrease in income tax expense due to release in reserves"
       }
      }
     },
     "localname": "MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_MaximumInvestmentOfCompanyInPartnership": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Maximum investment of the company in partnership.",
        "label": "Maximum Investment Of Company In Partnership",
        "terseLabel": "Maximum investment of the company in partnership"
       }
      }
     },
     "localname": "MaximumInvestmentOfCompanyInPartnership",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Minimum age to be eligible to defined contribution plan.",
        "label": "Minimum Age To Be Eligible To Defined Contribution Plan",
        "terseLabel": "Minimum age to be eligible to defined contribution plan"
       }
      }
     },
     "localname": "MinimumAgeToBeEligibleToDefinedContributionPlan",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Minimum decrease in income tax expense due to release in reserves.",
        "label": "Minimum Decrease In Income Tax Expense Due To Release In Reserves",
        "terseLabel": "Minimum decrease in income tax expense due to release in reserves"
       }
      }
     },
     "localname": "MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_MoneyMarketInstrumentsFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Money market instruments fair value disclosure.",
        "label": "Money Market Instruments Fair Value Disclosure",
        "terseLabel": "Money market instruments"
       }
      }
     },
     "localname": "MoneyMarketInstrumentsFairValueDisclosure",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_MunicipalBondsFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Municipal bonds fair value disclosure.",
        "label": "Municipal Bonds Fair Value Disclosure",
        "terseLabel": "Municipal bonds"
       }
      }
     },
     "localname": "MunicipalBondsFairValueDisclosure",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_NatureOfOperationsPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Nature of Operations.",
        "label": "Nature Of Operations [Policy Text Block]",
        "terseLabel": "Nature of Operations"
       }
      }
     },
     "localname": "NatureOfOperationsPolicyTextBlock",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "cgnx_NoncurrentDeferredTaxAssetsDeprecation": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 5.0,
       "parentTag": "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Noncurrent deferred tax assets deprecation.",
        "label": "Noncurrent Deferred Tax Assets Deprecation",
        "terseLabel": "Depreciation"
       }
      }
     },
     "localname": "NoncurrentDeferredTaxAssetsDeprecation",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_NumberOfGroupsWithinEmployeePopulation": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of groups within employee population.",
        "label": "Number Of Groups Within Employee Population",
        "terseLabel": "Number of groups within the employee population"
       }
      }
     },
     "localname": "NumberOfGroupsWithinEmployeePopulation",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "integerItemType"
    },
    "cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Operating Lease, Expense, No Liability Or Asset Recognized",
        "label": "Operating Lease, Expense, No Liability Or Asset Recognized",
        "terseLabel": "Operating lease expense for which no liability or asset was recognized"
       }
      }
     },
     "localname": "OperatingLeaseExpenseNoLiabilityOrAssetRecognized",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Operating Lease, Right-Of-Use Asset, Carrying Value Of Impaired Asset",
        "label": "Operating Lease, Right-Of-Use Asset, Carrying Value Of Impaired Asset",
        "terseLabel": "Carrying value of lease assets"
       }
      }
     },
     "localname": "OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_OtherAsiaMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Other Asia [Member]",
        "label": "Other Asia [Member]",
        "terseLabel": "Other Asia [Member]"
       }
      }
     },
     "localname": "OtherAsiaMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_OtherGeographicAreaMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Other Geographic Area [Member]",
        "label": "Other Geographic Area [Member]",
        "terseLabel": "Other [Member]"
       }
      }
     },
     "localname": "OtherGeographicAreaMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Other Than Temporary Impairment Losses Investments Portion Recognized In Earnings Net, non current",
        "label": "Other Than Temporary Impairment Losses Investments Portion Recognized In Earnings Net, non current",
        "terseLabel": "Credit recoveries"
       }
      }
     },
     "localname": "OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_ProductCostOfRevenueMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Product cost of revenue.",
        "label": "Product Cost Of Revenue [Member]",
        "terseLabel": "Product cost of revenue [Member]"
       }
      }
     },
     "localname": "ProductCostOfRevenueMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_ProductWarrantyPeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Product warranty period.",
        "label": "Product Warranty Period",
        "terseLabel": "Product Warranty Period"
       }
      }
     },
     "localname": "ProductWarrantyPeriod",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "cgnx_RepurchaseProgramMarch2020Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Repurchase Program March 2020",
        "label": "Repurchase Program March 2020 [Member]",
        "terseLabel": "Repurchase Program March 2020 [Member]"
       }
      }
     },
     "localname": "RepurchaseProgramMarch2020Member",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_RepurchaseProgramOctober2018Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Repurchase Program October 2018 [Member]",
        "label": "Repurchase Program October 2018 [Member]",
        "terseLabel": "Repurchase Program October 2018 [Member]"
       }
      }
     },
     "localname": "RepurchaseProgramOctober2018Member",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_RetirementAllowance": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Retirement allowance Japan.",
        "label": "Retirement Allowance",
        "terseLabel": "Foreign retirement obligations"
       }
      }
     },
     "localname": "RetirementAllowance",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_RevenuePaymentTerms": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Revenue, Payment Terms",
        "label": "Revenue, Payment Terms",
        "terseLabel": "Revenue, payment terms"
       }
      }
     },
     "localname": "RevenuePaymentTerms",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "cgnx_SellingGeneralAndAdministrativeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Selling, general, and administrative.",
        "label": "Selling General And Administrative [Member]",
        "terseLabel": "Selling, general, and administrative [Member]"
       }
      }
     },
     "localname": "SellingGeneralAndAdministrativeMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award options exercisable aggregate intrinsic value.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Options Exercisable Aggregate Intrinsic Value",
        "terseLabel": "Exercisable, aggregate intrinsic value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award options vested fair value.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Options Vested Fair Value",
        "terseLabel": "Total fair values of stock options vested"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Shares based compensation arrangement by shares based payment award options exercised intrinsic value.",
        "label": "Shares Based Compensation Arrangement By Shares Based Payment Award Options Exercised Intrinsic Value",
        "terseLabel": "Total intrinsic values of stock options exercised"
       }
      }
     },
     "localname": "SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_SouthboroughMassachusettsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Southborough, Massachusetts",
        "label": "Southborough, Massachusetts [Member]",
        "terseLabel": "Southborough, Massachusetts"
       }
      }
     },
     "localname": "SouthboroughMassachusettsMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_SovereignBondsFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sovereign bonds fair value disclosure.",
        "label": "Sovereign Bonds Fair Value Disclosure",
        "terseLabel": "Sovereign bonds"
       }
      }
     },
     "localname": "SovereignBondsFairValueDisclosure",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_StandardProductandServicesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Standard Product and Services [Member]",
        "label": "Standard Product and Services [Member]",
        "terseLabel": "Standard products and services"
       }
      }
     },
     "localname": "StandardProductandServicesMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_StateResearchAndExperimentationMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "State research and experimentation.",
        "label": "State Research And Experimentation [Member]",
        "terseLabel": "State Research And Experimentation [Member]"
       }
      }
     },
     "localname": "StateResearchAndExperimentationMember",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_StockRepurchasedDuringPeriodSharesNotYetSettled": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stock Repurchased During Period, Shares Not Yet Settled",
        "label": "Stock Repurchased During Period, Shares Not Yet Settled",
        "terseLabel": "Repurchase of common stock, not yet settled (in shares)"
       }
      }
     },
     "localname": "StockRepurchasedDuringPeriodSharesNotYetSettled",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "cgnx_SualabCo.Ltd.Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sualab Co., Ltd. [Member]",
        "label": "Sualab Co., Ltd. [Member]",
        "terseLabel": "Sualab Co., Ltd. [Member]"
       }
      }
     },
     "localname": "SualabCo.Ltd.Member",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_TreasuryBillsFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Treasury bills fair value disclosure.",
        "label": "Treasury Bills Fair Value Disclosure",
        "terseLabel": "Treasury bills"
       }
      }
     },
     "localname": "TreasuryBillsFairValueDisclosure",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_UnrecognizedTaxBenefitsGross": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Unrecognized Tax Benefits, Gross",
        "label": "Unrecognized Tax Benefits, Gross",
        "terseLabel": "Unrecognized Tax Benefits, Gross"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsGross",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Unrecognized tax benefit shown as a reduction to noncurrent deferred tax assets as a result of net operating loss carryforward, a similar tax loss, or a tax credit carryforward.",
        "label": "Unrecognized tax benefit shown as a reduction to noncurrent deferred tax assets",
        "terseLabel": "Unrecognized tax benefit shown as a reduction to noncurrent deferred tax assets"
       }
      }
     },
     "localname": "Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_VoteEntitledForEachCommonShareOutstanding": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Vote entitled for each common share outstanding.",
        "label": "Vote Entitled For Each Common Share Outstanding",
        "terseLabel": "Vote entitled for each common share outstanding"
       }
      }
     },
     "localname": "VoteEntitledForEachCommonShareOutstanding",
     "nsuri": "http://cognex.com/20211231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "integerItemType"
    },
    "country_KP": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF",
        "terseLabel": "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"
       }
      }
     },
     "localname": "KP",
     "nsuri": "http://xbrl.sec.gov/country/2021",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_US": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "UNITED STATES",
        "terseLabel": "United States [Member]"
       }
      }
     },
     "localname": "US",
     "nsuri": "http://xbrl.sec.gov/country/2021",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_AllCurrenciesDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "All Currencies [Domain]",
        "terseLabel": "All Currencies [Domain]"
       }
      }
     },
     "localname": "AllCurrenciesDomain",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_CAD": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Canada, Dollars",
        "terseLabel": "Canadian Dollar [Member]"
       }
      }
     },
     "localname": "CAD",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_CNY": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "China, Yuan Renminbi",
        "terseLabel": "China, Yuan Renminbi"
       }
      }
     },
     "localname": "CNY",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_EUR": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Euro Member Countries, Euro",
        "terseLabel": "Euro [Member]"
       }
      }
     },
     "localname": "EUR",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_GBP": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "United Kingdom, Pounds",
        "terseLabel": "British Pound [Member]"
       }
      }
     },
     "localname": "GBP",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_HUF": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Hungary, Forint",
        "terseLabel": "Hungarian Forint [Member]"
       }
      }
     },
     "localname": "HUF",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_JPY": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Japan, Yen",
        "terseLabel": "Japanese Yen [Member]"
       }
      }
     },
     "localname": "JPY",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_KRW": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Korea (South), Won",
        "terseLabel": "Korean Won [Member]"
       }
      }
     },
     "localname": "KRW",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_MXN": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Mexico, Pesos",
        "terseLabel": "Mexican Peso [Member]"
       }
      }
     },
     "localname": "MXN",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_SGD": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Singapore, Dollars",
        "terseLabel": "Singapore Dollar [Member]"
       }
      }
     },
     "localname": "SGD",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "currency_TWD": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Taiwan, New Dollars",
        "terseLabel": "Taiwanese Dollar [Member]"
       }
      }
     },
     "localname": "TWD",
     "nsuri": "http://xbrl.sec.gov/currency/2021",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_AuditorFirmId": {
     "auth_ref": [
      "r811",
      "r812",
      "r813"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "PCAOB issued Audit Firm Identifier",
        "label": "Auditor Firm ID",
        "terseLabel": "Auditor Firm ID"
       }
      }
     },
     "localname": "AuditorFirmId",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/AuditInformation"
     ],
     "xbrltype": "nonemptySequenceNumberItemType"
    },
    "dei_AuditorLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor [Line Items]"
       }
      }
     },
     "localname": "AuditorLineItems",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "xbrltype": "stringItemType"
    },
    "dei_AuditorLocation": {
     "auth_ref": [
      "r811",
      "r812",
      "r813"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Location",
        "terseLabel": "Auditor Location"
       }
      }
     },
     "localname": "AuditorLocation",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/AuditInformation"
     ],
     "xbrltype": "internationalNameItemType"
    },
    "dei_AuditorName": {
     "auth_ref": [
      "r811",
      "r812",
      "r813"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Name",
        "terseLabel": "Auditor Name"
       }
      }
     },
     "localname": "AuditorName",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/AuditInformation"
     ],
     "xbrltype": "internationalNameItemType"
    },
    "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "gMonthDayItemType"
    },
    "dei_DocumentAnnualReport": {
     "auth_ref": [
      "r811",
      "r812",
      "r813"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as an annual report.",
        "label": "Document Annual Report",
        "terseLabel": "Document Annual Report"
       }
      }
     },
     "localname": "DocumentAnnualReport",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "booleanItemType"
    },
    "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "dateItemType"
    },
    "dei_DocumentTransitionReport": {
     "auth_ref": [
      "r814"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "stateOrProvinceItemType"
    },
    "dei_EntityCentralIndexKey": {
     "auth_ref": [
      "r809"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityEmergingGrowthCompany": {
     "auth_ref": [
      "r809"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate if registrant meets the emerging growth company criteria.",
        "label": "Entity Emerging Growth Company",
        "terseLabel": "Entity Small Business"
       }
      }
     },
     "localname": "EntityEmergingGrowthCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "fileNumberItemType"
    },
    "dei_EntityFilerCategory": {
     "auth_ref": [
      "r809"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "edgarStateCountryItemType"
    },
    "dei_EntityInteractiveDataCurrent": {
     "auth_ref": [
      "r822"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityPublicFloat": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.",
        "label": "Entity Public Float",
        "terseLabel": "Entity Public Float"
       }
      }
     },
     "localname": "EntityPublicFloat",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "monetaryItemType"
    },
    "dei_EntityRegistrantName": {
     "auth_ref": [
      "r809"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityShellCompany": {
     "auth_ref": [
      "r809"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntitySmallBusiness": {
     "auth_ref": [
      "r809"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityTaxIdentificationNumber": {
     "auth_ref": [
      "r809"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "employerIdItemType"
    },
    "dei_EntityVoluntaryFilers": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.",
        "label": "Entity Voluntary Filers",
        "terseLabel": "Entity Voluntary Filers"
       }
      }
     },
     "localname": "EntityVoluntaryFilers",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityWellKnownSeasonedIssuer": {
     "auth_ref": [
      "r834"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.",
        "label": "Entity Well-known Seasoned Issuer",
        "terseLabel": "Entity Well-known Seasoned Issuer"
       }
      }
     },
     "localname": "EntityWellKnownSeasonedIssuer",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_IcfrAuditorAttestationFlag": {
     "auth_ref": [
      "r811",
      "r812",
      "r813"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ICFR Auditor Attestation Flag",
        "terseLabel": "ICFR Auditor Attestation Flag"
       }
      }
     },
     "localname": "IcfrAuditorAttestationFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "booleanItemType"
    },
    "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_Security12bTitle": {
     "auth_ref": [
      "r808"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "securityTitleItemType"
    },
    "dei_SecurityExchangeName": {
     "auth_ref": [
      "r810"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "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/2021q4",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "tradingSymbolItemType"
    },
    "srt_AmericasMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Continents of North and South America.",
        "label": "Americas [Member]",
        "terseLabel": "Americas [Member]"
       }
      }
     },
     "localname": "AmericasMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_CurrencyAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by currency.",
        "label": "Currency [Axis]",
        "terseLabel": "Currency [Axis]"
       }
      }
     },
     "localname": "CurrencyAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_EuropeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Continent of Europe.",
        "label": "Europe [Member]",
        "terseLabel": "Europe [Member]",
        "verboseLabel": "Europe [Member]"
       }
      }
     },
     "localname": "EuropeMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MajorCustomersAxis": {
     "auth_ref": [
      "r223",
      "r421",
      "r426",
      "r759"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by name or description of a single external customer or a group of external customers.",
        "label": "Customer [Axis]",
        "terseLabel": "Customer [Axis]"
       }
      }
     },
     "localname": "MajorCustomersAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_MaximumMember": {
     "auth_ref": [
      "r377",
      "r387",
      "r457",
      "r459",
      "r682",
      "r683",
      "r684",
      "r685",
      "r686",
      "r687",
      "r707",
      "r756",
      "r760",
      "r805",
      "r806"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Upper limit of the provided range.",
        "label": "Maximum [Member]",
        "terseLabel": "Maximum [Member]"
       }
      }
     },
     "localname": "MaximumMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MinimumMember": {
     "auth_ref": [
      "r377",
      "r387",
      "r457",
      "r459",
      "r682",
      "r683",
      "r684",
      "r685",
      "r686",
      "r687",
      "r707",
      "r756",
      "r760",
      "r805",
      "r806"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Lower limit of the provided range.",
        "label": "Minimum [Member]",
        "terseLabel": "Minimum [Member]"
       }
      }
     },
     "localname": "MinimumMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_NameOfMajorCustomerDomain": {
     "auth_ref": [
      "r223",
      "r421",
      "r426",
      "r759"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Single external customer or group of external customers.",
        "label": "Customer [Domain]",
        "terseLabel": "Customer [Domain]"
       }
      }
     },
     "localname": "NameOfMajorCustomerDomain",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ProductOrServiceAxis": {
     "auth_ref": [
      "r219",
      "r421",
      "r424",
      "r714",
      "r755",
      "r757"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by product and service, or group of similar products and similar services.",
        "label": "Product and Service [Axis]",
        "terseLabel": "Product and Service [Axis]"
       }
      }
     },
     "localname": "ProductOrServiceAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ProductsAndServicesDomain": {
     "auth_ref": [
      "r219",
      "r421",
      "r424",
      "r714",
      "r755",
      "r757"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Product or service, or a group of similar products or similar services.",
        "label": "Product and Service [Domain]",
        "terseLabel": "Product and Service [Domain]"
       }
      }
     },
     "localname": "ProductsAndServicesDomain",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RangeAxis": {
     "auth_ref": [
      "r377",
      "r387",
      "r437",
      "r457",
      "r459",
      "r682",
      "r683",
      "r684",
      "r685",
      "r686",
      "r687",
      "r707",
      "r756",
      "r760",
      "r805",
      "r806"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median.",
        "label": "Statistical Measurement [Axis]",
        "terseLabel": "Range [Axis]"
       }
      }
     },
     "localname": "RangeAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RangeMember": {
     "auth_ref": [
      "r377",
      "r387",
      "r437",
      "r457",
      "r459",
      "r682",
      "r683",
      "r684",
      "r685",
      "r686",
      "r687",
      "r707",
      "r756",
      "r760",
      "r805",
      "r806"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median.",
        "label": "Statistical Measurement [Domain]",
        "terseLabel": "Range [Domain]"
       }
      }
     },
     "localname": "RangeMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RestatementAdjustmentMember": {
     "auth_ref": [
      "r141",
      "r142",
      "r143",
      "r146",
      "r147",
      "r150",
      "r151",
      "r153",
      "r155",
      "r156",
      "r158",
      "r159",
      "r176",
      "r612",
      "r613"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cumulative increase (decrease) for adjustment to previously issued financial statements. Includes, but is not limited to, adjustment for retrospective application of amendment to accounting standards, other change in accounting principle, correction of error, and other revision.",
        "label": "Revision of Prior Period, Adjustment [Member]",
        "terseLabel": "Revision of Prior Period, Adjustment [Member]"
       }
      }
     },
     "localname": "RestatementAdjustmentMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RestatementAxis": {
     "auth_ref": [
      "r1",
      "r141",
      "r142",
      "r143",
      "r146",
      "r147",
      "r150",
      "r151",
      "r152",
      "r153",
      "r155",
      "r156",
      "r157",
      "r158",
      "r159",
      "r160",
      "r176",
      "r268",
      "r269",
      "r501",
      "r543",
      "r610",
      "r612",
      "r613",
      "r614",
      "r761",
      "r762",
      "r763",
      "r764",
      "r765",
      "r766",
      "r767",
      "r768",
      "r769",
      "r770",
      "r835",
      "r836"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by adjustment to previously issued financial statements. Includes, but is not limited to, adjustment for retrospective application of amendment to accounting standards, other change in accounting principle, correction of error, and other revision.",
        "label": "Revision of Prior Period [Axis]",
        "terseLabel": "Restatement [Axis]"
       }
      }
     },
     "localname": "RestatementAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RestatementDomain": {
     "auth_ref": [
      "r1",
      "r141",
      "r142",
      "r143",
      "r146",
      "r147",
      "r150",
      "r151",
      "r152",
      "r153",
      "r155",
      "r156",
      "r157",
      "r158",
      "r159",
      "r160",
      "r176",
      "r268",
      "r269",
      "r501",
      "r543",
      "r610",
      "r612",
      "r613",
      "r614",
      "r761",
      "r762",
      "r763",
      "r764",
      "r765",
      "r766",
      "r767",
      "r768",
      "r769",
      "r770",
      "r835",
      "r836"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Adjustment to previously issued financial statements. Includes, but is not limited to, adjustment for retrospective application of amendment to accounting standards, other change in accounting principle, correction of error, and other revision.",
        "label": "Revision of Prior Period [Domain]",
        "terseLabel": "Restatement [Domain]"
       }
      }
     },
     "localname": "RestatementDomain",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScenarioPreviouslyReportedMember": {
     "auth_ref": [
      "r1",
      "r141",
      "r143",
      "r146",
      "r147",
      "r150",
      "r151",
      "r152",
      "r153",
      "r155",
      "r156",
      "r158",
      "r159",
      "r176",
      "r268",
      "r269",
      "r501",
      "r543",
      "r610",
      "r612",
      "r613",
      "r614",
      "r761",
      "r762",
      "r763",
      "r764",
      "r765",
      "r766",
      "r767",
      "r768",
      "r769",
      "r770",
      "r835",
      "r836"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents amount as previously reported before adjustment for retrospective application of amendment to accounting standards, other change in accounting principle, correction of error, and other revision.",
        "label": "Previously Reported [Member]",
        "terseLabel": "Previously Reported [Member]"
       }
      }
     },
     "localname": "ScenarioPreviouslyReportedMember",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock": {
     "auth_ref": [
      "r139",
      "r833"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Schedule of Valuation and Qualifying Accounts Disclosure [Text Block]",
        "terseLabel": "Schedule II - Valuation and Qualifying Accounts"
       }
      }
     },
     "localname": "ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts"
     ],
     "xbrltype": "textBlockItemType"
    },
    "srt_SegmentGeographicalDomain": {
     "auth_ref": [
      "r220",
      "r221",
      "r421",
      "r425",
      "r758",
      "r796",
      "r797",
      "r798",
      "r799",
      "r800",
      "r801",
      "r802",
      "r803",
      "r804",
      "r823",
      "r825",
      "r826",
      "r827",
      "r828",
      "r829",
      "r830",
      "r831",
      "r832"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Geographical area.",
        "label": "Geographical [Domain]",
        "terseLabel": "Geographical [Domain]"
       }
      }
     },
     "localname": "SegmentGeographicalDomain",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_StatementGeographicalAxis": {
     "auth_ref": [
      "r220",
      "r221",
      "r421",
      "r425",
      "r758",
      "r789",
      "r796",
      "r797",
      "r798",
      "r799",
      "r800",
      "r801",
      "r802",
      "r803",
      "r804",
      "r823",
      "r824"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by geographical components.",
        "label": "Geographical [Axis]",
        "terseLabel": "Geographical [Axis]"
       }
      }
     },
     "localname": "StatementGeographicalAxis",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ValuationAndQualifyingAccountsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Valuation and Qualifying Accounts [Abstract]",
        "terseLabel": "SEC Schedule, 12-09, Valuation and Qualifying Accounts [Abstract]"
       }
      }
     },
     "localname": "ValuationAndQualifyingAccountsAbstract",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "srt_ValuationAndQualifyingAccountsDisclosureLineItems": {
     "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": "SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Line Items]",
        "terseLabel": "SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Line Items]"
       }
      }
     },
     "localname": "ValuationAndQualifyingAccountsDisclosureLineItems",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ValuationAndQualifyingAccountsDisclosureTable": {
     "auth_ref": [
      "r132",
      "r133",
      "r134",
      "r137",
      "r138",
      "r833"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Table]",
        "terseLabel": "SEC Schedule, 12-09, Valuation and Qualifying Accounts Disclosure [Table]"
       }
      }
     },
     "localname": "ValuationAndQualifyingAccountsDisclosureTable",
     "nsuri": "http://fasb.org/srt/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountingChangesAndErrorCorrectionsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounting Changes and Error Corrections [Abstract]",
        "terseLabel": "Accounting Changes and Error Corrections [Abstract]"
       }
      }
     },
     "localname": "AccountingChangesAndErrorCorrectionsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "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/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock": {
     "auth_ref": [
      "r47"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for accounts payable and accrued liabilities at the end of the reporting period.",
        "label": "Accounts Payable and Accrued Liabilities Disclosure [Text Block]",
        "terseLabel": "Accrued Expenses"
       }
      }
     },
     "localname": "AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpenses"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_AccountsPayableCurrent": {
     "auth_ref": [
      "r46",
      "r672"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 1.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableMember": {
     "auth_ref": [
      "r790"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Due from customers or clients for goods or services that have been delivered or sold.",
        "label": "Accounts Receivable [Member]",
        "terseLabel": "Accounts Receivable [Member]"
       }
      }
     },
     "localname": "AccountsReceivableMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "auth_ref": [
      "r6",
      "r24",
      "r225",
      "r226"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 3.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, allowance for credit losses of $776 and $831 in 2021 and 2020, respectively"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments": {
     "auth_ref": [
      "r111"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 10.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The sum of the periodic adjustments of the differences between securities' face values and purchase prices that are charged against earnings. This is called accretion if the security was purchased at a discount and amortization if it was purchased at premium. As a noncash item, this element is an adjustment to net income when calculating cash provided by or used in operations using the indirect method.",
        "label": "Accretion (Amortization) of Discounts and Premiums, Investments",
        "negatedLabel": "Amortization of discounts or premiums on investments"
       }
      }
     },
     "localname": "AccretionAmortizationOfDiscountsAndPremiumsInvestments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedBonusesCurrent": {
     "auth_ref": [
      "r9",
      "r10",
      "r49"
     ],
     "calculation": {
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail": {
       "order": 5.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable for incentive compensation awarded to employees and directors or earned by them based on the terms of one or more relevant arrangements. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accrued Bonuses, Current",
        "terseLabel": "Incentive compensation"
       }
      }
     },
     "localname": "AccruedBonusesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedIncomeTaxesCurrent": {
     "auth_ref": [
      "r16",
      "r723",
      "r742"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 3.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": "Accrued income taxes"
       }
      }
     },
     "localname": "AccruedIncomeTaxesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedIncomeTaxesNoncurrent": {
     "auth_ref": [
      "r17",
      "r723",
      "r742"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 4.0,
       "parentTag": "us-gaap_Liabilities",
       "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 domestic and foreign income tax obligations due beyond one year or the operating cycle, whichever is longer. Alternate captions include income taxes payable, noncurrent.",
        "label": "Accrued Income Taxes, Noncurrent",
        "terseLabel": "Non-current accrued income taxes"
       }
      }
     },
     "localname": "AccruedIncomeTaxesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedLiabilitiesCurrent": {
     "auth_ref": [
      "r49"
     ],
     "calculation": {
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 2.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered. Examples include taxes, interest, rent and utilities. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accrued Liabilities, Current",
        "terseLabel": "Accrued expenses",
        "totalLabel": "Accrued expenses"
       }
      }
     },
     "localname": "AccruedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail",
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedLiabilitiesCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accrued Liabilities, Current [Abstract]",
        "terseLabel": "Constituents of accrued expenses"
       }
      }
     },
     "localname": "AccruedLiabilitiesCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccruedLiabilitiesMember": {
     "auth_ref": [
      "r49"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This item represents obligations incurred and payable, pertaining to costs that are statutory in nature, are incurred on contractual obligations, or accumulate over time and for which invoices have not yet been received or will not be rendered.",
        "label": "Accrued Liabilities [Member]",
        "terseLabel": "Accrued Liabilities [Member]"
       }
      }
     },
     "localname": "AccruedLiabilitiesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccruedSalariesCurrent": {
     "auth_ref": [
      "r9",
      "r10",
      "r49"
     ],
     "calculation": {
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of the obligations incurred through that date and payable for employees' services provided. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accrued Salaries, Current",
        "terseLabel": "Salaries and payroll taxes"
       }
      }
     },
     "localname": "AccruedSalariesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedVacationCurrent": {
     "auth_ref": [
      "r9",
      "r49",
      "r436"
     ],
     "calculation": {
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail": {
       "order": 4.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable for unused vacation time owed to employees based on the entity's vacation benefit given to its employees. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accrued Vacation, Current",
        "terseLabel": "Vacation"
       }
      }
     },
     "localname": "AccruedVacationCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "auth_ref": [
      "r43",
      "r324"
     ],
     "calculation": {
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.",
        "label": "Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment",
        "negatedLabel": "Less: accumulated depreciation"
       }
      }
     },
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in accumulated depreciation, depletion and amortization as a result of sale or disposal of property, plant and equipment.",
        "label": "Accumulated Depreciation, Depletion and Amortization, Sale or Disposal of Property, Plant and Equipment",
        "terseLabel": "Reduction of accumulated depreciation due to disposals"
       }
      }
     },
     "localname": "AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax": {
     "auth_ref": [
      "r73"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after tax, of 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).",
        "label": "AOCI, Debt Securities, Available-for-sale, Adjustment, after Tax",
        "terseLabel": "Net unrealized losses on available-for-sale investments, net of tax"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r67",
      "r71",
      "r73",
      "r74",
      "r626"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated adjustment, net of tax, that results from the process of translating subsidiary financial statements and foreign equity investments into the reporting currency from the functional currency of the reporting entity, net of reclassification of realized foreign currency translation gains or losses.",
        "label": "Accumulated Other Comprehensive Income (Loss), Foreign Currency Translation Adjustment, Net of Tax",
        "terseLabel": "Accumulated other comprehensive loss consists of foreign currency translation adjustments, net of tax"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems": {
     "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": "Accumulated Other Comprehensive Income (Loss) [Line Items]",
        "terseLabel": "Accumulated Other Comprehensive Income (Loss) [Line Items]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r27",
      "r71",
      "r73",
      "r74",
      "r744",
      "r766",
      "r770"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 4.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.",
        "label": "Accumulated Other Comprehensive Income (Loss), Net of Tax",
        "terseLabel": "Accumulated other comprehensive loss, net of tax"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossTable": {
     "auth_ref": [
      "r84",
      "r85",
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r649"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "auth_ref": [
      "r70",
      "r74",
      "r84",
      "r85",
      "r86",
      "r141",
      "r142",
      "r143",
      "r582",
      "r761",
      "r762",
      "r836"
     ],
     "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 [Member]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "auth_ref": [
      "r25"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 2.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "auth_ref": [
      "r141",
      "r142",
      "r143",
      "r497",
      "r498",
      "r499",
      "r612"
     ],
     "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 [Member]"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax": {
     "auth_ref": [
      "r638",
      "r645"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Current period adjustment resulting from gains and losses on intercompany foreign currency transactions that are of a long-term-investment nature because settlement is not planned or anticipated in the foreseeable future.  Resulting from the entities to the transaction being consolidated, combined, or accounted for by the equity method in the reporting entity's financial statements.",
        "label": "Adjustment for Long-term Intercompany Transactions, Net of Tax",
        "terseLabel": "Losses on currency swaps, net of gains on long-term intercompany loans"
       }
      }
     },
     "localname": "AdjustmentForLongTermIntercompanyTransactionsNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "auth_ref": [
      "r461",
      "r463",
      "r504",
      "r505"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AdvertisingCostsPolicyTextBlock": {
     "auth_ref": [
      "r508"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for advertising cost.",
        "label": "Advertising Cost [Policy Text Block]",
        "terseLabel": "Advertising Costs"
       }
      }
     },
     "localname": "AdvertisingCostsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_AdvertisingExpense": {
     "auth_ref": [
      "r509"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount charged to advertising expense for the period, which are expenses incurred with the objective of increasing revenue for a specified brand, product or product line.",
        "label": "Advertising Expense",
        "terseLabel": "Advertising costs"
       }
      }
     },
     "localname": "AdvertisingExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "auth_ref": [
      "r463",
      "r493",
      "r503"
     ],
     "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",
        "verboseLabel": "Stock-based compensation expense"
       }
      }
     },
     "localname": "AllocatedShareBasedCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock": {
     "auth_ref": [
      "r229",
      "r276"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of allowance for credit loss on financing receivable.",
        "label": "Financing Receivable, Allowance for Credit Loss [Table Text Block]",
        "terseLabel": "Allowance for Credit Loss"
       }
      }
     },
     "localname": "AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivable": {
     "auth_ref": [
      "r232",
      "r270",
      "r272",
      "r275"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of allowance for credit loss on accounts receivable.",
        "label": "Accounts Receivable, Allowance for Credit Loss",
        "periodEndLabel": "Ending balance",
        "periodStartLabel": "Beginning balance"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward": {
     "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": "Accounts Receivable, Allowance for Credit Loss [Roll Forward]",
        "terseLabel": "Accounts Receivable, Allowance for Credit Loss [Roll Forward]"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableRollforward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs": {
     "auth_ref": [
      "r274"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of direct write-downs of accounts receivable charged against the allowance.",
        "label": "Accounts Receivable, Allowance for Credit Loss, Writeoff",
        "negatedTerseLabel": "Write-offs, net of recoveries"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableWriteOffs",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AmortizationOfIntangibleAssets": {
     "auth_ref": [
      "r110",
      "r306",
      "r313"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 6.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "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 of intangible assets"
       }
      }
     },
     "localname": "AmortizationOfIntangibleAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": {
     "auth_ref": [
      "r172"
     ],
     "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": "Stock options to purchase anti-dilutive common stock"
       }
      }
     },
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis": {
     "auth_ref": [
      "r172"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AntidilutiveSecuritiesNameDomain": {
     "auth_ref": [
      "r172"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AssetBackedSecuritiesMember": {
     "auth_ref": [
      "r250",
      "r438"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Securities that are primarily serviced by the cash flows of a discrete pool of receivables or other financial assets for example, but not limited to, credit card receivables, car loans, recreational vehicle loans, and mobile home loans.",
        "label": "Asset-backed Securities [Member]",
        "terseLabel": "Asset-Backed Securities [Member]"
       }
      }
     },
     "localname": "AssetBackedSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Assets": {
     "auth_ref": [
      "r125",
      "r205",
      "r209",
      "r215",
      "r264",
      "r366",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r578",
      "r583",
      "r632",
      "r670",
      "r672",
      "r722",
      "r741"
     ],
     "calculation": {
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsCurrent": {
     "auth_ref": [
      "r7",
      "r8",
      "r58",
      "r125",
      "r264",
      "r366",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r578",
      "r583",
      "r632",
      "r670",
      "r672"
     ],
     "calculation": {
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsFairValueDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Assets, Fair Value Disclosure [Abstract]",
        "terseLabel": "Assets:"
       }
      }
     },
     "localname": "AssetsFairValueDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax": {
     "auth_ref": [
      "r244"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail": {
       "order": 2.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": "Gross Unrealized Gains"
       }
      }
     },
     "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedGainBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax": {
     "auth_ref": [
      "r245"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail": {
       "order": 1.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": "Gross Unrealized Losses"
       }
      }
     },
     "localname": "AvailableForSaleDebtSecuritiesAccumulatedGrossUnrealizedLossBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis": {
     "auth_ref": [
      "r241",
      "r280"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail": {
       "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": "Amortized Cost"
       }
      }
     },
     "localname": "AvailableForSaleDebtSecuritiesAmortizedCostBasis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue": {
     "auth_ref": [
      "r246",
      "r248",
      "r738"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail": {
       "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": "Less than 1 Year"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtSecurities": {
     "auth_ref": [
      "r238",
      "r242",
      "r280",
      "r727"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail": {
       "order": 3.0,
       "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis",
       "weight": 1.0
      },
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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, Total",
        "totalLabel": "Fair Value, Total"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtSecurities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent": {
     "auth_ref": [
      "r239",
      "r280"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 2.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      },
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail": {
       "order": 2.0,
       "parentTag": "cgnx_CashCashEquivalentsShortTermAndLongTermInvestments",
       "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), classified as current.",
        "label": "Debt Securities, Available-for-sale, Current",
        "terseLabel": "Current investments, amortized cost of $137,124 and $102,258 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtSecuritiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent": {
     "auth_ref": [
      "r239",
      "r280"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_LongTermInvestments",
       "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), classified as noncurrent.",
        "label": "Debt Securities, Available-for-sale, Noncurrent",
        "terseLabel": "Long-term investments"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtSecuritiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AwardTypeAxis": {
     "auth_ref": [
      "r464",
      "r495"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BalanceSheetLocationAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by location on balance sheet (statement of financial position).",
        "label": "Balance Sheet Location [Axis]",
        "terseLabel": "Balance Sheet Location [Axis]"
       }
      }
     },
     "localname": "BalanceSheetLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BalanceSheetLocationDomain": {
     "auth_ref": [
      "r593",
      "r597"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location in the balance sheet (statement of financial position).",
        "label": "Balance Sheet Location [Domain]",
        "terseLabel": "Balance Sheet Location [Domain]"
       }
      }
     },
     "localname": "BalanceSheetLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingImprovementsMember": {
     "auth_ref": [
      "r323"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Addition, improvement, or renovation to a facility held for productive use including, but not limited to, office, production, storage and distribution facilities.",
        "label": "Building Improvements [Member]",
        "terseLabel": "Building Improvements [Member]"
       }
      }
     },
     "localname": "BuildingImprovementsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingMember": {
     "auth_ref": [
      "r323"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Facility held for productive use including, but not limited to, office, production, storage and distribution facilities.",
        "label": "Building [Member]",
        "terseLabel": "Building [Member]"
       }
      }
     },
     "localname": "BuildingMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "auth_ref": [
      "r456",
      "r458"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails",
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "auth_ref": [
      "r456",
      "r458",
      "r560",
      "r561"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails",
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionLineItems": {
     "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": "Business Acquisition [Line Items]",
        "terseLabel": "Business Acquisition [Line Items]"
       }
      }
     },
     "localname": "BusinessAcquisitionLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "auth_ref": [
      "r567",
      "r568",
      "r570"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.",
        "label": "Business Combination, Consideration Transferred",
        "terseLabel": "Purchase price"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferred1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1": {
     "auth_ref": [
      "r109",
      "r574"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 12.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in the value of a contingent consideration liability, including, but not limited to, differences arising upon settlement.",
        "label": "Business Combination, Contingent Consideration Arrangements, Change in Amount of Contingent Consideration, Liability",
        "terseLabel": "Revaluation of contingent consideration"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh": {
     "auth_ref": [
      "r573"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For contingent consideration arrangements recognized in connection with a business combination, this element represents an estimate of the high-end of the potential range (undiscounted) of the consideration which may be paid.",
        "label": "Business Combination, Contingent Consideration Arrangements, Range of Outcomes, Value, High",
        "terseLabel": "Contingent consideration, high range"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow": {
     "auth_ref": [
      "r573"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For contingent consideration arrangements and indemnification assets recognized in connection with a business combination, this element represents an estimate of the low-end of the potential range (undiscounted) of the consideration which may be paid.",
        "label": "Business Combination, Contingent Consideration Arrangements, Range of Outcomes, Value, Low",
        "terseLabel": "Contingent consideration, low range"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationLiability": {
     "auth_ref": [
      "r566",
      "r569",
      "r572"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liability recognized arising from contingent consideration in a business combination.",
        "label": "Business Combination, Contingent Consideration, Liability",
        "terseLabel": "Contingent consideration liabilities"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationLiability",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationDisclosureTextBlock": {
     "auth_ref": [
      "r575"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable).",
        "label": "Business Combination Disclosure [Text Block]",
        "terseLabel": "Business Acquisitions"
       }
      }
     },
     "localname": "BusinessCombinationDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitions"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill": {
     "auth_ref": [
      "r562"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of intangible assets, excluding goodwill, acquired at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Intangible Assets, Other than Goodwill",
        "terseLabel": "Intangible assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Business Combinations [Abstract]",
        "terseLabel": "Business Combinations [Abstract]"
       }
      }
     },
     "localname": "BusinessCombinationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationsPolicy": {
     "auth_ref": [
      "r559"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for completed business combinations (purchase method, acquisition method or combination of entities under common control). This accounting policy may include a general discussion of the purchase method or acquisition method of accounting (including for example, the treatment accorded contingent consideration, the identification of assets and liabilities, the purchase price allocation process, how the fair values of acquired assets and liabilities are determined) and the entity's specific application thereof. An entity that acquires another entity in a leveraged buyout transaction generally discloses the accounting policy followed by the acquiring entity in determining the basis used to value its interest in the acquired entity, and the rationale for that accounting policy.",
        "label": "Business Combinations Policy [Policy Text Block]",
        "terseLabel": "Business Combinations"
       }
      }
     },
     "localname": "BusinessCombinationsPolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CapitalizedContractCostGross": {
     "auth_ref": [
      "r297"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before accumulated amortization and accumulated impairment loss, of asset recognized from cost incurred to obtain or fulfill contract with customer.",
        "label": "Capitalized Contract Cost, Gross",
        "terseLabel": "Capitalized Contract Cost, Gross"
       }
      }
     },
     "localname": "CapitalizedContractCostGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionNarrativesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Cash": {
     "auth_ref": [
      "r39",
      "r672",
      "r772",
      "r773"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_CashAndCashEquivalentsAtCarryingValue",
       "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. Excludes cash and cash equivalents within disposal group and discontinued operation.",
        "label": "Cash",
        "terseLabel": "Cash"
       }
      }
     },
     "localname": "Cash",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Cash and Cash Equivalents [Abstract]",
        "terseLabel": "Cash and Cash Equivalents [Abstract]"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r4",
      "r39",
      "r112"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 1.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      },
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail": {
       "order": 1.0,
       "parentTag": "cgnx_CashCashEquivalentsShortTermAndLongTermInvestments",
       "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",
        "totalLabel": "Cash and cash equivalents"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsPolicyTextBlock": {
     "auth_ref": [
      "r13",
      "r113"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value.",
        "label": "Cash and Cash Equivalents, Policy [Policy Text Block]",
        "terseLabel": "Cash, Cash Equivalents, and Investments"
       }
      }
     },
     "localname": "CashAndCashEquivalentsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": {
     "auth_ref": [
      "r107",
      "r112",
      "r116"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage. Excludes amount for 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",
        "periodEndLabel": "Cash and cash equivalents at end of year",
        "periodStartLabel": "Cash and cash equivalents at beginning of year"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "auth_ref": [
      "r107",
      "r642"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "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 change in cash and cash equivalents"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ChangeInAccountingEstimateByTypeAxis": {
     "auth_ref": [
      "r154",
      "r179"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of change in accounting estimate.",
        "label": "Change in Accounting Estimate by Type [Axis]",
        "terseLabel": "Change in Accounting Estimate by Type [Axis]"
       }
      }
     },
     "localname": "ChangeInAccountingEstimateByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ChangeInAccountingEstimateLineItems": {
     "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": "Change in Accounting Estimate [Line Items]",
        "terseLabel": "Change in Accounting Estimate [Line Items]"
       }
      }
     },
     "localname": "ChangeInAccountingEstimateLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ChangeInAccountingEstimateTypeDomain": {
     "auth_ref": [
      "r154",
      "r179"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identification of the accounting estimate that was changed that had the effect of adjusting the carrying amount of an existing asset or liability, or that will alter the subsequent accounting for existing or future assets or liabilities.",
        "label": "Change in Accounting Estimate, Type [Domain]",
        "terseLabel": "Change in Accounting Estimate, Type [Domain]"
       }
      }
     },
     "localname": "ChangeInAccountingEstimateTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ClassOfStockDomain": {
     "auth_ref": [
      "r123",
      "r125",
      "r165",
      "r166",
      "r167",
      "r169",
      "r171",
      "r183",
      "r184",
      "r185",
      "r264",
      "r366",
      "r370",
      "r371",
      "r372",
      "r375",
      "r376",
      "r385",
      "r386",
      "r390",
      "r394",
      "r632",
      "r815"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share of stock differentiated by the voting rights the holder receives. Examples include, but are not limited to, common stock, redeemable preferred stock, nonredeemable preferred stock, and convertible stock.",
        "label": "Class of Stock [Domain]",
        "terseLabel": "Class of Stock [Domain]"
       }
      }
     },
     "localname": "ClassOfStockDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ClassOfStockLineItems": {
     "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": "Class of Stock [Line Items]",
        "terseLabel": "Class of Stock [Line Items]"
       }
      }
     },
     "localname": "ClassOfStockLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CommitmentsAndContingencies": {
     "auth_ref": [
      "r52",
      "r350",
      "r729",
      "r748"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 2.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Represents the caption on the face of the balance sheet to indicate that the entity has entered into (1) purchase or supply arrangements that will require expending a portion of its resources to meet the terms thereof, and (2) is exposed to potential losses or, less frequently, gains, arising from (a) possible claims against a company's resources due to future performance under contract terms, and (b) possible losses or likely gains from uncertainties that will ultimately be resolved when one or more future events that are deemed likely to occur do occur or fail to occur.",
        "label": "Commitments and Contingencies",
        "terseLabel": "Commitments and contingencies (Note 11)"
       }
      }
     },
     "localname": "CommitmentsAndContingencies",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Commitments and Contingencies Disclosure [Abstract]",
        "terseLabel": "Commitments and Contingencies Disclosure [Abstract]"
       }
      }
     },
     "localname": "CommitmentsAndContingenciesDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureTextBlock": {
     "auth_ref": [
      "r347",
      "r348",
      "r349",
      "r357",
      "r791"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for commitments and contingencies.",
        "label": "Commitments and Contingencies Disclosure [Text Block]",
        "terseLabel": "Commitments and Contingencies"
       }
      }
     },
     "localname": "CommitmentsAndContingenciesDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CommitmentsandContingencies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CommitmentsAndContingenciesPolicyTextBlock": {
     "auth_ref": [
      "r362",
      "r792"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for commitments and contingencies, which may include policies for recognizing and measuring loss and gain contingencies.",
        "label": "Commitments and Contingencies, Policy [Policy Text Block]",
        "terseLabel": "Contingencies"
       }
      }
     },
     "localname": "CommitmentsAndContingenciesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CommonStockDividendsPerShareCashPaid": {
     "auth_ref": [
      "r408"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate dividends paid during the period for each share of common stock outstanding.",
        "label": "Common Stock, Dividends, Per Share, Cash Paid",
        "terseLabel": "Cash dividends per common share (in dollars per share)"
       }
      }
     },
     "localname": "CommonStockDividendsPerShareCashPaid",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockDividendsPerShareDeclared": {
     "auth_ref": [
      "r408"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate dividends declared during the period for each share of common stock outstanding.",
        "label": "Common Stock, Dividends, Per Share, Declared",
        "terseLabel": "Cash dividend declared per common share"
       }
      }
     },
     "localname": "CommonStockDividendsPerShareDeclared",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockMember": {
     "auth_ref": [
      "r141",
      "r142",
      "r612"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stock that is subordinate to all other stock of the issuer.",
        "label": "Common Stock [Member]",
        "terseLabel": "Common Stock [Member]"
       }
      }
     },
     "localname": "CommonStockMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r23"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "auth_ref": [
      "r23"
     ],
     "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, shares authorized"
       }
      }
     },
     "localname": "CommonStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesIssued": {
     "auth_ref": [
      "r23"
     ],
     "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",
        "periodEndLabel": "Balance, shares",
        "periodStartLabel": "Beginning Balance, shares",
        "terseLabel": "Common stock, shares issued"
       }
      }
     },
     "localname": "CommonStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "auth_ref": [
      "r23",
      "r401"
     ],
     "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",
        "terseLabel": "Common stock, shares outstanding"
       }
      }
     },
     "localname": "CommonStockSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockValueOutstanding": {
     "auth_ref": [
      "r23"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 1.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value of all classes of common stock held by shareholders. May be all or portion of the number of common shares authorized. These shares exclude common shares repurchased by the entity and held as treasury shares.",
        "label": "Common Stock, Value, Outstanding",
        "terseLabel": "Common stock, $.002 par value \u2013 Authorized: 300,000 shares in 2021 and 2020, respectively, issued and outstanding: 175,481 and 175,790 shares in 2021 and 2020, respectively"
       }
      }
     },
     "localname": "CommonStockValueOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CompensationAndRetirementDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retirement Benefits [Abstract]",
        "terseLabel": "Retirement Benefits [Abstract]"
       }
      }
     },
     "localname": "CompensationAndRetirementDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "auth_ref": [
      "r79",
      "r81",
      "r82",
      "r90",
      "r732",
      "r750"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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",
        "totalLabel": "Total comprehensive income"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ComprehensiveIncomePolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for comprehensive income.",
        "label": "Comprehensive Income, Policy [Policy Text Block]",
        "terseLabel": "Comprehensive Income"
       }
      }
     },
     "localname": "ComprehensiveIncomePolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConcentrationRiskBenchmarkDomain": {
     "auth_ref": [
      "r192",
      "r193",
      "r223",
      "r629",
      "r630",
      "r790"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The denominator in a calculation of a disclosed concentration risk percentage.",
        "label": "Concentration Risk Benchmark [Domain]",
        "terseLabel": "Concentration Risk Benchmark [Domain]"
       }
      }
     },
     "localname": "ConcentrationRiskBenchmarkDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConcentrationRiskByBenchmarkAxis": {
     "auth_ref": [
      "r192",
      "r193",
      "r223",
      "r629",
      "r630",
      "r771",
      "r790"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by benchmark of concentration risk.",
        "label": "Concentration Risk Benchmark [Axis]",
        "terseLabel": "Concentration Risk Benchmark [Axis]"
       }
      }
     },
     "localname": "ConcentrationRiskByBenchmarkAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskByTypeAxis": {
     "auth_ref": [
      "r192",
      "r193",
      "r223",
      "r629",
      "r630",
      "r771",
      "r790"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of concentration risk, for example, but not limited to, asset, liability, net assets, geographic, customer, employees, supplier, lender.",
        "label": "Concentration Risk Type [Axis]",
        "terseLabel": "Concentration Risk Type [Axis]"
       }
      }
     },
     "localname": "ConcentrationRiskByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskLineItems": {
     "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": "Concentration Risk [Line Items]",
        "terseLabel": "Concentration Risk [Line Items]"
       }
      }
     },
     "localname": "ConcentrationRiskLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskPercentage1": {
     "auth_ref": [
      "r192",
      "r193",
      "r223",
      "r629",
      "r630"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For an entity that discloses a concentration risk in relation to quantitative amount, which serves as the \"benchmark\" (or denominator) in the equation, this concept represents the concentration percentage derived from the division.",
        "label": "Concentration Risk, Percentage",
        "terseLabel": "Concentration Risk, Percentage",
        "verboseLabel": "Maximum percentage of revenue accountability"
       }
      }
     },
     "localname": "ConcentrationRiskPercentage1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ConcentrationRiskTable": {
     "auth_ref": [
      "r190",
      "r192",
      "r193",
      "r194",
      "r629",
      "r631",
      "r790"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Describes the nature of a concentration, a benchmark to which it is compared, and the percentage that the risk is to the benchmark.",
        "label": "Concentration Risk [Table]",
        "terseLabel": "Concentration Risk [Table]"
       }
      }
     },
     "localname": "ConcentrationRiskTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskTypeDomain": {
     "auth_ref": [
      "r192",
      "r193",
      "r223",
      "r629",
      "r630",
      "r790"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For an entity that discloses a concentration risk as a percentage of some financial balance or benchmark, identifies the type (for example, asset, liability, net assets, geographic, customer, employees, supplier, lender) of the concentration.",
        "label": "Concentration Risk Type [Domain]",
        "terseLabel": "Concentration Risk Type [Domain]"
       }
      }
     },
     "localname": "ConcentrationRiskTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConsolidationPolicyTextBlock": {
     "auth_ref": [
      "r118",
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy regarding (1) the principles it follows in consolidating or combining the separate financial statements, including the principles followed in determining the inclusion or exclusion of subsidiaries or other entities in the consolidated or combined financial statements and (2) its treatment of interests (for example, common stock, a partnership interest or other means of exerting influence) in other entities, for example consolidation or use of the equity or cost methods of accounting.  The accounting policy may also address the accounting treatment for intercompany accounts and transactions, noncontrolling interest, and the income statement treatment in consolidation for issuances of stock by a subsidiary.",
        "label": "Consolidation, Policy [Policy Text Block]",
        "terseLabel": "Basis of Consolidation"
       }
      }
     },
     "localname": "ConsolidationPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ContractTerminationMember": {
     "auth_ref": [
      "r330",
      "r331",
      "r341",
      "r342"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Termination of a contract associated with exit from or disposal of business activities or restructurings pursuant to a plan.",
        "label": "Contract Termination [Member]",
        "terseLabel": "Contract Termination [Member]"
       }
      }
     },
     "localname": "ContractTerminationMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock": {
     "auth_ref": [
      "r412"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of receivable, contract asset, and contract liability from contract with customer. Includes, but is not limited to, change in contract asset and contract liability.",
        "label": "Contract with Customer, Contract Asset, Contract Liability, and Receivable [Table Text Block]",
        "terseLabel": "Contract with Customer, Liability"
       }
      }
     },
     "localname": "ContractWithCustomerAssetAndLiabilityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ContractWithCustomerLiabilityCurrent": {
     "auth_ref": [
      "r410",
      "r411",
      "r422"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 4.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current.",
        "label": "Contract with Customer, Liability, Current",
        "periodEndLabel": "End balance",
        "periodStartLabel": "Beginning balance",
        "terseLabel": "Deferred revenue and customer deposits"
       }
      }
     },
     "localname": "ContractWithCustomerLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CorporateBondSecuritiesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This category includes information about long-term debt securities that are issued by either a domestic or foreign corporate business entity with a date certain promise of repayment and a return to the holder for the time value of money (for example, variable or fixed interest, original issue discount).",
        "label": "Corporate Bond Securities [Member]",
        "terseLabel": "Corporate Bonds [Member]"
       }
      }
     },
     "localname": "CorporateBondSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CostOfGoodsAndServicesSold": {
     "auth_ref": [
      "r95",
      "r714"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy": {
     "auth_ref": [
      "r337",
      "r338",
      "r345"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for cost associated with exit or disposal activity or restructuring. Excludes entity newly acquired in business combination and discontinued operation.",
        "label": "Costs Associated with Exit or Disposal Activity or Restructuring [Policy Text Block]",
        "terseLabel": "Costs Associated with Exit or Disposal Activity or Restructuring"
       }
      }
     },
     "localname": "CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CurrentFederalTaxExpenseBenefit": {
     "auth_ref": [
      "r126",
      "r539",
      "r549"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current federal tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Current Federal Tax Expense (Benefit)",
        "terseLabel": "Federal"
       }
      }
     },
     "localname": "CurrentFederalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentForeignTaxExpenseBenefit": {
     "auth_ref": [
      "r126",
      "r539"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Current Foreign Tax Expense (Benefit)",
        "terseLabel": "Foreign"
       }
      }
     },
     "localname": "CurrentForeignTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r126",
      "r539",
      "r549",
      "r551"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current income tax expense (benefit) pertaining to taxable income (loss) from continuing operations.",
        "label": "Current Income Tax Expense (Benefit)",
        "totalLabel": "Current income tax expense (benefit), Total"
       }
      }
     },
     "localname": "CurrentIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current Income Tax Expense (Benefit), Continuing Operations [Abstract]",
        "terseLabel": "Current:"
       }
      }
     },
     "localname": "CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CurrentStateAndLocalTaxExpenseBenefit": {
     "auth_ref": [
      "r126",
      "r539",
      "r549"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current state and local tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Current State and Local Tax Expense (Benefit)",
        "terseLabel": "State"
       }
      }
     },
     "localname": "CurrentStateAndLocalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CustomerConcentrationRiskMember": {
     "auth_ref": [
      "r191",
      "r223"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Reflects the percentage that revenues in the period from one or more significant customers is to net revenues, as defined by the entity, such as total net revenues, product line revenues, segment revenues. The risk is the materially adverse effects of loss of a significant customer.",
        "label": "Customer Concentration Risk [Member]",
        "verboseLabel": "Revenue from a single customer, percentage"
       }
      }
     },
     "localname": "CustomerConcentrationRiskMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss": {
     "auth_ref": [
      "r243",
      "r280",
      "r288",
      "r290"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of allowance for credit loss 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, Allowance for Credit Loss",
        "periodEndLabel": "Ending balance",
        "periodStartLabel": "Beginning balance"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAllowanceForCreditLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent": {
     "auth_ref": [
      "r280"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of allowance for credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as current.",
        "label": "Debt Securities, Available-for-sale, Allowance for Credit Loss, Current",
        "terseLabel": "Debt Securities, Available-for-sale, Allowance for Credit Loss, Current"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAllowanceForCreditLossCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent": {
     "auth_ref": [
      "r280"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of allowance for credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), classified as noncurrent.",
        "label": "Debt Securities, Available-for-sale, Allowance for Credit Loss, Noncurrent",
        "terseLabel": "Debt Securities, Available-for-sale, Allowance for Credit Loss, Noncurrent"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAllowanceForCreditLossNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery": {
     "auth_ref": [
      "r289"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in allowance for credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), from recovery.",
        "label": "Debt Securities, Available-for-sale, Allowance for Credit Loss, Recovery",
        "terseLabel": "Decreases to the allowance for credit losses"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward": {
     "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": "Debt Securities, Available-for-sale, Allowance for Credit Loss [Roll Forward]",
        "terseLabel": "Debt Securities, Available-for-sale, Allowance for Credit Loss [Roll Forward]"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock": {
     "auth_ref": [
      "r291"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of allowance for credit loss 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, Allowance for Credit Loss [Table Text Block]",
        "terseLabel": "Debt Securities, Available-for-sale, Allowance for Credit Loss"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostCurrent": {
     "auth_ref": [
      "r241",
      "r280"
     ],
     "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), classified as current.",
        "label": "Debt Securities, Available-for-sale, Amortized Cost, Current",
        "terseLabel": "Debt Securities, Available-for-sale, Amortized Cost"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAmortizedCostCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent": {
     "auth_ref": [
      "r241",
      "r280"
     ],
     "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), classified as noncurrent.",
        "label": "Debt Securities, Available-for-sale, Amortized Cost, Noncurrent",
        "terseLabel": "Debt Securities, Available-for-sale, Amortized Cost, Noncurrent"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAmortizedCostNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal": {
     "auth_ref": [
      "r281",
      "r287"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense (reversal of expense) for expected credit loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), from change in present value of expected cash flows.",
        "label": "Debt Securities, Available-for-sale, Change in Present Value, Expense (Reversal)",
        "terseLabel": "Increases to the allowance for credit losses"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger": {
     "auth_ref": [
      "r255",
      "r285",
      "r292"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition",
       "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), in continuous unrealized loss position for more than 12 months, without allowance for credit loss. Includes beneficial interest in securitized financial asset.",
        "label": "Debt Securities, Available-for-sale, Continuous Unrealized Loss Position, 12 Months or Longer",
        "terseLabel": "Fair Value, Greater than 12 Months"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLonger",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss": {
     "auth_ref": [
      "r255",
      "r285"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated unrealized loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in continuous unrealized loss position for 12 months or longer, without allowance for credit loss. Includes beneficial interest in securitized financial asset.",
        "label": "Debt Securities, Available-for-sale, Continuous Unrealized Loss Position, 12 Months or Longer, Accumulated Loss",
        "negatedLabel": "Unrealized Losses, Greater than 12 Months"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPosition12MonthsOrLongerAccumulatedLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months": {
     "auth_ref": [
      "r255",
      "r285",
      "r292"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition",
       "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), in continuous unrealized loss position for less than 12 months, without allowance for credit loss. Includes beneficial interest in securitized financial asset.",
        "label": "Debt Securities, Available-for-sale, Continuous Unrealized Loss Position, Less than 12 Months",
        "terseLabel": "Fair Value, Less than 12 months"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12Months",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss": {
     "auth_ref": [
      "r255",
      "r285"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated unrealized loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in continuous unrealized loss position for less than 12 months, without allowance for credit loss. Includes beneficial interest in securitized financial asset.",
        "label": "Debt Securities, Available-for-sale, Continuous Unrealized Loss Position, Less than 12 Months, Accumulated Loss",
        "negatedLabel": "Unrealized Losses, Less than 12 months"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleContinuousUnrealizedLossPositionLessThan12MonthsAccumulatedLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleRealizedGain": {
     "auth_ref": [
      "r257"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of realized gain 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, Realized Gain",
        "terseLabel": "Gross realized losses"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleRealizedGain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleRealizedLoss": {
     "auth_ref": [
      "r257"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of realized loss 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, Realized Loss",
        "terseLabel": "Gross realized gains"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleRealizedLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPosition": {
     "auth_ref": [
      "r252",
      "r282",
      "r292"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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), in unrealized loss position without allowance for credit loss.",
        "label": "Debt Securities, Available-for-sale, Unrealized Loss Position",
        "totalLabel": "Fair Value"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleUnrealizedLossPosition",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss": {
     "auth_ref": [
      "r253",
      "r283"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated unrealized loss on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), in unrealized loss position, without allowance for credit loss. Includes beneficial interest in securitized financial asset.",
        "label": "Debt Securities, Available-for-sale, Unrealized Loss Position, Accumulated Loss",
        "negatedTotalLabel": "Unrealized Losses"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleUnrealizedLossPositionAccumulatedLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredFederalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r126",
      "r540",
      "r549"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred federal income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred Federal Income Tax Expense (Benefit)",
        "terseLabel": "Federal"
       }
      }
     },
     "localname": "DeferredFederalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredForeignIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r126",
      "r540",
      "r549"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred Foreign Income Tax Expense (Benefit)",
        "terseLabel": "Foreign"
       }
      }
     },
     "localname": "DeferredForeignIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxAssetsNet": {
     "auth_ref": [
      "r514",
      "r515"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 4.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting.",
        "label": "Deferred Income Tax Assets, Net",
        "terseLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "DeferredIncomeTaxAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r110",
      "r126",
      "r540",
      "r549",
      "r550",
      "r551"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "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)",
        "totalLabel": "Deferred income tax expense (benefit), Total"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred Income Tax Expense (Benefit), Continuing Operations [Abstract]",
        "terseLabel": "Deferred:"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilities": {
     "auth_ref": [
      "r19",
      "r20",
      "r529",
      "r724",
      "r740"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences.",
        "label": "Deferred Tax Liabilities, Gross",
        "terseLabel": "Deferred tax liabilities"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "auth_ref": [
      "r514",
      "r515"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 2.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": "Deferred income taxes"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilitiesNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r126",
      "r540",
      "r549"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred state and local tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred State and Local Income Tax Expense (Benefit)",
        "terseLabel": "State"
       }
      }
     },
     "localname": "DeferredStateAndLocalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsGross": {
     "auth_ref": [
      "r530"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.",
        "label": "Deferred Tax Assets, Gross",
        "terseLabel": "Deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsInventory": {
     "auth_ref": [
      "r537",
      "r538"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 6.0,
       "parentTag": "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from inventory.",
        "label": "Deferred Tax Assets, Inventory",
        "terseLabel": "Inventory and revenue related"
       }
      }
     },
     "localname": "DeferredTaxAssetsInventory",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsLiabilitiesNet": {
     "auth_ref": [
      "r532"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 2.0,
       "parentTag": "cgnx_DeferredIncomeTaxAssetsLiabilitiesNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, without jurisdictional netting.",
        "label": "Deferred Tax Assets, Net",
        "totalLabel": "Deferred Tax Assets, Net, Noncurrent"
       }
      }
     },
     "localname": "DeferredTaxAssetsLiabilitiesNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred Tax Assets, Net of Valuation Allowance, Noncurrent Classification [Abstract]",
        "terseLabel": "Gross deferred tax assets:"
       }
      }
     },
     "localname": "DeferredTaxAssetsNetNoncurrentClassificationAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic": {
     "auth_ref": [
      "r537",
      "r538"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 3.0,
       "parentTag": "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible domestic operating loss carryforwards. Excludes state and local operating loss carryforwards.",
        "label": "Deferred Tax Assets, Operating Loss Carryforwards, Domestic",
        "terseLabel": "Federal and state tax credit carryforwards"
       }
      }
     },
     "localname": "DeferredTaxAssetsOperatingLossCarryforwardsDomestic",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign": {
     "auth_ref": [
      "r537",
      "r538"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 4.0,
       "parentTag": "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible foreign operating loss carryforwards.",
        "label": "Deferred Tax Assets, Operating Loss Carryforwards, Foreign",
        "terseLabel": "Foreign net operating losses"
       }
      }
     },
     "localname": "DeferredTaxAssetsOperatingLossCarryforwardsForeign",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsForeign": {
     "auth_ref": [
      "r535",
      "r537",
      "r538"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible foreign tax credit carryforwards.",
        "label": "Deferred Tax Assets, Tax Credit Carryforwards, Foreign",
        "terseLabel": "Deferred Tax Assets, Tax Credit Carryforwards, Foreign"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxCreditCarryforwardsForeign",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch": {
     "auth_ref": [
      "r535",
      "r537",
      "r538"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible research tax credit carryforwards.",
        "label": "Deferred Tax Assets, Tax Credit Carryforwards, Research",
        "terseLabel": "Deferred tax assets, tax credit carryforwards, research"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxCreditCarryforwardsResearch",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther": {
     "auth_ref": [
      "r537",
      "r538"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 7.0,
       "parentTag": "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences from compensation and benefits, classified as other.",
        "label": "Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Other",
        "terseLabel": "Bonuses, commissions, and other compensation"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost": {
     "auth_ref": [
      "r537",
      "r538"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 2.0,
       "parentTag": "cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.",
        "label": "Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Share-based Compensation Cost",
        "terseLabel": "Stock-based compensation expense"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r531"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredTaxAssetsLiabilitiesNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.",
        "label": "Deferred Tax Assets, Valuation Allowance",
        "negatedTerseLabel": "Valuation allowance",
        "terseLabel": "Deferred tax assets, valuation allowance"
       }
      }
     },
     "localname": "DeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred Tax Liabilities, Gross [Abstract]",
        "terseLabel": "Gross deferred tax liabilities:"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DefinedContributionPlanCostRecognized": {
     "auth_ref": [
      "r455"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost for defined contribution plan.",
        "label": "Defined Contribution Plan, Cost",
        "terseLabel": "Company contributions to employee savings plan"
       }
      }
     },
     "localname": "DefinedContributionPlanCostRecognized",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of employees' gross pay for which the employer contributes a matching contribution to a defined contribution plan.",
        "label": "Defined Contribution Plan, Employer Matching Contribution, Percent of Employees' Gross Pay",
        "terseLabel": "Percent of employee contribution"
       }
      }
     },
     "localname": "DefinedContributionPlanEmployerMatchingContributionPercent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage employer matches of the employee's percentage contribution matched.",
        "label": "Defined Contribution Plan, Employer Matching Contribution, Percent of Match",
        "terseLabel": "Company match percent"
       }
      }
     },
     "localname": "DefinedContributionPlanEmployerMatchingContributionPercentOfMatch",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Maximum percentage of employee gross pay the employee may contribute to a defined contribution plan.",
        "label": "Defined Contribution Plan, Maximum Annual Contributions Per Employee, Percent",
        "terseLabel": "Maximum contribution by company expressed as percentage of employee pre-tax salary"
       }
      }
     },
     "localname": "DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_Depreciation": {
     "auth_ref": [
      "r110",
      "r322"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 5.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.",
        "label": "Depreciation",
        "terseLabel": "Depreciation of property, plant, and equipment"
       }
      }
     },
     "localname": "Depreciation",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset": {
     "auth_ref": [
      "r60",
      "r585"
     ],
     "calculation": {
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DerivativeAssets",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of obligation to return cash collateral under master netting arrangements offset against derivative assets.",
        "label": "Derivative Asset, Collateral, Obligation to Return Cash, Offset",
        "negatedTerseLabel": "Derivative Asset gross amount offset"
       }
      }
     },
     "localname": "DerivativeAssetCollateralObligationToReturnCashOffset",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeAssetNotionalAmount": {
     "auth_ref": [
      "r587",
      "r588",
      "r590"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Nominal or face amount used to calculate payments on the derivative asset.",
        "label": "Derivative Asset, Notional Amount",
        "terseLabel": "Derivative Asset, Notional Amount"
       }
      }
     },
     "localname": "DerivativeAssetNotionalAmount",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeAssets": {
     "auth_ref": [
      "r61",
      "r64",
      "r65",
      "r628"
     ],
     "calculation": {
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value, after the effects of master netting arrangements, of a financial asset or other contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes assets not subject to a master netting arrangement and not elected to be offset.",
        "label": "Derivative Asset",
        "terseLabel": "Net amount of assets presented",
        "totalLabel": "Net amount of assets presented"
       }
      }
     },
     "localname": "DerivativeAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails",
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeFairValueOfDerivativeAsset": {
     "auth_ref": [
      "r59",
      "r65",
      "r66",
      "r596",
      "r689"
     ],
     "calculation": {
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DerivativeAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value, before effects of master netting arrangements, of a financial asset or other contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes assets elected not to be offset. Excludes assets not subject to a master netting arrangement.",
        "label": "Derivative Asset, Fair Value, Gross Asset",
        "terseLabel": "Derivative Asset, Fair Value, Gross Asset"
       }
      }
     },
     "localname": "DerivativeFairValueOfDerivativeAsset",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeFairValueOfDerivativeLiability": {
     "auth_ref": [
      "r59",
      "r65",
      "r66",
      "r596",
      "r689"
     ],
     "calculation": {
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DerivativeLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value, before effects of master netting arrangements, of a financial liability or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes liabilities elected not to be offset. Excludes liabilities not subject to a master netting arrangement.",
        "label": "Derivative Liability, Fair Value, Gross Liability",
        "terseLabel": "Derivative Liability, Fair Value, Gross Liability"
       }
      }
     },
     "localname": "DerivativeFairValueOfDerivativeLiability",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeGainLossOnDerivativeNet": {
     "auth_ref": [
      "r595"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in the fair value of derivatives recognized in the income statement.",
        "label": "Derivative, Gain (Loss) on Derivative, Net",
        "terseLabel": "Gains (losses) recognized in net income"
       }
      }
     },
     "localname": "DerivativeGainLossOnDerivativeNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Derivative Instruments and Hedging Activities Disclosure [Abstract]",
        "terseLabel": "Derivative Instruments and Hedging Activities Disclosure [Abstract]"
       }
      }
     },
     "localname": "DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock": {
     "auth_ref": [
      "r609",
      "r615"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for derivative instruments and hedging activities including, but not limited to, risk management strategies, non-hedging derivative instruments, assets, liabilities, revenue and expenses, and methodologies and assumptions used in determining the amounts.",
        "label": "Derivative Instruments and Hedging Activities Disclosure [Text Block]",
        "terseLabel": "Derivative Instruments"
       }
      }
     },
     "localname": "DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstruments"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable": {
     "auth_ref": [
      "r591",
      "r594",
      "r600",
      "r602",
      "r603",
      "r607",
      "r608"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about the location and amount of derivative instruments and nonderivative instruments designated as hedging instruments reported before netting adjustments, and the amount of gain (loss) on derivative instruments and nonderivative instruments designated and qualified as hedging instruments.",
        "label": "Derivative Instruments, Gain (Loss) [Table]",
        "terseLabel": "Derivative Instruments, Gain (Loss) [Table]"
       }
      }
     },
     "localname": "DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativeInstrumentsGainLossLineItems": {
     "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": "Derivative Instruments, Gain (Loss) [Line Items]",
        "terseLabel": "Derivative Instruments, Gain (Loss) [Line Items]"
       }
      }
     },
     "localname": "DerivativeInstrumentsGainLossLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativeLiabilities": {
     "auth_ref": [
      "r61",
      "r64",
      "r65",
      "r628"
     ],
     "calculation": {
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value, after the effects of master netting arrangements, of a financial liability or contract with one or more underlyings, notional amount or payment provision or both, and the contract can be net settled by means outside the contract or delivery of an asset. Includes liabilities not subject to a master netting arrangement and not elected to be offset.",
        "label": "Derivative Liability",
        "terseLabel": "Net amount of liabilities presented",
        "totalLabel": "Net amount of liabilities presented"
       }
      }
     },
     "localname": "DerivativeLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails",
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset": {
     "auth_ref": [
      "r60",
      "r585"
     ],
     "calculation": {
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DerivativeLiabilities",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of right to receive cash collateral under master netting arrangements offset against derivative liabilities.",
        "label": "Derivative Liability, Collateral, Right to Reclaim Cash, Offset",
        "negatedTerseLabel": "Derivative liability gross amount offset"
       }
      }
     },
     "localname": "DerivativeLiabilityCollateralRightToReclaimCashOffset",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeLineItems": {
     "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": "Derivative [Line Items]",
        "terseLabel": "Derivative [Line Items]"
       }
      }
     },
     "localname": "DerivativeLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails",
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativeTable": {
     "auth_ref": [
      "r586",
      "r589",
      "r590",
      "r591",
      "r592",
      "r598",
      "r600",
      "r604",
      "r606",
      "r608",
      "r609"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule that describes and identifies a derivative or group of derivatives on a disaggregated basis, such as for individual instruments, or small groups of similar instruments. May include a combination of the type of instrument, risks being hedged, notional amount, hedge designation, related hedged item, inception date, maturity date, or other relevant item.",
        "label": "Derivative [Table]",
        "terseLabel": "Derivative [Table]"
       }
      }
     },
     "localname": "DerivativeTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails",
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativesFairValueLineItems": {
     "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": "Derivatives, Fair Value [Line Items]",
        "terseLabel": "Derivatives, Fair Value [Line Items]"
       }
      }
     },
     "localname": "DerivativesFairValueLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativesPolicyTextBlock": {
     "auth_ref": [
      "r131",
      "r586",
      "r589",
      "r591",
      "r592",
      "r605"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for its derivative instruments and hedging activities.",
        "label": "Derivatives, Policy [Policy Text Block]",
        "terseLabel": "Derivative Instruments"
       }
      }
     },
     "localname": "DerivativesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DevelopedTechnologyRightsMember": {
     "auth_ref": [
      "r565"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Rights to developed technology, which can include the right to develop, use, market, sell, or offer for sale products, compounds, or intellectual property.",
        "label": "Developed Technology Rights [Member]",
        "terseLabel": "Completed Technologies [Member]"
       }
      }
     },
     "localname": "DevelopedTechnologyRightsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DisaggregationOfRevenueLineItems": {
     "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": "Disaggregation of Revenue [Line Items]",
        "terseLabel": "Disaggregation of Revenue [Line Items]"
       }
      }
     },
     "localname": "DisaggregationOfRevenueLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DisaggregationOfRevenueTable": {
     "auth_ref": [
      "r421",
      "r424",
      "r425",
      "r426",
      "r427",
      "r428",
      "r429",
      "r430"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about 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]",
        "terseLabel": "Disaggregation of Revenue [Table]"
       }
      }
     },
     "localname": "DisaggregationOfRevenueTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DisaggregationOfRevenueTableTextBlock": {
     "auth_ref": [
      "r421"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "auth_ref": [
      "r507"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-based Payment Arrangement [Abstract]",
        "terseLabel": "Disclosure of Compensation Related Costs, Share-based Payments [Abstract]"
       }
      }
     },
     "localname": "DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_DistributionRightsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Legal rights, generally of a limited duration, to distribute a product or products, often within specific geographic areas or supply channels.",
        "label": "Distribution Rights [Member]",
        "terseLabel": "Distribution Networks [Member]",
        "verboseLabel": "Distribution Rights [Member]"
       }
      }
     },
     "localname": "DistributionRightsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DividendsCommonStockCash": {
     "auth_ref": [
      "r408"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of paid and unpaid common stock dividends declared with the form of settlement in cash.",
        "label": "Dividends, Common Stock, Cash",
        "negatedTerseLabel": "Payment of dividends ($0.245 per common share)"
       }
      }
     },
     "localname": "DividendsCommonStockCash",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DividendsPayableAmountPerShare": {
     "auth_ref": [
      "r115"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The per share amount of a dividend declared, but not paid, as of the financial reporting date.",
        "label": "Dividends Payable, Amount Per Share",
        "terseLabel": "Dividends Payable, Amount Per Share"
       }
      }
     },
     "localname": "DividendsPayableAmountPerShare",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_DividendsPayableDateDeclaredDayMonthAndYear": {
     "auth_ref": [
      "r115"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Date the dividend to be paid was declared, in YYYY-MM-DD format.",
        "label": "Dividends Payable, Date Declared",
        "terseLabel": "Dividends Payable, Date Declared"
       }
      }
     },
     "localname": "DividendsPayableDateDeclaredDayMonthAndYear",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "dateItemType"
    },
    "us-gaap_DividendsPayableDateOfRecordDayMonthAndYear": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Date the holder must own the stock to be entitled to the dividend, in YYYY-MM-DD format.",
        "label": "Dividends Payable, Date of Record",
        "terseLabel": "Dividends Payable, Date of Record"
       }
      }
     },
     "localname": "DividendsPayableDateOfRecordDayMonthAndYear",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "dateItemType"
    },
    "us-gaap_DomesticCountryMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Designated tax department of the government that is entitled to levy and collect income taxes from the entity in its country of domicile.",
        "label": "Domestic Tax Authority [Member]",
        "terseLabel": "Domestic Tax Authority [Member]"
       }
      }
     },
     "localname": "DomesticCountryMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EarningsPerShareAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings Per Share [Abstract]",
        "terseLabel": "Earnings Per Share [Abstract]"
       }
      }
     },
     "localname": "EarningsPerShareAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareBasic": {
     "auth_ref": [
      "r91",
      "r150",
      "r151",
      "r153",
      "r154",
      "r155",
      "r163",
      "r165",
      "r169",
      "r170",
      "r171",
      "r176",
      "r177",
      "r613",
      "r614",
      "r733",
      "r751"
     ],
     "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": "Net income (in dollars per share)",
        "verboseLabel": "Basic net income (loss) per share (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareBasic",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareBasicAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings Per Share, Basic [Abstract]",
        "terseLabel": "Net Income per weighted-average common and common-equivalent share:"
       }
      }
     },
     "localname": "EarningsPerShareBasicAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareDiluted": {
     "auth_ref": [
      "r91",
      "r150",
      "r151",
      "r153",
      "r154",
      "r155",
      "r165",
      "r169",
      "r170",
      "r171",
      "r176",
      "r177",
      "r613",
      "r614",
      "r733",
      "r751"
     ],
     "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": "Net income (in dollars per share)",
        "verboseLabel": "Diluted net income (loss) per share (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareDiluted",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareDilutedAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Earnings Per Share, Diluted [Abstract]",
        "terseLabel": "Diluted earnings per weighted-average common and common-equivalent share (1):"
       }
      }
     },
     "localname": "EarningsPerShareDilutedAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerSharePolicyTextBlock": {
     "auth_ref": [
      "r172",
      "r174"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for computing basic and diluted earnings or loss per share for each class of common stock and participating security. Addresses all significant policy factors, including any antidilutive items that have been excluded from the computation and takes into account stock dividends, splits and reverse splits that occur after the balance sheet date of the latest reporting period but before the issuance of the financial statements.",
        "label": "Earnings Per Share, Policy [Policy Text Block]",
        "terseLabel": "Net Income Per Share"
       }
      }
     },
     "localname": "EarningsPerSharePolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "auth_ref": [
      "r172",
      "r174",
      "r175",
      "r178"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for earnings per share.",
        "label": "Earnings Per Share [Text Block]",
        "terseLabel": "Weighted Average Shares"
       }
      }
     },
     "localname": "EarningsPerShareTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageShares"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": {
     "auth_ref": [
      "r642"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 4.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. Excludes amounts for 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",
        "terseLabel": "Effect of foreign exchange rate changes on cash and cash equivalents"
       }
      }
     },
     "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "auth_ref": [
      "r517"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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",
        "totalLabel": "Income tax expense (benefit)"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": {
     "auth_ref": [
      "r128",
      "r517",
      "r553"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "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": "Income tax expense at U.S. federal statutory corporate tax rate",
        "verboseLabel": "Income tax rate"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate": {
     "auth_ref": [
      "r517",
      "r553"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 7.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to changes in the income tax rates.",
        "label": "Effective Income Tax Rate Reconciliation, Change in Enacted Tax Rate, Percent",
        "terseLabel": "Discrete tax benefit related to change in tax structure"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential": {
     "auth_ref": [
      "r517",
      "r553"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to statutory income tax expense (benefit) outside of the country of domicile.",
        "label": "Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Percent",
        "negatedTerseLabel": "Foreign tax rate differential",
        "terseLabel": "Foreign tax rate differential"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments": {
     "auth_ref": [
      "r517",
      "r553"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 10.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments.",
        "label": "Effective Income Tax Rate Reconciliation, Other Adjustments, Percent",
        "terseLabel": "Other"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationOtherAdjustments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 9.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference, between reported income tax expense (benefit) and the expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations, that is attributable to tax exempt income, equity in earnings (loss) of an unconsolidated subsidiary, minority interest income (expense), tax holiday, disposition of a business, disposition of an asset, repatriation of foreign earnings, repatriation of foreign earnings jobs creation act of 2004, change in enacted tax rate, prior year income taxes, change in deferred tax asset valuation allowance, and other adjustments.",
        "label": "Effective Income Tax Rate Reconciliation,Other Reconciling Items, Percent",
        "terseLabel": "Other discrete tax events"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount": {
     "auth_ref": [
      "r506",
      "r517"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operation, attributable to expense for award under share-based payment arrangement. Excludes expense determined to be nondeductible upon grant or after for award under share-based payment arrangement.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Expense (Benefit), Share-based Payment Arrangement, Amount",
        "terseLabel": "Reduction of income tax expense for adoption of ASU 2016-09"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent": {
     "auth_ref": [
      "r506",
      "r517"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": -1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying domestic federal statutory income tax rate to pretax income (loss) from continuing operation, attributable to expense for award under share-based payment arrangement. Excludes expense determined to be nondeductible upon grant or after for award under share-based payment arrangement.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Expense (Benefit), Share-based Payment Arrangement, Percent",
        "negatedTerseLabel": "Discrete tax benefit related to employee stock options",
        "terseLabel": "Discrete tax benefit related to employee stock option exercises"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes": {
     "auth_ref": [
      "r517",
      "r553"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations applicable to state and local income tax expense (benefit), net of federal tax expense (benefit).",
        "label": "Effective Income Tax Rate Reconciliation, State and Local Income Taxes, Percent",
        "terseLabel": "State income taxes, net of federal benefit"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits": {
     "auth_ref": [
      "r517",
      "r553"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": -1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to tax credits. Including, but not limited to, research credit, foreign tax credit, investment tax credit, and other tax credits.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Credit, Percent",
        "negatedTerseLabel": "Tax credit"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxCredits",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements": {
     "auth_ref": [
      "r517",
      "r553"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 11.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to income tax settlements. Including, but not limited to, domestic tax settlement, foreign tax settlement, state and local tax settlement, and other tax settlements.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Settlement, Percent",
        "terseLabel": "Discrete tax expense (benefit) related to tax return filings"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxSettlements",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign": {
     "auth_ref": [
      "r517",
      "r553"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 12.0,
       "parentTag": "us-gaap_EffectiveIncomeTaxRateContinuingOperations",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax settlement.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Settlement, Foreign, Percent",
        "terseLabel": "Effective Income Tax Rate Reconciliation, Tax Settlement, Foreign, Percent"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems": {
     "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": "Share-based Payment Arrangement, Expensed and Capitalized, Amount [Line Items]",
        "terseLabel": "Employee Service Share-based Compensation, Allocation of Recognized Period Costs [Line Items]"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "auth_ref": [
      "r494"
     ],
     "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": "Recognition period for unrecognized compensation expense"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions": {
     "auth_ref": [
      "r494"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost to be recognized for option under share-based payment arrangement.",
        "label": "Share-based Payment Arrangement, Nonvested Award, Option, Cost Not yet Recognized, Amount",
        "terseLabel": "Total unrecognized compensation expense related to non-vested stock options"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense": {
     "auth_ref": [
      "r493"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of tax benefit for recognition of expense of award under share-based payment arrangement.",
        "label": "Share-based Payment Arrangement, Expense, Tax Benefit",
        "terseLabel": "Income tax benefit recognized related to stock-based compensation expense"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeStockOptionMember": {
     "auth_ref": [
      "r491"
     ],
     "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": "Share-based Payment Arrangement, Option [Member]",
        "terseLabel": "Employee Stock Option [Member]",
        "verboseLabel": "Stock Compensation Plan [Member]"
       }
      }
     },
     "localname": "EmployeeStockOptionMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail",
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tangible personal property used to produce goods and services.",
        "label": "Equipment [Member]",
        "verboseLabel": "Manufacturing Test Equipment [Member]"
       }
      }
     },
     "localname": "EquipmentMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Equity [Abstract]",
        "terseLabel": "Equity [Abstract]"
       }
      }
     },
     "localname": "EquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_EquityComponentDomain": {
     "auth_ref": [
      "r0",
      "r84",
      "r85",
      "r86",
      "r141",
      "r142",
      "r143",
      "r147",
      "r156",
      "r159",
      "r182",
      "r265",
      "r401",
      "r408",
      "r497",
      "r498",
      "r499",
      "r542",
      "r543",
      "r612",
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r649",
      "r761",
      "r762",
      "r763",
      "r836"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems": {
     "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": "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable": {
     "auth_ref": [
      "r616",
      "r617",
      "r618",
      "r623"
     ],
     "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 Measurements, Recurring and Nonrecurring [Table]"
       }
      }
     },
     "localname": "FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueByFairValueHierarchyLevelAxis": {
     "auth_ref": [
      "r378",
      "r380",
      "r381",
      "r438",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r452",
      "r617",
      "r679",
      "r680",
      "r681"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueByMeasurementFrequencyAxis": {
     "auth_ref": [
      "r616",
      "r617",
      "r619",
      "r620",
      "r624"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueDisclosuresAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Fair Value Disclosures [Abstract]",
        "terseLabel": "Fair Value Disclosures [Abstract]"
       }
      }
     },
     "localname": "FairValueDisclosuresAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueDisclosuresTextBlock": {
     "auth_ref": [
      "r622"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueInputsLevel1Member": {
     "auth_ref": [
      "r378",
      "r438",
      "r440",
      "r445",
      "r452",
      "r617",
      "r679"
     ],
     "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": "Quoted\u00a0Prices\u00a0in Active Markets for Identical Assets (Level\u00a01)"
       }
      }
     },
     "localname": "FairValueInputsLevel1Member",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel2Member": {
     "auth_ref": [
      "r378",
      "r380",
      "r381",
      "r438",
      "r440",
      "r445",
      "r452",
      "r617",
      "r680"
     ],
     "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": "Significant\u00a0Other Observable Inputs (Level\u00a02)"
       }
      }
     },
     "localname": "FairValueInputsLevel2Member",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel3Member": {
     "auth_ref": [
      "r378",
      "r380",
      "r381",
      "r438",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r452",
      "r617",
      "r681"
     ],
     "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": "Unobservable Inputs (Level 3)"
       }
      }
     },
     "localname": "FairValueInputsLevel3Member",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward": {
     "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": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]",
        "terseLabel": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation, Calculation [Roll Forward]"
       }
      }
     },
     "localname": "FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems": {
     "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": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Line Items]",
        "terseLabel": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Line Items]"
       }
      }
     },
     "localname": "FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable": {
     "auth_ref": [
      "r621",
      "r623"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of information required and determined to be provided for purposes of reconciling beginning and ending balances of fair value measurements of liabilities using significant unobservable inputs (level 3). Separately presenting changes during the period, attributable to: (1) total gains or losses for the period (realized and unrealized) and location reported in the statement of income (or activities); (2) purchases, sales, issuances, and settlements (net); (3) transfers in and/or out of Level 3.",
        "label": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Table]",
        "terseLabel": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Table]"
       }
      }
     },
     "localname": "FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock": {
     "auth_ref": [
      "r621",
      "r623"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the fair value measurement of liabilities using significant unobservable inputs (Level 3), a reconciliation of the beginning and ending balances, separately presenting changes attributable to the following: (1) total gains or losses for the period (realized and unrealized), segregating those gains or losses included in earnings (or changes in net assets), and gains or losses recognized in other comprehensive income (loss) and a description of where those gains or losses included in earnings (or changes in net assets) are reported in the statement of income (or activities); (2) purchases, sales, issues, and settlements (each type disclosed separately); and (3) transfers in and transfers out of Level 3 (for example, transfers due to changes in the observability of significant inputs) by class of liability.",
        "label": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation [Table Text Block]",
        "terseLabel": "Fair Value, Liabilities Measured on Recurring Basis, Unobservable Input Reconciliation"
       }
      }
     },
     "localname": "FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueMeasurementFrequencyDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Measurement frequency.",
        "label": "Measurement Frequency [Domain]",
        "terseLabel": "Fair Value, Measurement Frequency [Domain]"
       }
      }
     },
     "localname": "FairValueMeasurementFrequencyDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue": {
     "auth_ref": [
      "r621"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value of financial instrument classified as a liability measured using unobservable inputs that reflect the entity's own assumption about the assumptions market participants would use in pricing.",
        "label": "Fair Value, Measurement with Unobservable Inputs Reconciliation, Recurring Basis, Liability Value",
        "periodEndLabel": "Ending balance",
        "periodStartLabel": "Beginning balance",
        "terseLabel": "Fair value"
       }
      }
     },
     "localname": "FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": {
     "auth_ref": [
      "r378",
      "r380",
      "r381",
      "r438",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r452",
      "r679",
      "r680",
      "r681"
     ],
     "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, Measurements, Fair Value Hierarchy [Domain]"
       }
      }
     },
     "localname": "FairValueMeasurementsFairValueHierarchyDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementsRecurringMember": {
     "auth_ref": [
      "r622",
      "r624"
     ],
     "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, Measurements, Recurring"
       }
      }
     },
     "localname": "FairValueMeasurementsRecurringMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueOfFinancialInstrumentsPolicy": {
     "auth_ref": [
      "r625",
      "r627"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for determining the fair value of financial instruments.",
        "label": "Fair Value of Financial Instruments, Policy [Policy Text Block]",
        "terseLabel": "Fair Value Measurements"
       }
      }
     },
     "localname": "FairValueOfFinancialInstrumentsPolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable": {
     "auth_ref": [
      "r593",
      "r598",
      "r607"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule that discloses the location and fair value amounts of derivative instruments (and nonderivative instruments that are designated and qualify as hedging instruments) reported in the statement of financial position.",
        "label": "Fair Values Derivatives, Balance Sheet Location, by Derivative Contract Type [Table]",
        "terseLabel": "Fair Values Derivatives, Balance Sheet Location, by Derivative Contract Type [Table]"
       }
      }
     },
     "localname": "FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FinancialInstrumentAxis": {
     "auth_ref": [
      "r250",
      "r251",
      "r260",
      "r261",
      "r262",
      "r271",
      "r276",
      "r277",
      "r278",
      "r279",
      "r284",
      "r286",
      "r291",
      "r292",
      "r379",
      "r399",
      "r609",
      "r676",
      "r677",
      "r678",
      "r679",
      "r680",
      "r681",
      "r682",
      "r683",
      "r684",
      "r685",
      "r686",
      "r687",
      "r688",
      "r690",
      "r691",
      "r692",
      "r693",
      "r694",
      "r695",
      "r696",
      "r697",
      "r698",
      "r699",
      "r700",
      "r701",
      "r702",
      "r703",
      "r704",
      "r705",
      "r706",
      "r815",
      "r816",
      "r817",
      "r818",
      "r819",
      "r820",
      "r821"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "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": "Finite-Lived Intangible Asset, Useful Life"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "auth_ref": [
      "r312"
     ],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail": {
       "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",
        "terseLabel": "Accumulated Amortization",
        "verboseLabel": "Accumulated amortization"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail": {
       "order": 6.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "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 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": "Finite-Lived Intangible Asset, Expected Amortization, after Year Five",
        "terseLabel": "Thereafter"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": {
     "auth_ref": [
      "r314"
     ],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "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": "2022"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive": {
     "auth_ref": [
      "r314"
     ],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail": {
       "order": 5.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "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 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": "Finite-Lived Intangible Asset, Expected Amortization, Year Five",
        "terseLabel": "2026"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "auth_ref": [
      "r314"
     ],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail": {
       "order": 4.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "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": "2025"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "auth_ref": [
      "r314"
     ],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail": {
       "order": 3.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "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": "2024"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "auth_ref": [
      "r314"
     ],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "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": "2023"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r307",
      "r309",
      "r312",
      "r316",
      "r715",
      "r719"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "auth_ref": [
      "r312",
      "r719"
     ],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail": {
       "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 Carrying Value"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsLineItems": {
     "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": "Finite-Lived Intangible Assets [Line Items]",
        "terseLabel": "Finite-Lived Intangible Assets [Line Items]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r307",
      "r311"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "auth_ref": [
      "r312",
      "r715"
     ],
     "calculation": {
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail": {
       "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 Carrying Value"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ForeignCountryMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Designated tax departments of governments entitled to levy and collect income taxes from the entity outside the entity's country of domicile.",
        "label": "Foreign Tax Authority [Member]",
        "terseLabel": "Foreign Tax Authority [Member]"
       }
      }
     },
     "localname": "ForeignCountryMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ForeignCurrencyContractAssetFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value portion of asset contracts related to the exchange of different currencies, including, but not limited to, foreign currency options, forward contracts, and swaps.",
        "label": "Foreign Currency Contract, Asset, Fair Value Disclosure",
        "terseLabel": "Economic hedge forward contracts"
       }
      }
     },
     "localname": "ForeignCurrencyContractAssetFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value portion of liability contracts related to the exchange of different currencies, including, but not limited to, foreign currency options, forward (delivery or nondelivery) contracts, and swaps entered into.",
        "label": "Foreign Currency Contracts, Liability, Fair Value Disclosure",
        "terseLabel": "Economic hedge forward contracts"
       }
      }
     },
     "localname": "ForeignCurrencyContractsLiabilityFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ForeignCurrencyGainLossMember": {
     "auth_ref": [
      "r601"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing foreign currency gain (loss).",
        "label": "Foreign Currency Gain (Loss) [Member]",
        "terseLabel": "Foreign currency gain (loss)"
       }
      }
     },
     "localname": "ForeignCurrencyGainLossMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ForeignCurrencyTransactionGainLossBeforeTax": {
     "auth_ref": [
      "r636",
      "r637",
      "r639",
      "r641"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before tax of foreign currency transaction realized and unrealized gain (loss) recognized in the income statement.",
        "label": "Foreign Currency Transaction Gain (Loss), before Tax",
        "terseLabel": "Foreign currency gain (loss)"
       }
      }
     },
     "localname": "ForeignCurrencyTransactionGainLossBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock": {
     "auth_ref": [
      "r651"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy.",
        "label": "Foreign Currency Transactions and Translations Policy [Policy Text Block]",
        "terseLabel": "Foreign Currency"
       }
      }
     },
     "localname": "ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FurnitureAndFixturesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Equipment commonly used in offices and stores that have no permanent connection to the structure of a building or utilities. Examples include, but are not limited to, desks, chairs, tables, and bookcases.",
        "label": "Furniture and Fixtures [Member]",
        "terseLabel": "Furniture and Fixtures [Member]"
       }
      }
     },
     "localname": "FurnitureAndFixturesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_GainLossOnDispositionOfAssets1": {
     "auth_ref": [
      "r110"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of gain (loss) on sale or disposal of assets, including but not limited to property plant and equipment, intangible assets and equity in securities of subsidiaries or equity method investee.",
        "label": "Gain (Loss) on Disposition of Assets",
        "negatedTerseLabel": "Loss on disposition of property, plant and equipment"
       }
      }
     },
     "localname": "GainLossOnDispositionOfAssets1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GainLossOnSaleOfInvestments": {
     "auth_ref": [
      "r110"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 11.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The net realized gain (loss) on investments sold during the period, not including gains (losses) on securities separately or otherwise categorized as trading, available-for-sale, or held-to-maturity, which, for cash flow reporting, is a component of proceeds from investing activities.",
        "label": "Gain (Loss) on Sale of Investments",
        "negatedLabel": "Realized gain on sale of investments"
       }
      }
     },
     "localname": "GainLossOnSaleOfInvestments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GainLossOnSaleOfPropertyPlantEquipment": {
     "auth_ref": [
      "r110"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 2.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 (Loss) on Disposition of Property Plant Equipment"
       }
      }
     },
     "localname": "GainLossOnSaleOfPropertyPlantEquipment",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Goodwill": {
     "auth_ref": [
      "r298",
      "r299",
      "r672",
      "r721"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 6.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",
        "periodEndLabel": "Goodwill, Ending Balance",
        "periodStartLabel": "Goodwill, Beginning Balance",
        "terseLabel": "Goodwill"
       }
      }
     },
     "localname": "Goodwill",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Goodwill and Intangible Assets Disclosure [Abstract]",
        "terseLabel": "Goodwill and Intangible Assets Disclosure [Abstract]"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": {
     "auth_ref": [
      "r302"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.",
        "label": "Goodwill and Intangible Assets, Goodwill, Policy [Policy Text Block]",
        "terseLabel": "Goodwill"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsGoodwillPolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillDisclosureTextBlock": {
     "auth_ref": [
      "r304"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for goodwill.",
        "label": "Goodwill Disclosure [Text Block]",
        "terseLabel": "Goodwill"
       }
      }
     },
     "localname": "GoodwillDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/Goodwill"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillForeignCurrencyTranslationGainLoss": {
     "auth_ref": [
      "r300"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) an asset representing future economic benefits from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "Goodwill, Foreign Currency Translation Gain (Loss)",
        "terseLabel": "Foreign exchange rate changes"
       }
      }
     },
     "localname": "GoodwillForeignCurrencyTranslationGainLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillLineItems": {
     "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": "Goodwill [Line Items]",
        "terseLabel": "Goodwill [Line Items]"
       }
      }
     },
     "localname": "GoodwillLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_GoodwillOtherIncreaseDecrease": {
     "auth_ref": [
      "r301"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease), classified as other, of an asset representing the future economic benefits from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "Goodwill, Other Increase (Decrease)",
        "terseLabel": "Goodwill, Other Increase (Decrease)"
       }
      }
     },
     "localname": "GoodwillOtherIncreaseDecrease",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillRollForward": {
     "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": "Goodwill [Roll Forward]",
        "terseLabel": "Goodwill [Roll Forward]"
       }
      }
     },
     "localname": "GoodwillRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_GrossProfit": {
     "auth_ref": [
      "r94",
      "r125",
      "r205",
      "r208",
      "r211",
      "r214",
      "r217",
      "r264",
      "r366",
      "r367",
      "r368",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r632"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 1.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 margin"
       }
      }
     },
     "localname": "GrossProfit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GuaranteesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Guarantees [Abstract]",
        "terseLabel": "Guarantees [Abstract]"
       }
      }
     },
     "localname": "GuaranteesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_HedgingDesignationAxis": {
     "auth_ref": [
      "r591",
      "r603"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by designation of purpose of derivative instrument.",
        "label": "Hedging Designation [Axis]",
        "terseLabel": "Hedging Designation [Axis]"
       }
      }
     },
     "localname": "HedgingDesignationAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails",
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails",
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails",
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_HedgingDesignationDomain": {
     "auth_ref": [
      "r591"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Designation of purpose of derivative instrument.",
        "label": "Hedging Designation [Domain]",
        "terseLabel": "Hedging Designation [Domain]"
       }
      }
     },
     "localname": "HedgingDesignationDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails",
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails",
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails",
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill": {
     "auth_ref": [
      "r110",
      "r317"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 7.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      },
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 5.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of impairment loss recognized in the period resulting from the write-down of the carrying amount of an intangible asset (excluding goodwill) to fair value.",
        "label": "Impairment of Intangible Assets (Excluding Goodwill)",
        "terseLabel": "Intangible asset impairment charges"
       }
      }
     },
     "localname": "ImpairmentOfIntangibleAssetsExcludingGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill": {
     "auth_ref": [
      "r110",
      "r317"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of impairment loss resulting from write-down of assets, excluding financial assets and goodwill, lacking physical substance and having a projected indefinite period of benefit to fair value.",
        "label": "Impairment of Intangible Assets, Indefinite-lived (Excluding Goodwill)",
        "terseLabel": "Intangible asset impairment charges"
       }
      }
     },
     "localname": "ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InProcessResearchAndDevelopmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "In process investigation of new knowledge useful in developing new product or service or new process or technique or improvement to existing product or process, and translation of knowledge into plan or design for new product or process or for improvement to existing product or process.",
        "label": "In Process Research and Development [Member]",
        "terseLabel": "In Process Research and Development [Member]"
       }
      }
     },
     "localname": "InProcessResearchAndDevelopmentMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic": {
     "auth_ref": [
      "r127",
      "r552"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Domestic",
        "terseLabel": "Domestic income from continuing operations before taxes"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "auth_ref": [
      "r88",
      "r205",
      "r208",
      "r211",
      "r214",
      "r217",
      "r720",
      "r730",
      "r734",
      "r753"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "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",
        "terseLabel": "Income before income tax expense",
        "totalLabel": "Income before income tax expense (benefit)"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign": {
     "auth_ref": [
      "r127",
      "r552"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Foreign",
        "terseLabel": "Foreign income from continuing operations before taxes"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "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/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationAxis": {
     "auth_ref": [
      "r326",
      "r332"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by location in the income statement.",
        "label": "Income Statement Location [Axis]",
        "terseLabel": "Income Statement Location [Axis]",
        "verboseLabel": "Schedule of Employee Service Share-Based Compensation, Allocation of Recognized Period Costs, by Report Line [Axis]"
       }
      }
     },
     "localname": "IncomeStatementLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationDomain": {
     "auth_ref": [
      "r332"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location in the income statement.",
        "label": "Income Statement Location [Domain]",
        "terseLabel": "Income Statement Location [Domain]",
        "verboseLabel": "Employee Service Share-based Compensation, Allocation of Recognized Period Costs, Report Line [Domain]"
       }
      }
     },
     "localname": "IncomeStatementLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxAuthorityAxis": {
     "auth_ref": [
      "r521"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by tax jurisdiction.",
        "label": "Income Tax Authority [Axis]",
        "terseLabel": "Income Tax Authority [Axis]"
       }
      }
     },
     "localname": "IncomeTaxAuthorityAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxAuthorityDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Agency, division or body classification that levies income taxes, examines tax returns for compliance, or grants exemptions from or makes other decisions pertaining to income taxes.",
        "label": "Income Tax Authority [Domain]",
        "terseLabel": "Income Tax Authority [Domain]"
       }
      }
     },
     "localname": "IncomeTaxAuthorityDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxAuthorityNameAxis": {
     "auth_ref": [
      "r521"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by name of taxing authority.",
        "label": "Income Tax Authority, Name [Axis]",
        "terseLabel": "Income Tax Authority, Name [Axis]"
       }
      }
     },
     "localname": "IncomeTaxAuthorityNameAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxAuthorityNameDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Named agency, division or body that levies income taxes, examines tax returns for compliance, or grants exemptions from or makes other decisions pertaining to income taxes.",
        "label": "Income Tax Authority, Name [Domain]",
        "terseLabel": "Income Tax Authority, Name [Domain]"
       }
      }
     },
     "localname": "IncomeTaxAuthorityNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax Disclosure [Abstract]",
        "terseLabel": "Income Tax Disclosure [Abstract]"
       }
      }
     },
     "localname": "IncomeTaxDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "auth_ref": [
      "r128",
      "r518",
      "r527",
      "r534",
      "r547",
      "r554",
      "r556",
      "r557",
      "r558"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxes"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r129",
      "r158",
      "r159",
      "r204",
      "r516",
      "r548",
      "r555",
      "r754"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 1.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0
      },
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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": "Income tax expense on continuing operations",
        "totalLabel": "Income tax expense (benefit), continuing operations, Total",
        "verboseLabel": "Income tax expense (benefit)"
       }
      }
     },
     "localname": "IncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxPolicyTextBlock": {
     "auth_ref": [
      "r83",
      "r512",
      "r513",
      "r527",
      "r528",
      "r533",
      "r541"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.",
        "label": "Income Tax, Policy [Policy Text Block]",
        "terseLabel": "Taxes"
       }
      }
     },
     "localname": "IncomeTaxPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential": {
     "auth_ref": [
      "r517"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax expense (benefit).",
        "label": "Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Amount",
        "terseLabel": "Discrete tax benefit for changes to international tax structure"
       }
      }
     },
     "localname": "IncomeTaxReconciliationForeignIncomeTaxRateDifferential",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationTaxSettlementsForeign": {
     "auth_ref": [
      "r517"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax settlement.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Settlement, Foreign, Amount",
        "terseLabel": "1. Effective income tax rate reconciliation, tax settlement, foreign, amount"
       }
      }
     },
     "localname": "IncomeTaxReconciliationTaxSettlementsForeign",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesPaidNet": {
     "auth_ref": [
      "r114"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income, net of any cash received during the current period as refunds for the overpayment of taxes.",
        "label": "Income Taxes Paid, Net",
        "terseLabel": "Income tax paid net"
       }
      }
     },
     "localname": "IncomeTaxesPaidNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 17.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 14.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 19.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": "Accrued income taxes"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccruedIncomeTaxesPayable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccruedLiabilities": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 18.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 expenses incurred but not yet paid.",
        "label": "Increase (Decrease) in Accrued Liabilities",
        "terseLabel": "Accrued expenses"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccruedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerAsset": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 15.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in right to consideration in exchange for good or service transferred to customer when right is conditioned on something other than passage of time.",
        "label": "Increase (Decrease) in Contract with Customer, Asset",
        "negatedTerseLabel": "Unbilled revenue"
       }
      }
     },
     "localname": "IncreaseDecreaseInContractWithCustomerAsset",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerLiability": {
     "auth_ref": [
      "r109",
      "r708"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 20.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in obligation to transfer good or service to customer for which consideration has been received or is receivable.",
        "label": "Increase (Decrease) in Contract with Customer, Liability",
        "terseLabel": "Deferred revenue and customer deposits"
       }
      }
     },
     "localname": "IncreaseDecreaseInContractWithCustomerLiability",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInDeferredIncomeTaxes": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 13.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the account that represents the temporary difference that results from Income or Loss that is recognized for accounting purposes but not for tax purposes and vice versa.",
        "label": "Increase (Decrease) in Deferred Income Taxes",
        "negatedLabel": "Change in deferred income taxes"
       }
      }
     },
     "localname": "IncreaseDecreaseInDeferredIncomeTaxes",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInInventories": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 16.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 21.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in operating assets after deduction of operating liabilities classified as other.",
        "label": "Increase (Decrease) in Other Operating Assets and Liabilities, Net",
        "negatedLabel": "Other"
       }
      }
     },
     "localname": "IncreaseDecreaseInOtherOperatingCapitalNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "auth_ref": [
      "r109"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 1.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",
        "negatedTerseLabel": "Prepaid expenses and other current assets"
       }
      }
     },
     "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r308",
      "r315"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type or class of assets, excluding financial assets and goodwill, lacking physical substance and having a projected indefinite period of benefit.",
        "label": "Indefinite-lived Intangible Assets [Axis]",
        "terseLabel": "Indefinite-lived Intangible Assets [Axis]"
       }
      }
     },
     "localname": "IndefiniteLivedIntangibleAssetsByMajorClassAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r308",
      "r315"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The major class of indefinite-lived intangible asset (for example, trade names, etc. but not all-inclusive), excluding goodwill. 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 the company.",
        "label": "Indefinite-lived Intangible Assets, Major Class Name [Domain]",
        "terseLabel": "Indefinite-lived Intangible Assets, Major Class Name [Domain]"
       }
      }
     },
     "localname": "IndefiniteLivedIntangibleAssetsMajorClassNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IntangibleAssetsDisclosureTextBlock": {
     "auth_ref": [
      "r321"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for all or part of the information related to intangible assets.",
        "label": "Intangible Assets Disclosure [Text Block]",
        "terseLabel": "Intangible Assets"
       }
      }
     },
     "localname": "IntangibleAssetsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssets"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IntangibleAssetsFiniteLivedPolicy": {
     "auth_ref": [
      "r119",
      "r311",
      "r711",
      "r712",
      "r713",
      "r715"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for finite-lived intangible assets. This accounting policy also might address: (1) the amortization method used; (2) the useful lives of such assets; and (3) how the entity assesses and measures impairment of such assets.",
        "label": "Intangible Assets, Finite-Lived, Policy [Policy Text Block]",
        "terseLabel": "Intangible Assets"
       }
      }
     },
     "localname": "IntangibleAssetsFiniteLivedPolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IntangibleAssetsNetExcludingGoodwill": {
     "auth_ref": [
      "r305",
      "r310"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 5.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the carrying amounts of all intangible assets, excluding goodwill, as of the balance sheet date, net of accumulated amortization and impairment charges.",
        "label": "Intangible Assets, Net (Excluding Goodwill)",
        "terseLabel": "Intangible Assets, Net (Excluding Goodwill)"
       }
      }
     },
     "localname": "IntangibleAssetsNetExcludingGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IntangibleAssetsNetIncludingGoodwill": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount of finite-lived intangible assets, indefinite-lived intangible assets and goodwill. Goodwill is an asset representing the future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized. Intangible assets are assets, not including financial assets, lacking physical substance.",
        "label": "Intangible Assets, Net (Including Goodwill)",
        "terseLabel": "Intangible Assets, Net (Including Goodwill)"
       }
      }
     },
     "localname": "IntangibleAssetsNetIncludingGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InterestReceivable": {
     "auth_ref": [
      "r57"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount as of the balance sheet date of interest earned but not received. Also called accrued interest or accrued interest receivable.",
        "label": "Interest Receivable",
        "terseLabel": "Interest Receivable"
       }
      }
     },
     "localname": "InterestReceivable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InternalUseSoftwarePolicy": {
     "auth_ref": [
      "r318",
      "r320"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for costs incurred when both (1) the software is acquired, internally developed, or modified solely to meet the entity's internal needs, and (2) during the software's development or modification, no substantive plan exists or is being developed to market the software externally.",
        "label": "Internal Use Software, Policy [Policy Text Block]",
        "terseLabel": "Internal Use Software, Policy"
       }
      }
     },
     "localname": "InternalUseSoftwarePolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Inventory Disclosure [Abstract]",
        "terseLabel": "Inventory Disclosure [Abstract]"
       }
      }
     },
     "localname": "InventoryDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_InventoryDisclosureTextBlock": {
     "auth_ref": [
      "r296"
     ],
     "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]",
        "verboseLabel": "Inventories"
       }
      }
     },
     "localname": "InventoryDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/Inventories"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryFinishedGoodsNetOfReserves": {
     "auth_ref": [
      "r31",
      "r295"
     ],
     "calculation": {
      "http://cognex.com/role/InventoriesInventoriesDetail": {
       "order": 3.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of merchandise or goods held by the company that are readily available for sale.",
        "label": "Inventory, Finished Goods, Net of Reserves",
        "terseLabel": "Finished goods"
       }
      }
     },
     "localname": "InventoryFinishedGoodsNetOfReserves",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/InventoriesInventoriesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryNet": {
     "auth_ref": [
      "r5",
      "r55",
      "r672"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 4.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      },
      "http://cognex.com/role/InventoriesInventoriesDetail": {
       "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": "Inventories",
        "totalLabel": "Inventories"
       }
      }
     },
     "localname": "InventoryNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/InventoriesInventoriesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryPolicyTextBlock": {
     "auth_ref": [
      "r12",
      "r56",
      "r120",
      "r180",
      "r293",
      "r294",
      "r296",
      "r709"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of inventory accounting policy for inventory classes, including, but not limited to, basis for determining inventory amounts, methods by which amounts are added and removed from inventory classes, loss recognition on impairment of inventories, and situations in which inventories are stated above cost.",
        "label": "Inventory, Policy [Policy Text Block]",
        "terseLabel": "Inventories"
       }
      }
     },
     "localname": "InventoryPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryRawMaterialsNetOfReserves": {
     "auth_ref": [
      "r33",
      "r295"
     ],
     "calculation": {
      "http://cognex.com/role/InventoriesInventoriesDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount, net of valuation reserves and adjustments, as of the balance sheet date of unprocessed items to be consumed in the manufacturing or production process.",
        "label": "Inventory, Raw Materials, Net of Reserves",
        "terseLabel": "Raw materials"
       }
      }
     },
     "localname": "InventoryRawMaterialsNetOfReserves",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/InventoriesInventoriesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryWorkInProcessNetOfReserves": {
     "auth_ref": [
      "r32",
      "r295"
     ],
     "calculation": {
      "http://cognex.com/role/InventoriesInventoriesDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_InventoryNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount, net of reserves and adjustments, as of the balance sheet date of merchandise or goods which are partially completed. This inventory is generally comprised of raw materials, labor and factory overhead costs, which require further materials, labor and overhead to be converted into finished goods, and which generally require the use of estimates to determine percentage complete and pricing.",
        "label": "Inventory, Work in Process, Net of Reserves",
        "terseLabel": "Work-in-process"
       }
      }
     },
     "localname": "InventoryWorkInProcessNetOfReserves",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/InventoriesInventoriesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InvestmentIncomeNonoperating": {
     "auth_ref": [
      "r97"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 3.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate amount of income from investments (for example, dividends) not considered a component of the entity's core operations.",
        "label": "Investment Income, Nonoperating",
        "terseLabel": "Investment income"
       }
      }
     },
     "localname": "InvestmentIncomeNonoperating",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InvestmentPolicyTextBlock": {
     "auth_ref": [
      "r263",
      "r752"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for investment in financial asset.",
        "label": "Investment, Policy [Policy Text Block]",
        "terseLabel": "Investment, Policy"
       }
      }
     },
     "localname": "InvestmentPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InvestmentTypeAxis": {
     "auth_ref": [
      "r774",
      "r775",
      "r776",
      "r777",
      "r778",
      "r779",
      "r780",
      "r781",
      "r782",
      "r783",
      "r784",
      "r785",
      "r786",
      "r787",
      "r788"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of investments.",
        "label": "Investment Type [Axis]",
        "terseLabel": "Investment Type [Axis]"
       }
      }
     },
     "localname": "InvestmentTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_InvestmentTypeCategorizationMember": {
     "auth_ref": [
      "r774",
      "r775",
      "r776",
      "r777",
      "r778",
      "r779",
      "r780",
      "r781",
      "r782",
      "r783",
      "r784",
      "r785",
      "r786",
      "r787",
      "r788"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Asset obtained to generate income or appreciate in value.",
        "label": "Investments [Domain]",
        "terseLabel": "Investment Type Categorization [Domain]"
       }
      }
     },
     "localname": "InvestmentTypeCategorizationMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "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": "Effective Maturity Dates of Available-for-Sale Investments"
       }
      }
     },
     "localname": "InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for cash, cash equivalents, investments in debt and equity instruments (including cost and equity investees and related income statement amounts), equity and cost method investments, investments in joint ventures and any other investment.",
        "label": "Investments in Debt and Equity Instruments, Cash and Cash Equivalents, Unrealized and Realized Gains (Losses) [Text Block]",
        "terseLabel": "Cash, Cash Equivalents, and Investments"
       }
      }
     },
     "localname": "InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestments"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LandMember": {
     "auth_ref": [
      "r424"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Part of earth's surface not covered by water.",
        "label": "Land [Member]",
        "terseLabel": "Land [Member]"
       }
      }
     },
     "localname": "LandMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeaseholdImprovementsMember": {
     "auth_ref": [
      "r323"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Additions or improvements to assets held under a lease arrangement.",
        "label": "Leasehold Improvements [Member]",
        "verboseLabel": "Leasehold Improvements [Member]"
       }
      }
     },
     "localname": "LeaseholdImprovementsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeasesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Leases [Abstract]",
        "terseLabel": "New Accounting Pronouncements or Change in Accounting Principle [Table]"
       }
      }
     },
     "localname": "LeasesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_LesseeLeaseDescriptionLineItems": {
     "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": "Lessee, Lease, Description [Line Items]",
        "terseLabel": "Lessee, Lease, Description [Line Items]"
       }
      }
     },
     "localname": "LesseeLeaseDescriptionLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LesseeLeaseDescriptionTable": {
     "auth_ref": [
      "r659"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about lessee's leases.",
        "label": "Lessee, Lease, Description [Table]",
        "terseLabel": "Lessee, Lease, Description [Table]"
       }
      }
     },
     "localname": "LesseeLeaseDescriptionTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LesseeLeasesPolicyTextBlock": {
     "auth_ref": [
      "r658"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for leasing arrangement entered into by lessee.",
        "label": "Lessee, Leases [Policy Text Block]",
        "terseLabel": "Lessee, Leases"
       }
      }
     },
     "localname": "LesseeLeasesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": {
     "auth_ref": [
      "r663"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position.",
        "label": "Lessee, Operating Lease, Liability, Maturity [Table Text Block]",
        "terseLabel": "Schedule of lease payments"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "auth_ref": [
      "r663"
     ],
     "calculation": {
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease.",
        "label": "Lessee, Operating Lease, Liability, to be Paid",
        "terseLabel": "Lessee, Operating Lease, Liability, Payments, Due",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails",
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": {
     "auth_ref": [
      "r663"
     ],
     "calculation": {
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease due after 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": "Lessee, Operating Lease, Liability, to be Paid, after Year Five",
        "terseLabel": "Thereafter"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "auth_ref": [
      "r663"
     ],
     "calculation": {
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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": "Lessee, Operating Lease, Liability, to be Paid, Year One",
        "terseLabel": "2022"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails",
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": {
     "auth_ref": [
      "r663"
     ],
     "calculation": {
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in 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": "Lessee, Operating Lease, Liability, to be Paid, Year Five",
        "terseLabel": "2026"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "auth_ref": [
      "r663"
     ],
     "calculation": {
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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": "Lessee, Operating Lease, Liability, to be Paid, Year Four",
        "terseLabel": "2025"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "auth_ref": [
      "r663"
     ],
     "calculation": {
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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": "Lessee, Operating Lease, Liability, to be Paid, Year Three",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "auth_ref": [
      "r663"
     ],
     "calculation": {
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid 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": "Lessee, Operating Lease, Liability, to be Paid, Year Two",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "auth_ref": [
      "r663"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.",
        "label": "Lessee, Operating Lease, Liability, Undiscounted Excess Amount",
        "terseLabel": "Lessee, Operating Lease, Liability, Undiscounted Excess Amount"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeasesTextBlock": {
     "auth_ref": [
      "r665"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for operating leases of lessee. Includes, but is not limited to, description of operating lease and maturity analysis of operating lease liability.",
        "label": "Lessee, Operating Leases [Text Block]",
        "terseLabel": "Leases"
       }
      }
     },
     "localname": "LesseeOperatingLeasesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesLeases"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_Liabilities": {
     "auth_ref": [
      "r48",
      "r125",
      "r210",
      "r264",
      "r366",
      "r367",
      "r368",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r579",
      "r583",
      "r584",
      "r632",
      "r670",
      "r671"
     ],
     "calculation": {
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "auth_ref": [
      "r30",
      "r125",
      "r264",
      "r632",
      "r672",
      "r726",
      "r746"
     ],
     "calculation": {
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Liabilities and Equity [Abstract]",
        "terseLabel": "LIABILITIES AND SHAREHOLDERS\u2019 EQUITY"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilitiesCurrent": {
     "auth_ref": [
      "r50",
      "r125",
      "r264",
      "r366",
      "r367",
      "r368",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r579",
      "r583",
      "r584",
      "r632",
      "r670",
      "r671",
      "r672"
     ],
     "calculation": {
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilitiesFairValueAdjustment": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of addition (reduction) to the amount at which a liability could be incurred (settled) in a current transaction between willing parties.",
        "label": "Liabilities, Fair Value Adjustment",
        "terseLabel": "Fair value adjustment"
       }
      }
     },
     "localname": "LiabilitiesFairValueAdjustment",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesFairValueDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Liabilities, Fair Value Disclosure [Abstract]",
        "terseLabel": "Liabilities:"
       }
      }
     },
     "localname": "LiabilitiesFairValueDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilityForUncertainTaxPositionsNoncurrent": {
     "auth_ref": [
      "r51"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 3.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount recognized for uncertainty in income taxes classified as noncurrent.",
        "label": "Liability for Uncertainty in Income Taxes, Noncurrent",
        "terseLabel": "Reserve for income taxes"
       }
      }
     },
     "localname": "LiabilityForUncertainTaxPositionsNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LongTermInvestments": {
     "auth_ref": [
      "r40"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 2.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      },
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail": {
       "order": 3.0,
       "parentTag": "cgnx_CashCashEquivalentsShortTermAndLongTermInvestments",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The total amount of investments that are intended to be held for an extended period of time (longer than one operating cycle).",
        "label": "Long-term Investments",
        "terseLabel": "Non-current investments, amortized cost of $587,981 and $390,417 in 2021 and 2020, respectively, allowance for credit losses of $0 in 2021 and 2020",
        "totalLabel": "Non-current investments"
       }
      }
     },
     "localname": "LongTermInvestments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Maximum amount of time remaining before foreign currency exchange rate derivatives mature or expire, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Maximum Remaining Maturity of Foreign Currency Derivatives",
        "terseLabel": "Maturities of forward of contracts"
       }
      }
     },
     "localname": "MaximumRemainingMaturityOfForeignCurrencyDerivatives1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_MoneyMarketFundsAtCarryingValue": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_CashAndCashEquivalentsAtCarryingValue",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Investment in short-term money-market instruments (such as commercial paper, banker's acceptances, repurchase agreements, government securities, certificates of deposit, and so forth) which are highly liquid (that is, readily convertible to known amounts of cash) and so near their maturity that they present an insignificant risk of changes in value because of changes in interest rates. Generally, only investments with original maturities of three months or less qualify as cash equivalents by definition. Original maturity means an original maturity to the entity holding the investment. For example, both a three-month US Treasury bill and a three-year Treasury note purchased three months from maturity qualify as cash equivalents. However, a Treasury note purchased three-years ago does not become a cash equivalent when its remaining maturity is three months.",
        "label": "Money Market Funds, at Carrying Value",
        "terseLabel": "Money market instruments"
       }
      }
     },
     "localname": "MoneyMarketFundsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_MovementInStandardProductWarrantyAccrualRollForward": {
     "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": "Movement in Standard Product Warranty Accrual [Roll Forward]",
        "terseLabel": "Movement in Standard Product Warranty Accrual [Roll Forward]"
       }
      }
     },
     "localname": "MovementInStandardProductWarrantyAccrualRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_MovementInValuationAllowancesAndReservesRollForward": {
     "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": "SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]",
        "terseLabel": "SEC Schedule, 12-09, Movement in Valuation Allowances and Reserves [Roll Forward]"
       }
      }
     },
     "localname": "MovementInValuationAllowancesAndReservesRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_MunicipalBondsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Long-term debt securities issued by state, city or local governments or the agencies operated by state, city or local governments.",
        "label": "Municipal Bonds [Member]",
        "terseLabel": "Municipal Bonds [Member]"
       }
      }
     },
     "localname": "MunicipalBondsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "auth_ref": [
      "r107"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 3.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",
        "negatedTerseLabel": "Net cash used in financing activities",
        "totalLabel": "Net cash used in financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net Cash Provided by (Used in) Financing Activities [Abstract]",
        "terseLabel": "Cash flows from financing activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "auth_ref": [
      "r107"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 2.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net Cash Provided by (Used in) Investing Activities [Abstract]",
        "terseLabel": "Cash flows from investing activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "auth_ref": [
      "r107",
      "r108",
      "r111"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 1.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",
        "terseLabel": "Net cash provided by operating activities",
        "totalLabel": "Net cash provided by operating activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Net Cash Provided by (Used in) Operating Activities [Abstract]",
        "terseLabel": "Cash flows from operating activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetIncomeLoss": {
     "auth_ref": [
      "r3",
      "r77",
      "r80",
      "r86",
      "r89",
      "r111",
      "r125",
      "r146",
      "r150",
      "r151",
      "r153",
      "r154",
      "r158",
      "r159",
      "r168",
      "r205",
      "r208",
      "r211",
      "r214",
      "r217",
      "r264",
      "r366",
      "r367",
      "r368",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r375",
      "r376",
      "r614",
      "r632",
      "r731",
      "r749"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      },
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "order": 1.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      },
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "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) Attributable to Parent",
        "terseLabel": "Net income",
        "totalLabel": "Net income",
        "verboseLabel": "Net income"
       }
      }
     },
     "localname": "NetIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock": {
     "auth_ref": [
      "r2",
      "r144",
      "r145",
      "r148",
      "r149",
      "r160",
      "r161",
      "r162",
      "r236",
      "r237",
      "r266",
      "r267",
      "r431",
      "r432",
      "r433",
      "r434",
      "r500",
      "r544",
      "r545",
      "r546",
      "r611",
      "r633",
      "r634",
      "r635",
      "r669",
      "r716",
      "r717",
      "r718",
      "r765",
      "r766",
      "r767",
      "r768",
      "r770",
      "r837"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for change in accounting principle. Includes, but is not limited to, nature, reason, and method of adopting amendment to accounting standards or other change in accounting principle.",
        "label": "Accounting Standards Update and Change in Accounting Principle [Text Block]",
        "terseLabel": "New Pronouncements"
       }
      }
     },
     "localname": "NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/NewPronouncements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.",
        "label": "New Accounting Pronouncements, Policy [Policy Text Block]",
        "terseLabel": "New Accounting Pronouncements, Policy"
       }
      }
     },
     "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/NewPronouncementsPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NoncompeteAgreementsMember": {
     "auth_ref": [
      "r564"
     ],
     "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 agreements"
       }
      }
     },
     "localname": "NoncompeteAgreementsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NoncurrentAssets": {
     "auth_ref": [
      "r221"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Long-lived assets other than financial instruments, long-term customer relationships of a financial institution, mortgage and other servicing rights, deferred policy acquisition costs, and deferred tax assets.",
        "label": "Long-Lived Assets",
        "terseLabel": "Long-lived assets"
       }
      }
     },
     "localname": "NoncurrentAssets",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NondesignatedMember": {
     "auth_ref": [
      "r591"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Derivative instrument not designated as hedging instrument under Generally Accepted Accounting Principles (GAAP).",
        "label": "Not Designated as Hedging Instrument [Member]",
        "terseLabel": "Not Designated as Hedging Instrument [Member]"
       }
      }
     },
     "localname": "NondesignatedMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails",
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails",
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails",
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock": {
     "auth_ref": [
      "r468"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the changes in outstanding nonvested restricted stock shares.",
        "label": "Nonvested Restricted Stock Shares Activity [Table Text Block]",
        "terseLabel": "Nonvested Restricted Stock Shares Activity [Table Text Block]"
       }
      }
     },
     "localname": "NonvestedRestrictedStockSharesActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NumberOfReportableSegments": {
     "auth_ref": [
      "r199"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of segments reported by the entity. A reportable segment is a component of an entity for which there is an accounting requirement to report separate financial information on that component in the entity's financial statements.",
        "label": "Number of Reportable Segments",
        "terseLabel": "Number of reportable segments"
       }
      }
     },
     "localname": "NumberOfReportableSegments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "integerItemType"
    },
    "us-gaap_OffsettingAssetsTableTextBlock": {
     "auth_ref": [
      "r62",
      "r63"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of derivative and other financial assets that are subject to offsetting, including master netting arrangements.",
        "label": "Offsetting Assets [Table Text Block]",
        "terseLabel": "Offsetting Assets"
       }
      }
     },
     "localname": "OffsettingAssetsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_OneTimeTerminationBenefitsMember": {
     "auth_ref": [
      "r330",
      "r331",
      "r341",
      "r342"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A lump sum payment to an involuntarily terminated employee in conjunction with exit or disposal activities.",
        "label": "One-time Termination Benefits [Member]",
        "terseLabel": "One-time Termination Benefits [Member]"
       }
      }
     },
     "localname": "OneTimeTerminationBenefitsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OperatingIncomeLoss": {
     "auth_ref": [
      "r205",
      "r208",
      "r211",
      "r214",
      "r217"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 1.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": "Operating income"
       }
      }
     },
     "localname": "OperatingIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseExpense": {
     "auth_ref": [
      "r656"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of operating lease expense. Excludes sublease income.",
        "label": "Operating Lease, Expense",
        "terseLabel": "Operating lease expense"
       }
      }
     },
     "localname": "OperatingLeaseExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseImpairmentLoss": {
     "auth_ref": [
      "r653"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 8.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of loss from impairment of right-of-use asset from operating lease.",
        "label": "Operating Lease, Impairment Loss",
        "terseLabel": "Operating Lease, Impairment Loss"
       }
      }
     },
     "localname": "OperatingLeaseImpairmentLoss",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLeaseIncome": {
     "auth_ref": [
      "r181",
      "r666",
      "r667"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of operating lease income from lease payments and variable lease payments paid and payable to lessor. Includes, but is not limited to, variable lease payments not included in measurement of lease receivable.",
        "label": "Operating Lease, Lease Income",
        "terseLabel": "Operating lease income"
       }
      }
     },
     "localname": "OperatingLeaseLeaseIncome",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiability": {
     "auth_ref": [
      "r655"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease.",
        "label": "Operating Lease, Liability",
        "terseLabel": "Operating lease, liability"
       }
      }
     },
     "localname": "OperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "auth_ref": [
      "r655"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 5.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": "Operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r655"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 6.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": "Non-current operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeasePayments": {
     "auth_ref": [
      "r657",
      "r660"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.",
        "label": "Operating Lease, Payments",
        "terseLabel": "Operating lease payments"
       }
      }
     },
     "localname": "OperatingLeasePayments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "auth_ref": [
      "r654"
     ],
     "calculation": {
      "http://cognex.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "auth_ref": [
      "r662",
      "r664"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average discount rate for operating lease calculated at point in time.",
        "label": "Operating Lease, Weighted Average Discount Rate, Percent",
        "terseLabel": "Operating lease, weighted average discount rate (percent)"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageDiscountRatePercent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "auth_ref": [
      "r661",
      "r664"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining lease term for operating lease, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Operating Lease, Weighted Average Remaining Lease Term",
        "terseLabel": "Operating lease, weighted average remaining lease term (years)"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_OperatingLeasesOfLessorDisclosureTextBlock": {
     "auth_ref": [
      "r668"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for lessor's operating leases.",
        "label": "Lessor, Operating Leases [Text Block]",
        "terseLabel": "Leases"
       }
      }
     },
     "localname": "OperatingLeasesOfLessorDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesLeases"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_OtherAccruedLiabilitiesCurrent": {
     "auth_ref": [
      "r9",
      "r10",
      "r11",
      "r49"
     ],
     "calculation": {
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail": {
       "order": 6.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expenses incurred but not yet paid classified as other, due within one year or the normal operating cycle, if longer.",
        "label": "Other Accrued Liabilities, Current",
        "terseLabel": "Other"
       }
      }
     },
     "localname": "OtherAccruedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "auth_ref": [
      "r45"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 7.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 assets"
       }
      }
     },
     "localname": "OtherAssetsNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r576",
      "r577",
      "r581"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "order": 1.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax and reclassification adjustments, of appreciation (loss) in value of unsold available-for-sale securities, attributable to parent entity. Excludes amounts related to other than temporary impairment (OTTI) loss.",
        "label": "Other Comprehensive Income (Loss), Available-for-sale Securities Adjustment, Net of Tax, Portion Attributable to Parent",
        "totalLabel": "Net change related to available-for-sale investments"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Other Comprehensive Income (Loss), Available-for-sale Securities Adjustment, Net of Tax, Portion Attributable to Parent [Abstract]",
        "terseLabel": "Available-for-sale investments:"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r576",
      "r577",
      "r581"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "order": 2.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": 1.0
      }
     },
     "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, attributable to parent entity.",
        "label": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent",
        "totalLabel": "Net change related to foreign currency translation adjustments"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax": {
     "auth_ref": [
      "r68",
      "r69",
      "r71"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after tax and adjustment, of 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) and 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, Gain (Loss), after Adjustment and Tax",
        "verboseLabel": "Net unrealized gain (loss) on available-for-sale investments, net of tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r67"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "order": 1.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent",
       "weight": 1.0
      }
     },
     "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 adjustments",
        "verboseLabel": "Foreign currency translation adjustments, net of tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax": {
     "auth_ref": [
      "r67",
      "r72",
      "r640",
      "r648"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of tax expense (benefit), 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 Translation Adjustment, Tax",
        "terseLabel": "Tax benefit of foreign currency translation adjustment"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r78",
      "r81",
      "r576",
      "r577",
      "r581"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "order": 2.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      }
     },
     "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",
        "totalLabel": "Other comprehensive income (loss), net of tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax": {
     "auth_ref": [
      "r71",
      "r75",
      "r76",
      "r259"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "order": 2.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount after tax of reclassification adjustment from accumulated other comprehensive income for unrealized gain (loss) realized upon the sale of available-for-sale securities.",
        "label": "Other Comprehensive Income (Loss), Reclassification Adjustment from AOCI for Sale of Securities, Net of Tax",
        "negatedLabel": "Reclassification of net realized (gain) loss into current operations",
        "negatedTerseLabel": "Reclassification of net realized (gain) loss on the sale of available-for-sale investments",
        "verboseLabel": "Net realized gains reclassified into current operations"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax": {
     "auth_ref": [
      "r68",
      "r71"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME": {
       "order": 1.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent",
       "weight": 1.0
      }
     },
     "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 gain (loss), net of tax of $(2,206), $981, and $515 in 2021, 2020, and 2019, respectively"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax": {
     "auth_ref": [
      "r69",
      "r72"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before adjustment, of tax expense (benefit) for 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 tax expense (benefit) for 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, Tax",
        "terseLabel": "Tax effect of unrealized gain (loss) on available-for-sale investments",
        "verboseLabel": "Tax effect of unrealized gain on available-for-sale investments"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherIntangibleAssetsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Intangible assets classified as other.",
        "label": "Other Intangible Assets [Member]",
        "terseLabel": "Non-compete Agreements [Member]"
       }
      }
     },
     "localname": "OtherIntangibleAssetsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OtherInventoryPurchasedGoods": {
     "auth_ref": [
      "r55"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Gross amount of components used by the entity which are bought from another entity rather than produced by the entity.",
        "label": "Other Inventory, Purchased Goods, Gross",
        "terseLabel": "Other Inventory, Purchased Goods, Gross"
       }
      }
     },
     "localname": "OtherInventoryPurchasedGoods",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "auth_ref": [
      "r51"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 5.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 liabilities"
       }
      }
     },
     "localname": "OtherLiabilitiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "auth_ref": [
      "r98"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 4.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 income (expense)"
       }
      }
     },
     "localname": "OtherNonoperatingIncomeExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherRestructuringMember": {
     "auth_ref": [
      "r330",
      "r331",
      "r341",
      "r342"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Restructuring and related activities classified as other.",
        "label": "Other Restructuring [Member]",
        "terseLabel": "Other Restructuring [Member]"
       }
      }
     },
     "localname": "OtherRestructuringMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings": {
     "auth_ref": [
      "r240"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of other-than-temporary impairment (OTTI) on investment in debt security measured at fair value with change in fair value recognized in other comprehensive income (available-for-sale), recognized in earnings.",
        "label": "Other-than-temporary Impairment Loss, Debt Securities, Available-for-sale, Recognized in Earnings",
        "terseLabel": "Credit losses"
       }
      }
     },
     "localname": "OtherThanTemporaryImpairmentLossDebtSecuritiesAvailableForSaleRecognizedInEarnings",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PayablesAndAccrualsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Payables and Accruals [Abstract]",
        "terseLabel": "Payables and Accruals [Abstract]"
       }
      }
     },
     "localname": "PayablesAndAccrualsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities": {
     "auth_ref": [
      "r105"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow, not made soon after acquisition date of business combination, to settle contingent consideration liability up to amount recognized at acquisition date, including, but not limited to, measurement period adjustment and less amount paid soon after acquisition date.",
        "label": "Payment for Contingent Consideration Liability, Financing Activities",
        "negatedTerseLabel": "Payment of Chiaro contingent consideration"
       }
      }
     },
     "localname": "PaymentForContingentConsiderationLiabilityFinancingActivities",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForProceedsFromPreviousAcquisition": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The net cash inflow or outflow associated with the aggregate amount of adjustment to the purchase price of a previous acquisition.",
        "label": "Payments for (Proceeds from) Previous Acquisition",
        "terseLabel": "Credit to goodwill"
       }
      }
     },
     "localname": "PaymentsForProceedsFromPreviousAcquisition",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/GoodwillAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "auth_ref": [
      "r104"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 2.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": "Repurchase of common stock"
       }
      }
     },
     "localname": "PaymentsForRepurchaseOfCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForRestructuring": {
     "auth_ref": [
      "r106",
      "r331"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash payments made as the result of exit or disposal activities. Excludes payments associated with a discontinued operation or an asset retirement obligation.",
        "label": "Payments for Restructuring",
        "negatedTerseLabel": "Cash payments"
       }
      }
     },
     "localname": "PaymentsForRestructuring",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsOfDividends": {
     "auth_ref": [
      "r104"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cash outflow in the form of capital distributions and dividends to common shareholders, preferred shareholders and noncontrolling interests.",
        "label": "Payments of Dividends",
        "terseLabel": "Payments of dividends"
       }
      }
     },
     "localname": "PaymentsOfDividends",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsOfDividendsCommonStock": {
     "auth_ref": [
      "r104"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow in the form of ordinary dividends to common shareholders of the parent entity.",
        "label": "Payments of Ordinary Dividends, Common Stock",
        "negatedLabel": "Payment of dividends"
       }
      }
     },
     "localname": "PaymentsOfDividendsCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesGross": {
     "auth_ref": [
      "r100",
      "r571"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.",
        "label": "Payments to Acquire Businesses, Gross",
        "terseLabel": "Cash paid in purchase price"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "auth_ref": [
      "r100"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.",
        "label": "Payments to Acquire Businesses, Net of Cash Acquired",
        "negatedTerseLabel": "Business acquisitions"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireInvestments": {
     "auth_ref": [
      "r102"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 1.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow associated with the purchase of all investments (debt, security, other) during the period.",
        "label": "Payments to Acquire Investments",
        "negatedLabel": "Purchases of investments"
       }
      }
     },
     "localname": "PaymentsToAcquireInvestments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "auth_ref": [
      "r101"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 3.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, plant, and equipment"
       }
      }
     },
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock": {
     "auth_ref": [
      "r437",
      "r439",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r460"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for retirement benefits.",
        "label": "Retirement Benefits [Text Block]",
        "terseLabel": "Employee Savings Plan"
       }
      }
     },
     "localname": "PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlan"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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 [Member]"
       }
      }
     },
     "localname": "PerformanceSharesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r22",
      "r385"
     ],
     "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)",
        "verboseLabel": "Preferred stock par value, in dollars per share"
       }
      }
     },
     "localname": "PreferredStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "auth_ref": [
      "r22"
     ],
     "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": "Authorized shares",
        "verboseLabel": "Preferred stock, shares authorized"
       }
      }
     },
     "localname": "PreferredStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesIssued": {
     "auth_ref": [
      "r22",
      "r385"
     ],
     "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, shares issued"
       }
      }
     },
     "localname": "PreferredStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesOutstanding": {
     "auth_ref": [
      "r22"
     ],
     "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, shares outstanding"
       }
      }
     },
     "localname": "PreferredStockSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockValueOutstanding": {
     "auth_ref": [
      "r22"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 5.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value of all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by shareholders, which is net of related treasury stock. May be all or a portion of the number of preferred shares authorized. These shares represent the ownership interest of the preferred shareholders.",
        "label": "Preferred Stock, Value, Outstanding",
        "terseLabel": "Preferred stock, $.01 par value - Authorized: 400 shares in 2021 and 2020, respectively, no shares issued and outstanding"
       }
      }
     },
     "localname": "PreferredStockValueOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "auth_ref": [
      "r7",
      "r37",
      "r38"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 5.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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing prepaid expenses and other current assets.",
        "label": "Prepaid Expenses and Other Current Assets [Member]",
        "terseLabel": "Prepaid Expenses and Other Current Assets [Member]"
       }
      }
     },
     "localname": "PrepaidExpensesAndOtherCurrentAssetsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions": {
     "auth_ref": [
      "r103",
      "r496"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 1.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": "Net proceeds from issuance of common stock under stock plans"
       }
      }
     },
     "localname": "ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments": {
     "auth_ref": [
      "r99"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash inflow associated with the sale, maturity and collection of all investments such as debt, security and so forth during the period.",
        "label": "Proceeds from Sale, Maturity and Collection of Investments",
        "terseLabel": "Maturities and sales of investments"
       }
      }
     },
     "localname": "ProceedsFromSaleMaturityAndCollectionsOfInvestments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductLiabilityContingencyLineItems": {
     "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": "Product Liability Contingency [Line Items]",
        "terseLabel": "Product Liability Contingency [Line Items]"
       }
      }
     },
     "localname": "ProductLiabilityContingencyLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ProductLiabilityContingencyTable": {
     "auth_ref": [
      "r350",
      "r351",
      "r352",
      "r353",
      "r354",
      "r355",
      "r356"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information and financial data about the reasonably possible loss or the recognized and additional reasonably possible loss from product liability related to an individual product.",
        "label": "Product Liability Contingency [Table]",
        "terseLabel": "Product Liability Contingency [Table]"
       }
      }
     },
     "localname": "ProductLiabilityContingencyTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ProductWarrantyAccrual": {
     "auth_ref": [
      "r363",
      "r364",
      "r728"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred through that date and payable for estimated claims under standard and extended warranty protection rights granted to customers.",
        "label": "Standard and Extended Product Warranty Accrual",
        "periodEndLabel": "Ending Balance",
        "periodStartLabel": "Beginning Balance"
       }
      }
     },
     "localname": "ProductWarrantyAccrual",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualClassifiedCurrent": {
     "auth_ref": [
      "r49",
      "r358",
      "r359"
     ],
     "calculation": {
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail": {
       "order": 3.0,
       "parentTag": "us-gaap_AccruedLiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred through that date and payable for estimated claims under standard and extended warranty protection rights granted to customers. For classified balance sheets, represents the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Product Warranty Accrual, Current",
        "terseLabel": "Warranty obligations"
       }
      }
     },
     "localname": "ProductWarrantyAccrualClassifiedCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualPayments": {
     "auth_ref": [
      "r360"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in the standard and extended product warranty accrual from payments made in cash or in kind to satisfy claims under the terms of the standard and extended product warranty.",
        "label": "Standard and Extended Product Warranty Accrual, Decrease for Payments",
        "negatedLabel": "Fulfillment of warranty obligations"
       }
      }
     },
     "localname": "ProductWarrantyAccrualPayments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualWarrantiesIssued": {
     "auth_ref": [
      "r361"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in the standard and extended product warranty accrual from warranties issued.",
        "label": "Standard and Extended Product Warranty Accrual, Increase for Warranties Issued",
        "terseLabel": "Provisions for warranties issued during the period"
       }
      }
     },
     "localname": "ProductWarrantyAccrualWarrantiesIssued",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property, Plant and Equipment [Abstract]",
        "terseLabel": "Property, Plant and Equipment [Abstract]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "auth_ref": [
      "r43",
      "r325"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of long-lived, physical assets used to produce goods and services and not intended for resale.",
        "label": "Long-Lived Tangible Asset [Axis]",
        "terseLabel": "Property, Plant and Equipment, Type [Axis]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock": {
     "auth_ref": [
      "r327",
      "r793",
      "r794",
      "r795"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.",
        "label": "Property, Plant and Equipment Disclosure [Text Block]",
        "terseLabel": "Property, Plant, and Equipment"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipment"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentDisposals": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of divestiture of long-lived, physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.",
        "label": "Property, Plant and Equipment, Disposals",
        "terseLabel": "Disposals in period"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentDisposals",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "auth_ref": [
      "r42",
      "r323"
     ],
     "calculation": {
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business 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, Gross",
        "terseLabel": "Property, plant and equipment, gross"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentGross",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentLineItems": {
     "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": "Property, Plant and Equipment [Line Items]",
        "terseLabel": "Property, Plant and Equipment [Line Items]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "auth_ref": [
      "r14",
      "r15",
      "r325",
      "r672",
      "r739",
      "r747"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 3.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      },
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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, plant, and equipment, net",
        "totalLabel": "Property, plant and equipment, net, total"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentNet",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": {
     "auth_ref": [
      "r41",
      "r325",
      "r793",
      "r794"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.",
        "label": "Property, Plant and Equipment, Policy [Policy Text Block]",
        "terseLabel": "Property, Plant, and Equipment"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "auth_ref": [
      "r14",
      "r325"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.",
        "label": "Property, Plant and Equipment [Table Text Block]",
        "terseLabel": "Property, Plant, and Equipment"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "auth_ref": [
      "r14",
      "r323"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Listing of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale. Examples include land, buildings, machinery and equipment, and other types of furniture and equipment including, but not limited to, office equipment, furniture and fixtures, and computer equipment and software.",
        "label": "Long-Lived Tangible Asset [Domain]",
        "terseLabel": "Property, Plant and Equipment, Type [Domain]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentUsefulLife": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.",
        "label": "Property, Plant and Equipment, Useful Life",
        "terseLabel": "Property, Plant and Equipment, Useful Life"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAxis": {
     "auth_ref": [
      "r652"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by property that could be leased or is available for lease.",
        "label": "Property Subject to or Available for Operating Lease [Axis]",
        "terseLabel": "Property Subject to or Available for Operating Lease [Axis]"
       }
      }
     },
     "localname": "PropertySubjectToOrAvailableForOperatingLeaseAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertySubjectToOrAvailableForOperatingLeaseDomain": {
     "auth_ref": [
      "r652"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A descriptive title of whether the property is subject to or available for operating lease.",
        "label": "Property Subject to or Available for Operating Lease [Domain]",
        "terseLabel": "Property Subject to or Available for Operating Lease [Domain]"
       }
      }
     },
     "localname": "PropertySubjectToOrAvailableForOperatingLeaseDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ProvisionForDoubtfulAccounts": {
     "auth_ref": [
      "r92",
      "r273"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense (reversal of expense) for expected credit loss on accounts receivable.",
        "label": "Accounts Receivable, Credit Loss Expense (Reversal)",
        "terseLabel": "Increases to the allowance for credit losses"
       }
      }
     },
     "localname": "ProvisionForDoubtfulAccounts",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted": {
     "auth_ref": [
      "r18",
      "r725",
      "r743"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Minimum amount to be expended to satisfy the terms of arrangements in which the entity has agreed to expend funds to procure goods or services, excluding long-term purchase commitments or unconditional purchase obligations.",
        "label": "Purchase Commitment, Remaining Minimum Amount Committed",
        "terseLabel": "Purchase order outstanding"
       }
      }
     },
     "localname": "PurchaseCommitmentRemainingMinimumAmountCommitted",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward": {
     "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": "Reconciliation of Unrecognized Tax Benefits, Excluding Amounts Pertaining to Examined Tax Returns [Roll Forward]",
        "terseLabel": "Reconciliation of Unrecognized Tax Benefits, Excluding Amounts Pertaining to Examined Tax Returns [Roll Forward]"
       }
      }
     },
     "localname": "ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpense": {
     "auth_ref": [
      "r510",
      "r710",
      "r807"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 2.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "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, development, and engineering expenses"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpenseMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption in which the reported facts about research and development expense have been included.",
        "label": "Research and Development Expense [Member]",
        "terseLabel": "Research, development, and engineering expenses"
       }
      }
     },
     "localname": "ResearchAndDevelopmentExpenseMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock": {
     "auth_ref": [
      "r44",
      "r318",
      "r319",
      "r807"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for its research and development and computer software activities including the accounting treatment for costs incurred for (1) research and development activities, (2) development of computer software for internal use, (3) computer software to be sold, leased or otherwise marketed as a separate product or as part of a product or process and (4) in-process research and development acquired in a purchase business combination.",
        "label": "Research, Development, and Computer Software, Policy [Policy Text Block]",
        "terseLabel": "Research and Development"
       }
      }
     },
     "localname": "ResearchDevelopmentAndComputerSoftwarePolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ResearchMember": {
     "auth_ref": [
      "r536"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Research tax credit carryforwards arising from certain qualifying expenditures incurred to develop new products and processes.",
        "label": "Research Tax Credit Carryforward [Member]",
        "terseLabel": "Research Tax Credit Carryforward [Member]"
       }
      }
     },
     "localname": "ResearchMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestrictedStockMember": {
     "auth_ref": [
      "r172"
     ],
     "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 [Member]"
       }
      }
     },
     "localname": "RestrictedStockMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail",
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestrictedStockUnitsRSUMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share instrument which is convertible to stock or an equivalent amount of cash, after a specified period of time or when specified performance conditions are met.",
        "label": "Restricted Stock Units (RSUs) [Member]",
        "terseLabel": "Restricted Stock Units (RSUs) [Member]"
       }
      }
     },
     "localname": "RestrictedStockUnitsRSUMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestructuringAndRelatedActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Restructuring and Related Activities [Abstract]"
       }
      }
     },
     "localname": "RestructuringAndRelatedActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock": {
     "auth_ref": [
      "r329",
      "r331",
      "r334",
      "r344",
      "r346"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for restructuring and related activities. Description of restructuring activities such as exit and disposal activities, include facts and circumstances leading to the plan, the expected plan completion date, the major types of costs associated with the plan activities, total expected costs, the accrual balance at the end of the period, and the periods over which the remaining accrual will be settled.",
        "label": "Restructuring and Related Activities Disclosure [Text Block]",
        "terseLabel": "Restructuring Charges"
       }
      }
     },
     "localname": "RestructuringAndRelatedActivitiesDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringCharges"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of positions eliminated during the period as a result of restructuring activities.",
        "label": "Restructuring and Related Cost, Number of Positions Eliminated",
        "terseLabel": "Number of positions eliminated"
       }
      }
     },
     "localname": "RestructuringAndRelatedCostNumberOfPositionsEliminated",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesAdditionalInformationDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of the total number of positions eliminated as of the balance sheet date since inception of the restructuring plan(s).",
        "label": "Restructuring and Related Cost, Number of Positions Eliminated, Inception to Date Percent",
        "terseLabel": "Global workforce reduction"
       }
      }
     },
     "localname": "RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_RestructuringCharges": {
     "auth_ref": [
      "r110",
      "r328",
      "r338",
      "r341"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 4.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expenses associated with exit or disposal activities pursuant to an authorized plan. Excludes expenses related to a discontinued operation or an asset retirement obligation.",
        "label": "Restructuring Charges",
        "terseLabel": "Restructuring charges",
        "verboseLabel": "Restructuring charges"
       }
      }
     },
     "localname": "RestructuringCharges",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/RestructuringChargesAdditionalInformationDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestructuringCostAndReserveAxis": {
     "auth_ref": [
      "r330",
      "r331",
      "r341",
      "r342"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of restructuring cost.",
        "label": "Restructuring Type [Axis]",
        "terseLabel": "Restructuring Type [Axis]"
       }
      }
     },
     "localname": "RestructuringCostAndReserveAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringCostAndReserveLineItems": {
     "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": "Restructuring Cost and Reserve [Line Items]",
        "terseLabel": "Restructuring Cost and Reserve [Line Items]"
       }
      }
     },
     "localname": "RestructuringCostAndReserveLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringReserve": {
     "auth_ref": [
      "r331",
      "r339"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying amount (including both current and noncurrent portions of the accrual) as of the balance sheet date pertaining to a specified type of cost associated with exit from or disposal of business activities or restructuring pursuant to a duly authorized plan.",
        "label": "Restructuring Reserve",
        "periodEndLabel": "Balance as of December 31, 2020",
        "periodStartLabel": "Balance as of December 31, 2019"
       }
      }
     },
     "localname": "RestructuringReserve",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestructuringReserveAccrualAdjustment1": {
     "auth_ref": [
      "r331",
      "r342"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense (reversal of expense) which increases (decreases) the restructuring reserve from an adjustment to a previously accrued restructuring liability.",
        "label": "Restructuring Reserve, Accrual Adjustment",
        "terseLabel": "Restructuring adjustments"
       }
      }
     },
     "localname": "RestructuringReserveAccrualAdjustment1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestructuringReserveRollForward": {
     "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": "Restructuring Reserve [Roll Forward]",
        "terseLabel": "Restructuring Reserve [Roll Forward]"
       }
      }
     },
     "localname": "RestructuringReserveRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringReserveSettledWithoutCash2": {
     "auth_ref": [
      "r331",
      "r342"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in the reserve for full or partial settlement through consideration other than cash.",
        "label": "Restructuring Reserve, Settled without Cash",
        "negatedTerseLabel": "Non-cash restructuring charges"
       }
      }
     },
     "localname": "RestructuringReserveSettledWithoutCash2",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestructuringReserveTranslationAdjustment": {
     "auth_ref": [
      "r331",
      "r342"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of foreign currency translation gain (loss) which decreases (increases) the restructuring reserve.",
        "label": "Restructuring Reserve, Foreign Currency Translation Gain (Loss)",
        "terseLabel": "Foreign exchange rate changes"
       }
      }
     },
     "localname": "RestructuringReserveTranslationAdjustment",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "auth_ref": [
      "r26",
      "r408",
      "r501",
      "r672",
      "r745",
      "r765",
      "r770"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 3.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained Earnings (Accumulated Deficit)",
        "terseLabel": "Retained earnings",
        "verboseLabel": "Retained Earnings (Accumulated Deficit)"
       }
      }
     },
     "localname": "RetainedEarningsAccumulatedDeficit",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsMember": {
     "auth_ref": [
      "r0",
      "r141",
      "r142",
      "r143",
      "r147",
      "r156",
      "r159",
      "r265",
      "r497",
      "r498",
      "r499",
      "r542",
      "r543",
      "r612",
      "r761",
      "r763"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained Earnings [Member]",
        "terseLabel": "Retained Earnings [Member]"
       }
      }
     },
     "localname": "RetainedEarningsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueCommissionersIrelandMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Designated tax department of the government of Ireland.",
        "label": "Revenue Commissioners, Ireland [Member]",
        "terseLabel": "Revenue Commissioners, Ireland [Member]"
       }
      }
     },
     "localname": "RevenueCommissionersIrelandMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue from Contract with Customer [Abstract]",
        "terseLabel": "Revenue from Contract with Customer [Abstract]"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax": {
     "auth_ref": [
      "r202",
      "r203",
      "r207",
      "r212",
      "r213",
      "r219",
      "r220",
      "r223",
      "r420",
      "r421",
      "r714"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 1.0,
       "parentTag": "us-gaap_GrossProfit",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, excluding 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, Excluding Assessed Tax",
        "terseLabel": "Revenue",
        "verboseLabel": "Revenue"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerExcludingAssessedTax",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerTextBlock": {
     "auth_ref": [
      "r412",
      "r413",
      "r414",
      "r415",
      "r416",
      "r417",
      "r418",
      "r419",
      "r423",
      "r435"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure of revenue from contract with customer to transfer good or service and to transfer nonfinancial asset. Includes, but is not limited to, disaggregation of revenue, credit loss recognized from contract with customer, judgment and change in judgment related to contract with customer, and asset recognized from cost incurred to obtain or fulfill contract with customer. Excludes insurance and lease contracts.",
        "label": "Revenue from Contract with Customer [Text Block]",
        "terseLabel": "Revenue Recognition"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognition"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueRecognitionAndDeferredRevenueAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Revenue Recognition and Deferred Revenue [Abstract]"
       }
      }
     },
     "localname": "RevenueRecognitionAndDeferredRevenueAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueRecognitionPolicyTextBlock": {
     "auth_ref": [
      "r121",
      "r122"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for revenue. Includes revenue from contract with customer and from other sources.",
        "label": "Revenue [Policy Text Block]",
        "terseLabel": "Revenue Recognition"
       }
      }
     },
     "localname": "RevenueRecognitionPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems": {
     "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": "Revenues from External Customers and Long-Lived Assets [Line Items]",
        "terseLabel": "Revenues from External Customers and Long-Lived Assets [Line Items]"
       }
      }
     },
     "localname": "RevenuesFromExternalCustomersAndLongLivedAssetsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SalesReturnsAndAllowancesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A revision in the estimated reserve needed for product returns and price or other concessions granted to customers.",
        "label": "Sales Returns and Allowances [Member]",
        "terseLabel": "Sales Returns and Allowances [Member]"
       }
      }
     },
     "localname": "SalesReturnsAndAllowancesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SalesRevenueNetMember": {
     "auth_ref": [
      "r192",
      "r223"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Revenue from sale of product and rendering of service and other sources of income, when it serves as benchmark in concentration of risk calculation.",
        "label": "Revenue Benchmark [Member]",
        "verboseLabel": "Total Revenue"
       }
      }
     },
     "localname": "SalesRevenueNetMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of accrued liabilities.",
        "label": "Schedule of Accrued Liabilities [Table Text Block]",
        "terseLabel": "Constituents of Accrued Expenses"
       }
      }
     },
     "localname": "ScheduleOfAccruedLiabilitiesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable": {
     "auth_ref": [
      "r172"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems": {
     "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": "Debt Securities, Available-for-sale [Line Items]",
        "terseLabel": "Debt Securities, Available-for-sale [Line Items]"
       }
      }
     },
     "localname": "ScheduleOfAvailableForSaleSecuritiesLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the reconciliation of available-for-sale securities from cost basis to fair value.",
        "label": "Schedule of Available-for-sale Securities Reconciliation [Table Text Block]",
        "terseLabel": "Summary of Available-for-Sale Investments"
       }
      }
     },
     "localname": "ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAvailableForSaleSecuritiesTable": {
     "auth_ref": [
      "r247",
      "r249",
      "r254",
      "r255",
      "r256",
      "r258",
      "r736",
      "r737"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of available-for-sale securities which includes, but is not limited to, changes in the cost basis and fair value, fair value and gross unrealized gain (loss), fair values by type of security, contractual maturity and classification, amortized cost basis, contracts to acquire securities to be accounted for as available-for-sale, debt maturities, transfers to trading, change in net unrealized holding gain (loss) net of tax, continuous unrealized loss position fair value, aggregate losses qualitative disclosures, other than temporary impairment (OTTI) losses or other disclosures related to available for sale securities.",
        "label": "Schedule of Available-for-sale Securities [Table]",
        "terseLabel": "Schedule of Available-for-sale Securities [Table]"
       }
      }
     },
     "localname": "ScheduleOfAvailableForSaleSecuritiesTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable": {
     "auth_ref": [
      "r560",
      "r561"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule reflecting each material business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities.",
        "label": "Schedule of Business Acquisitions, by Acquisition [Table]",
        "terseLabel": "Schedule of Business Acquisitions, by Acquisition [Table]"
       }
      }
     },
     "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/BusinessAcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfChangeInAccountingEstimateTable": {
     "auth_ref": [
      "r154",
      "r179"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A summarization of the nature of changes in accounting estimates, including changes that occur in interim periods. Changes in accounting estimate have the effect of adjusting the carrying amounts of existing assets or liabilities or altering the subsequent accounting for existing or future assets or liabilities. Changes in accounting estimates are a necessary consequence of assessments, in conjunction with the periodic presentation of financial statements, of the present status and expected future benefits and obligations associated with assets and liabilities. Changes in accounting estimates result from new or better information. Examples of items for which estimates are necessary are uncollectible receivables, inventory obsolescence, service lives and salvage values of depreciable assets, warranty obligations, and regulatory reviews.",
        "label": "Schedule of Change in Accounting Estimate [Table]",
        "terseLabel": "Schedule of Change in Accounting Estimate [Table]"
       }
      }
     },
     "localname": "ScheduleOfChangeInAccountingEstimateTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock": {
     "auth_ref": [
      "r154",
      "r179"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the change in an accounting estimate, including a change that occurs in an interim period. If a change in accounting estimate affects several future periods (for example, a change in the service life of a depreciable asset) disclose the effect on income from continuing operations, net income (or other appropriate captions of changes in the applicable net assets or performance indicator), and any related per-share amounts of the current period. Disclosure of the effects of a change in an accounting estimate that occurs in the ordinary course of business (such as uncollectible accounts or inventory obsolescence) is not required, unless the effect is material.",
        "label": "Schedule of Change in Accounting Estimate [Table Text Block]",
        "terseLabel": "Schedule of Change in Accounting Policy"
       }
      }
     },
     "localname": "ScheduleOfChangeInAccountingEstimateTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock": {
     "auth_ref": [
      "r541"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.",
        "label": "Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]",
        "terseLabel": "Constituents of Provision for Income Taxes"
       }
      }
     },
     "localname": "ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock": {
     "auth_ref": [
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.",
        "label": "Schedule of Deferred Tax Assets and Liabilities [Table Text Block]",
        "terseLabel": "Constituents of Deferred Tax Assets"
       }
      }
     },
     "localname": "ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock": {
     "auth_ref": [
      "r599"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the effective portion of the gains and losses on derivative instruments designated (and non-derivative instruments) designated and qualifying in cash flow hedges and net investment hedges that was recognized in other comprehensive income (loss) during the current period.",
        "label": "Schedule of Derivative Instruments, Effect on Other Comprehensive Income (Loss) [Table Text Block]",
        "terseLabel": "Schedule of Derivative Instruments, Effect on Other Comprehensive Income (Loss)"
       }
      }
     },
     "localname": "ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock": {
     "auth_ref": [
      "r594",
      "r600",
      "r603"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the location and amount of derivative instruments and nonderivative instruments designated as hedging instruments reported before netting adjustments, and the amount of gain (loss) on derivative instruments and nonderivative instruments designated and qualified as hedging instruments.",
        "label": "Derivative Instruments, Gain (Loss) [Table Text Block]",
        "terseLabel": "Derivative Instruments, Gain (Loss)"
       }
      }
     },
     "localname": "ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock": {
     "auth_ref": [
      "r598"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the location and fair value amounts of derivative instruments (and nonderivative instruments that are designated and qualify as hedging instruments) reported in the statement of financial position.",
        "label": "Schedule of Derivative Instruments in Statement of Financial Position, Fair Value [Table Text Block]",
        "terseLabel": "Schedule of Derivative Instruments in Statement of Financial Position, Fair Value"
       }
      }
     },
     "localname": "ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock": {
     "auth_ref": [
      "r517"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the reconciliation using percentage or dollar amounts of the reported amount of income tax expense attributable to continuing operations for the year to the amount of income tax expense that would result from applying domestic federal statutory tax rates to pretax income from continuing operations.",
        "label": "Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]",
        "terseLabel": "Reconciliation of the United States Federal Statutory Corporate Tax Rate to the Company's Effective Tax Rate or Income Tax Provision"
       }
      }
     },
     "localname": "ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable": {
     "auth_ref": [
      "r463",
      "r492",
      "r503"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about amount recognized for award under share-based payment arrangement. Includes, but is not limited to, amount expensed in statement of income or comprehensive income, amount capitalized in statement of financial position, and corresponding reporting line item in financial statements.",
        "label": "Share-based Payment Arrangement, Expensed and Capitalized, Amount [Table]",
        "terseLabel": "Schedule of Employee Service Share-based Compensation, Allocation of Recognized Period Costs [Table]"
       }
      }
     },
     "localname": "ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock": {
     "auth_ref": [
      "r463",
      "r492",
      "r503"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of allocation of amount expensed and capitalized for award under share-based payment arrangement to statement of income or comprehensive income and statement of financial position. Includes, but is not limited to, corresponding line item in financial statement.",
        "label": "Share-based Payment Arrangement, Expensed and Capitalized, Amount [Table Text Block]",
        "terseLabel": "Stock-Based Compensation Expense"
       }
      }
     },
     "localname": "ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock": {
     "auth_ref": [
      "r616",
      "r617"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of assets and liabilities, including [financial] instruments measured at fair value that are classified in stockholders' equity, if any, 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": "Schedule of Fair Value, Assets and Liabilities Measured on Recurring Basis [Table Text Block]",
        "terseLabel": "Assets and Liabilities Measured at Fair Value on a Recurring Basis"
       }
      }
     },
     "localname": "ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable": {
     "auth_ref": [
      "r307",
      "r311",
      "r715"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Schedule of Finite-Lived Intangible Assets [Table]",
        "terseLabel": "Schedule of Finite-Lived Intangible Assets [Table]"
       }
      }
     },
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock": {
     "auth_ref": [
      "r307",
      "r311"
     ],
     "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": "Amortized Intangible Assets"
       }
      }
     },
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfGoodwillTable": {
     "auth_ref": [
      "r302",
      "r303"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of goodwill and the changes during the year due to acquisition, sale, impairment or for other reasons.",
        "label": "Schedule of Goodwill [Table]",
        "terseLabel": "Schedule of Goodwill [Table]"
       }
      }
     },
     "localname": "ScheduleOfGoodwillTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "auth_ref": [
      "r302",
      "r303"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.",
        "label": "Schedule of Goodwill [Table Text Block]",
        "terseLabel": "Changes in the Carrying Value of Goodwill"
       }
      }
     },
     "localname": "ScheduleOfGoodwillTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": {
     "auth_ref": [
      "r12",
      "r34",
      "r35",
      "r36"
     ],
     "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": "Inventories"
       }
      }
     },
     "localname": "ScheduleOfInventoryCurrentTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/InventoriesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock": {
     "auth_ref": [
      "r588"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the notional amounts of outstanding derivative positions.",
        "label": "Schedule of Notional Amounts of Outstanding Derivative Positions [Table Text Block]",
        "terseLabel": "Schedule of Notional Amounts of Outstanding Derivative Positions"
       }
      }
     },
     "localname": "ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock": {
     "auth_ref": [
      "r365"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the changes in the guarantor's aggregate product warranty liability, including the beginning balance of the aggregate product warranty liability, the aggregate reductions in that liability for payments made (in cash or in kind) under the warranty, the aggregate changes in the liability for accruals related to product warranties issued during the reporting period, the aggregate changes in the liability for accruals related to preexisting warranties (including adjustments related to changes in estimates), and the ending balance of the aggregate product warranty liability.",
        "label": "Schedule of Product Warranty Liability [Table Text Block]",
        "terseLabel": "Changes in Warranty Obligations"
       }
      }
     },
     "localname": "ScheduleOfProductWarrantyLiabilityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfPropertyPlantAndEquipmentTable": {
     "auth_ref": [
      "r43",
      "r325"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.",
        "label": "Property, Plant and Equipment [Table]",
        "terseLabel": "Property, Plant and Equipment [Table]"
       }
      }
     },
     "localname": "ScheduleOfPropertyPlantAndEquipmentTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfRestructuringAndRelatedCostsTable": {
     "auth_ref": [
      "r330",
      "r331",
      "r332",
      "r333",
      "r341",
      "r342",
      "r343"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Table presenting the description of the restructuring costs, such as the expected cost; the costs incurred during the period; the cumulative costs incurred as of the balance sheet date; the income statement caption within which the restructuring charges recognized for the period are included; and the amount of and periodic changes to an entity's restructuring reserve that occurred during the period associated with the exit from or disposal of business activities or restructurings for each major type of cost by type of restructuring.",
        "label": "Schedule of Restructuring and Related Costs [Table]",
        "terseLabel": "Schedule of Restructuring and Related Costs [Table]"
       }
      }
     },
     "localname": "ScheduleOfRestructuringAndRelatedCostsTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock": {
     "auth_ref": [
      "r335",
      "r336",
      "r340"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of costs incurred for restructuring including, but not limited to, exit and disposal activities, remediation, implementation, integration, asset impairment, and charges against earnings from the write-down of assets.",
        "label": "Restructuring and Related Costs [Table Text Block]",
        "terseLabel": "Restructuring and Related Costs"
       }
      }
     },
     "localname": "ScheduleOfRestructuringAndRelatedCostsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock": {
     "auth_ref": [
      "r331",
      "r342"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of an entity's restructuring reserve that occurred during the period associated with the exit from or disposal of business activities or restructurings for each major type of cost. This element may also include a description of any reversal and other adjustment made during the period to the amount of an accrued liability for restructuring activities. This element may be used to encapsulate the roll forward presentations of an entity's restructuring reserve by type of cost and in total, and explanation of changes that occurred in the period.",
        "label": "Schedule of Restructuring Reserve by Type of Cost [Table Text Block]",
        "terseLabel": "Schedule of Restructuring Reserve by Type of Cost"
       }
      }
     },
     "localname": "ScheduleOfRestructuringReserveByTypeOfCostTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock": {
     "auth_ref": [
      "r93",
      "r222"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of information concerning material long-lived assets (excluding financial instruments, customer relationships with financial institutions, mortgage and other servicing rights, deferred policy acquisition costs, and deferred taxes assets) located in identified geographic areas and/or the amount of revenue from external customers attributed to that country from which revenue is material.  An entity may also provide subtotals of geographic information about groups of countries.",
        "label": "Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas [Table Text Block]",
        "terseLabel": "Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas"
       }
      }
     },
     "localname": "ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable": {
     "auth_ref": [
      "r87",
      "r222"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of material long-lived assets (excluding financial instruments, customer relationships with financial institutions, mortgage and other servicing rights, deferred policy acquisition costs, and deferred taxes assets) located in identified geographic areas and/or the amount of revenue from external customers attributed to that country from which revenue is material.  An entity may also provide subtotals of geographic information about groups of countries.",
        "label": "Schedule of Revenues from External Customers and Long-Lived Assets [Table]",
        "terseLabel": "Schedule of Revenues from External Customers and Long-Lived Assets [Table]"
       }
      }
     },
     "localname": "ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": {
     "auth_ref": [
      "r464",
      "r495"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable": {
     "auth_ref": [
      "r495"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Details comprising a table providing supplementary information on outstanding and exercisable share awards as of the balance sheet date which stratifies outstanding options by ranges of exercise prices.",
        "label": "Share-based Payment Arrangement, Option, Exercise Price Range [Table]",
        "terseLabel": "Schedule of Share-based Compensation, Shares Authorized under Stock Option Plans, by Exercise Price Range [Table]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "auth_ref": [
      "r469",
      "r481",
      "r483"
     ],
     "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": "Summary of Stock Option Activity"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r486"
     ],
     "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": "Weighted-Average Assumptions Used in Estimating Fair Values of Stock Options Granted"
       }
      }
     },
     "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfStockByClassTable": {
     "auth_ref": [
      "r53",
      "r123",
      "r183",
      "r184",
      "r382",
      "r383",
      "r384",
      "r385",
      "r386",
      "r387",
      "r388",
      "r390",
      "r394",
      "r399",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r407",
      "r408"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule detailing information related to equity by class of stock. Class of stock includes common, convertible, and preferred stocks which are not redeemable or redeemable solely at the option of the issuer. It also includes preferred stock with redemption features that are solely within the control of the issuer and mandatorily redeemable stock if redemption is required to occur only upon liquidation or termination of the reporting entity.",
        "label": "Schedule of Stock by Class [Table]",
        "terseLabel": "Schedule of Stock by Class [Table]"
       }
      }
     },
     "localname": "ScheduleOfStockByClassTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock": {
     "auth_ref": [
      "r254"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For all investments in an unrealized loss position, including those for which other-than-temporary impairments have not been recognized in earnings (including investments for which a portion of an other-than-temporary impairment has been recognized in other comprehensive income), a tabular disclosure of the aggregate related fair value of investments with unrealized losses and the aggregate amount of unrealized losses (that is, the amount by which amortized cost basis exceeds fair value).",
        "label": "Schedule of Unrealized Loss on Investments [Table Text Block]",
        "terseLabel": "Gross Unrealized Losses and Fair Value for Available-for-Sale Investments"
       }
      }
     },
     "localname": "ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock": {
     "auth_ref": [
      "r173"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the weighted average number of shares used in calculating basic net earnings per share (or unit) and diluted earnings per share (or unit).",
        "label": "Schedule of Weighted Average Number of Shares [Table Text Block]",
        "terseLabel": "Calculation of Weighted Average Shares"
       }
      }
     },
     "localname": "ScheduleOfWeightedAverageNumberOfSharesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "auth_ref": [
      "r311"
     ],
     "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": "Estimated Amortization Expense Succeeding Fiscal Years"
       }
      }
     },
     "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SegmentReportingAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Segment Reporting [Abstract]",
        "terseLabel": "Segment Reporting [Abstract]"
       }
      }
     },
     "localname": "SegmentReportingAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "auth_ref": [
      "r198",
      "r200",
      "r201",
      "r205",
      "r206",
      "r211",
      "r215",
      "r216",
      "r217",
      "r218",
      "r219",
      "r222",
      "r223",
      "r224"
     ],
     "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 and Geographic Information"
       }
      }
     },
     "localname": "SegmentReportingDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SellingGeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r96"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 3.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate total costs related to selling a firm's product and services, as well as all other general and administrative expenses. Direct selling expenses (for example, credit, warranty, and advertising) are expenses that can be directly linked to the sale of specific products. Indirect selling expenses are expenses that cannot be directly linked to the sale of specific products, for example telephone expenses, Internet, and postal charges. General and administrative expenses include salaries of non-sales personnel, rent, utilities, communication, etc.",
        "label": "Selling, General and Administrative Expense",
        "terseLabel": "Selling, general, and administrative expenses"
       }
      }
     },
     "localname": "SellingGeneralAndAdministrativeExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensation": {
     "auth_ref": [
      "r109"
     ],
     "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 and the related income tax benefit recognized, credits"
       }
      }
     },
     "localname": "ShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "auth_ref": [
      "r465"
     ],
     "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": "Vesting period for stock option plans"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": {
     "auth_ref": [
      "r475"
     ],
     "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 or expired"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r480"
     ],
     "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 or expired, weighted-average exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "auth_ref": [
      "r478"
     ],
     "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"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r478"
     ],
     "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 exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": {
     "auth_ref": [
      "r477"
     ],
     "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": "Nonvested ending balance outstanding",
        "periodStartLabel": "Nonvested beginning balance outstanding"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward": {
     "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, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward]",
        "terseLabel": "Share-based Compensation Arrangement by Share-based Payment Award, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r477"
     ],
     "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": "Nonvested ending balance, weighted-average exercise price",
        "periodStartLabel": "Nonvested beginning balance, weighted-average exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward": {
     "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, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract]",
        "terseLabel": "Weighted-Average Grant Fair Value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": {
     "auth_ref": [
      "r479"
     ],
     "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": "Vested",
        "terseLabel": "Vested (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r479"
     ],
     "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": "Vested, weighted-average exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": {
     "auth_ref": [
      "r489"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "auth_ref": [
      "r488"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "auth_ref": [
      "r490"
     ],
     "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 rate"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems": {
     "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": "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant": {
     "auth_ref": [
      "r495"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Number of Shares Available for Grant",
        "terseLabel": "Shares available for grant under stock option plans"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": {
     "auth_ref": [
      "r472"
     ],
     "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": "Exercisable, Shares"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": {
     "auth_ref": [
      "r472"
     ],
     "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": "Exercisable, weighted-average exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod": {
     "auth_ref": [
      "r476"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For presentations that combine terminations, 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 or that expired.",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures and Expirations in Period",
        "negatedLabel": "Forfeited or expired"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r476"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price of options that were either forfeited or expired.",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures and Expirations in Period, Weighted Average Exercise Price",
        "terseLabel": "Forfeited or expired, weighted-average exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod": {
     "auth_ref": [
      "r473"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Net 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, Net of Forfeitures",
        "terseLabel": "Granted"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r482"
     ],
     "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": "Weighted-average grant-date fair values of stock options granted"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue": {
     "auth_ref": [
      "r495"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Intrinsic Value",
        "terseLabel": "Outstanding, aggregate intrinsic value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": {
     "auth_ref": [
      "r471",
      "r495"
     ],
     "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": "Ending balance outstanding",
        "periodStartLabel": "Beginning balance outstanding"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "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": "Shares"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r470"
     ],
     "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": "Ending balance outstanding, weighted-average exercise price",
        "periodStartLabel": "Beginning balance outstanding, weighted-average exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "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": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber": {
     "auth_ref": [
      "r485"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of fully vested and expected to vest exercisable options that may be converted into shares under option plan. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Exercisable, Number",
        "terseLabel": "Options vested or expected to vest"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue": {
     "auth_ref": [
      "r483"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount by which current fair value of underlying stock exceeds exercise price of fully vested and expected to vest options outstanding. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Outstanding, Aggregate Intrinsic Value",
        "terseLabel": "Options vested or expected to vest, aggregate intrinsic value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r484"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted-average exercise price, at which grantee can acquire shares reserved for issuance, for fully vested and expected to vest options outstanding. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Outstanding, Weighted Average Exercise Price",
        "terseLabel": "Options vested or expected to vest, weighted-average exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "auth_ref": [
      "r462",
      "r466"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Award under share-based payment arrangement.",
        "label": "Award Type [Domain]",
        "terseLabel": "Equity Award [Domain]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [],
     "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"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [],
     "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"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy": {
     "auth_ref": [
      "r464",
      "r467"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for award under share-based payment arrangement. Includes, but is not limited to, methodology and assumption used in measuring cost.",
        "label": "Share-based Payment Arrangement [Policy Text Block]",
        "terseLabel": "Stock-Based Compensation"
       }
      }
     },
     "localname": "ShareBasedCompensationOptionAndIncentivePlansPolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems": {
     "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": "Share-based Payment Arrangement, Option, Exercise Price Range [Line Items]",
        "terseLabel": "Shares"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareRepurchaseProgramAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by share repurchase program.",
        "label": "Share Repurchase Program [Axis]",
        "terseLabel": "Share Repurchase Program [Axis]"
       }
      }
     },
     "localname": "ShareRepurchaseProgramAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareRepurchaseProgramDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the share repurchase program.",
        "label": "Share Repurchase Program [Domain]",
        "terseLabel": "Share Repurchase Program [Domain]"
       }
      }
     },
     "localname": "ShareRepurchaseProgramDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "auth_ref": [
      "r487",
      "r502"
     ],
     "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 term (in years)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r495"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, 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, Options, Exercisable, Weighted Average Remaining Contractual Term",
        "terseLabel": "Exercisable, weighted-average remaining contractual term (in years)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2": {
     "auth_ref": [
      "r484"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for option awards outstanding, 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, Options, Outstanding, Weighted Average Remaining Contractual Term",
        "terseLabel": "Outstanding, weighted-average remaining contractual term (in years)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r484"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for fully vested and expected to vest options outstanding, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-based Compensation Arrangement by Share-based Payment Award, Options, Vested and Expected to Vest, Outstanding, Weighted Average Remaining Contractual Term",
        "terseLabel": "Options vested or expected to vest, weighted-average remaining contractual term (in years)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShortTermInvestmentsMember": {
     "auth_ref": [
      "r785",
      "r786",
      "r787",
      "r788"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Investments which are not otherwise included in another category or item that the entity has the intent to sell or dispose of within one year from the date of the balance sheet.",
        "label": "Short-term Investments [Member]",
        "terseLabel": "Short-term Investments [Member]"
       }
      }
     },
     "localname": "ShortTermInvestmentsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SignificantAccountingPoliciesTextBlock": {
     "auth_ref": [
      "r117",
      "r140"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for all significant accounting policies of the reporting entity.",
        "label": "Significant Accounting Policies [Text Block]",
        "terseLabel": "Summary of Significant Accounting Policies"
       }
      }
     },
     "localname": "SignificantAccountingPoliciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SovereignDebtSecuritiesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Debt security issued by foreign government (not within the country of domicile of the entity).",
        "label": "Sovereign Debt Securities [Member]",
        "terseLabel": "Sovereign Bonds [Member]"
       }
      }
     },
     "localname": "SovereignDebtSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_StandardProductWarrantyPolicy": {
     "auth_ref": [
      "r362"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for standard warranties including the methodology for measuring the liability.",
        "label": "Standard Product Warranty, Policy [Policy Text Block]",
        "terseLabel": "Warranty Obligations"
       }
      }
     },
     "localname": "StandardProductWarrantyPolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_StateAdministrationOfTaxationChinaMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Designated tax department of the government of China.",
        "label": "State Administration of Taxation, China [Member]",
        "terseLabel": "State Administration of Taxation, China [Member]"
       }
      }
     },
     "localname": "StateAdministrationOfTaxationChinaMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_StatementClassOfStockAxis": {
     "auth_ref": [
      "r21",
      "r22",
      "r23",
      "r123",
      "r125",
      "r165",
      "r166",
      "r167",
      "r169",
      "r171",
      "r183",
      "r184",
      "r185",
      "r264",
      "r366",
      "r370",
      "r371",
      "r372",
      "r375",
      "r376",
      "r385",
      "r386",
      "r390",
      "r394",
      "r401",
      "r632",
      "r815"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by the different classes of stock of the entity.",
        "label": "Class of Stock [Axis]",
        "terseLabel": "Class of Stock [Axis]"
       }
      }
     },
     "localname": "StatementClassOfStockAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "auth_ref": [
      "r0",
      "r54",
      "r84",
      "r85",
      "r86",
      "r141",
      "r142",
      "r143",
      "r147",
      "r156",
      "r159",
      "r182",
      "r265",
      "r401",
      "r408",
      "r497",
      "r498",
      "r499",
      "r542",
      "r543",
      "r612",
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r649",
      "r761",
      "r762",
      "r763",
      "r836"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementLineItems": {
     "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": "Statement [Line Items]",
        "terseLabel": "Statement [Line Items]"
       }
      }
     },
     "localname": "StatementLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.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/2021-01-31",
     "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/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Comprehensive Income [Abstract]",
        "terseLabel": "Statement of Comprehensive Income [Abstract]"
       }
      }
     },
     "localname": "StatementOfIncomeAndComprehensiveIncomeAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "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/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementTable": {
     "auth_ref": [
      "r141",
      "r142",
      "r143",
      "r182",
      "r714"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "auth_ref": [
      "r22",
      "r23",
      "r401",
      "r408",
      "r474"
     ],
     "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",
        "negatedLabel": "Exercised",
        "terseLabel": "Issuance of common stock under stock option plans, shares"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": {
     "auth_ref": [
      "r54",
      "r401",
      "r408"
     ],
     "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": "Issuance of common stock under stock option plans"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockOptionPlanExpense": {
     "auth_ref": [
      "r110"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of noncash expense for option under share-based payment arrangement.",
        "label": "Stock or Unit Option Plan Expense",
        "terseLabel": "Stock-based compensation expense"
       }
      }
     },
     "localname": "StockOptionPlanExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchaseProgramAuthorizedAmount1": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of stock repurchase plan authorized.",
        "label": "Stock Repurchase Program, Authorized Amount",
        "terseLabel": "Repurchase of authorized common stock"
       }
      }
     },
     "localname": "StockRepurchaseProgramAuthorizedAmount1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount remaining of a stock repurchase plan authorized.",
        "label": "Stock Repurchase Program, Remaining Authorized Repurchase Amount",
        "terseLabel": "Stock Repurchase Program, Remaining Authorized Repurchase Amount"
       }
      }
     },
     "localname": "StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchasedDuringPeriodShares": {
     "auth_ref": [
      "r22",
      "r23",
      "r401",
      "r408"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares that have been repurchased during the period and have not been retired and are not held in treasury. Some state laws may govern the circumstances under which an entity may acquire its own stock and prescribe the accounting treatment therefore. This element is used when state law does not recognize treasury stock.",
        "label": "Stock Repurchased During Period, Shares",
        "negatedTerseLabel": "Repurchase of common stock, shares",
        "verboseLabel": "Repurchase of common stock, shares"
       }
      }
     },
     "localname": "StockRepurchasedDuringPeriodShares",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockRepurchasedDuringPeriodValue": {
     "auth_ref": [
      "r22",
      "r23",
      "r401",
      "r408"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Equity impact of the value of stock that has been repurchased during the period and has not been retired and is not held in treasury. Some state laws may mandate the circumstances under which an entity may acquire its own stock and prescribe the accounting treatment therefore. This element is used when state law does not recognize treasury stock.",
        "label": "Stock Repurchased During Period, Value",
        "negatedLabel": "Repurchase of common stock",
        "verboseLabel": "Repurchase of common stock"
       }
      }
     },
     "localname": "StockRepurchasedDuringPeriodValue",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquity": {
     "auth_ref": [
      "r23",
      "r28",
      "r29",
      "r125",
      "r234",
      "r264",
      "r632",
      "r672"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 3.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.",
        "label": "Stockholders' Equity Attributable to Parent",
        "periodEndLabel": "Balance",
        "periodStartLabel": "Beginning Balance",
        "totalLabel": "Total shareholders\u2019 equity"
       }
      }
     },
     "localname": "StockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stockholders' Equity Attributable to Parent [Abstract]",
        "terseLabel": "Shareholders\u2019 equity:"
       }
      }
     },
     "localname": "StockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockholdersEquityNoteDisclosureTextBlock": {
     "auth_ref": [
      "r124",
      "r386",
      "r389",
      "r390",
      "r391",
      "r392",
      "r393",
      "r394",
      "r395",
      "r396",
      "r397",
      "r398",
      "r400",
      "r408",
      "r409"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for shareholders' equity comprised of portions attributable to the parent entity and noncontrolling interest, including other comprehensive income. Includes, but is not limited to, balances of common stock, preferred stock, additional paid-in capital, other capital and retained earnings, accumulated balance for each classification of other comprehensive income and amount of comprehensive income.",
        "label": "Stockholders' Equity Note Disclosure [Text Block]",
        "terseLabel": "Shareholders\u2019 Equity"
       }
      }
     },
     "localname": "StockholdersEquityNoteDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquity"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SubsequentEventLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Detail information of subsequent event by type. User is expected to use existing line items from elsewhere in the taxonomy as the primary line items for this disclosure, which is further associated with dimension and member elements pertaining to a subsequent event.",
        "label": "Subsequent Event [Line Items]",
        "terseLabel": "Subsequent Event [Line Items]"
       }
      }
     },
     "localname": "SubsequentEventLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventMember": {
     "auth_ref": [
      "r650",
      "r674"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identifies event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event [Member]",
        "terseLabel": "Subsequent Event [Member]"
       }
      }
     },
     "localname": "SubsequentEventMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SubsequentEventTable": {
     "auth_ref": [
      "r650",
      "r674"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Discloses pertinent information about one or more significant events or transactions that occurred after the balance sheet date through the date the financial statements were issued or the date the financial statements were available to be issued.",
        "label": "Subsequent Event [Table]",
        "terseLabel": "Subsequent Event [Table]"
       }
      }
     },
     "localname": "SubsequentEventTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventTypeAxis": {
     "auth_ref": [
      "r650",
      "r674"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event Type [Axis]",
        "terseLabel": "Subsequent Event Type [Axis]"
       }
      }
     },
     "localname": "SubsequentEventTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventTypeDomain": {
     "auth_ref": [
      "r650",
      "r674"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Event that occurred after the balance sheet date but before financial statements are issued or available to be issued.",
        "label": "Subsequent Event Type [Domain]",
        "terseLabel": "Subsequent Event Type [Domain]"
       }
      }
     },
     "localname": "SubsequentEventTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SubsequentEventsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Subsequent Events [Abstract]",
        "terseLabel": "Subsequent Events [Abstract]"
       }
      }
     },
     "localname": "SubsequentEventsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventsTextBlock": {
     "auth_ref": [
      "r673",
      "r675"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for significant events or transactions that occurred after the balance sheet date through the date the financial statements were issued or the date the financial statements were available to be issued. Examples include: the sale of a capital stock issue, purchase of a business, settlement of litigation, catastrophic loss, significant foreign exchange rate changes, loans to insiders or affiliates, and transactions not in the ordinary course of business.",
        "label": "Subsequent Events [Text Block]",
        "terseLabel": "Subsequent Events"
       }
      }
     },
     "localname": "SubsequentEventsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEvents"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SummaryOfIncomeTaxContingenciesTextBlock": {
     "auth_ref": [
      "r520",
      "r526",
      "r528"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure for tax positions taken in the tax returns filed or to be filed for which it is more likely than not that the tax position will not be sustained upon examination by taxing authorities and other income tax contingencies. Includes, but is not limited to, interest and penalties, reconciliation of unrecognized tax benefits, unrecognized tax benefits that would affect the effective tax rate, tax years that remain subject to examination by tax jurisdictions, and information about positions for which it is reasonably possible that amounts unrecognized will significantly change within 12 months.",
        "label": "Summary of Income Tax Contingencies [Table Text Block]",
        "terseLabel": "Changes in the Reserve for Income Taxes, Excluding Interest and Penalties"
       }
      }
     },
     "localname": "SummaryOfIncomeTaxContingenciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_TaxCreditCarryforwardAxis": {
     "auth_ref": [
      "r536"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by specific tax credit related to an unused tax credit.",
        "label": "Tax Credit Carryforward [Axis]",
        "terseLabel": "Tax Credit Carryforward [Axis]"
       }
      }
     },
     "localname": "TaxCreditCarryforwardAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TaxCreditCarryforwardLineItems": {
     "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": "Tax Credit Carryforward [Line Items]",
        "terseLabel": "Tax Credit Carryforward [Line Items]"
       }
      }
     },
     "localname": "TaxCreditCarryforwardLineItems",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TaxCreditCarryforwardNameDomain": {
     "auth_ref": [
      "r536"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The name of the tax credit carryforward.",
        "label": "Tax Credit Carryforward, Name [Domain]",
        "terseLabel": "Tax Credit Carryforward, Name [Domain]"
       }
      }
     },
     "localname": "TaxCreditCarryforwardNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TaxCreditCarryforwardTable": {
     "auth_ref": [
      "r536"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A listing of tax credit carryforwards available to reduce future taxable income including descriptions, amounts, expiration dates, limitations on use and the related deferred tax assets and valuation allowances.",
        "label": "Tax Credit Carryforward [Table]",
        "terseLabel": "Tax Credit Carryforward [Table]"
       }
      }
     },
     "localname": "TaxCreditCarryforwardTable",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TradeAndOtherAccountsReceivablePolicy": {
     "auth_ref": [
      "r227",
      "r228",
      "r230",
      "r231",
      "r233",
      "r235"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for accounts receivable.",
        "label": "Accounts Receivable [Policy Text Block]",
        "terseLabel": "Accounts Receivable"
       }
      }
     },
     "localname": "TradeAndOtherAccountsReceivablePolicy",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_TrademarksMember": {
     "auth_ref": [
      "r563"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Rights acquired through registration of a trademark to gain or protect exclusive use of a business name, symbol or other device or style.",
        "label": "Trademarks [Member]",
        "terseLabel": "Trademarks [Member]"
       }
      }
     },
     "localname": "TrademarksMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": {
     "auth_ref": [
      "r250",
      "r251",
      "r260",
      "r261",
      "r262",
      "r379",
      "r399",
      "r609",
      "r676",
      "r677",
      "r678",
      "r679",
      "r680",
      "r681",
      "r682",
      "r683",
      "r684",
      "r685",
      "r686",
      "r687",
      "r688",
      "r690",
      "r691",
      "r692",
      "r693",
      "r694",
      "r695",
      "r696",
      "r697",
      "r698",
      "r699",
      "r700",
      "r701",
      "r702",
      "r703",
      "r704",
      "r705",
      "r706",
      "r815",
      "r816",
      "r817",
      "r818",
      "r819",
      "r820",
      "r821"
     ],
     "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/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TypeOfRestructuringDomain": {
     "auth_ref": [
      "r330",
      "r331",
      "r341",
      "r342"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identification of the types of restructuring costs.",
        "label": "Type of Restructuring [Domain]",
        "terseLabel": "Type of Restructuring [Domain]"
       }
      }
     },
     "localname": "TypeOfRestructuringDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USTreasuryBillSecuritiesMember": {
     "auth_ref": [
      "r735"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This category includes information about negotiable debt securities issued by the United States Department of the Treasury which generally have maturities of one year or less, are interest bearing, and are backed by the full faith and credit of the United States government.",
        "label": "US Treasury Bill Securities [Member]",
        "verboseLabel": "Treasury Bills [Member]"
       }
      }
     },
     "localname": "USTreasuryBillSecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USTreasurySecuritiesMember": {
     "auth_ref": [
      "r130",
      "r438",
      "r452",
      "r735"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This category includes information about debt securities issued by the United States Department of the Treasury and backed by the United States government. Such securities primarily consist of treasury bills (short-term maturities - one year or less), treasury notes (intermediate term maturities - two to ten years), and treasury bonds (long-term maturities - ten to thirty years).",
        "label": "US Treasury Securities [Member]",
        "terseLabel": "Treasury Bills [Member]"
       }
      }
     },
     "localname": "USTreasurySecuritiesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsGrossUnrealizedLossesandFairValueforAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_UnbilledReceivablesCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS": {
       "order": 6.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount received for services rendered and products shipped, but not yet billed, for non-contractual agreements due within one year or the normal operating cycle, if longer.",
        "label": "Unbilled Receivables, Current",
        "terseLabel": "Unbilled revenue"
       }
      }
     },
     "localname": "UnbilledReceivablesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UncollectibleReceivablesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "A revision in the estimated reserve needed to reduce the carrying amount of accounts receivable to net realizable value with respect to credit and collection risk.",
        "label": "Uncollectible Receivables [Member]",
        "terseLabel": "Reserve for Uncollectible Accounts Receivable and Sales Return [Member]"
       }
      }
     },
     "localname": "UncollectibleReceivablesMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_UnrecognizedTaxBenefits": {
     "auth_ref": [
      "r511",
      "r522"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of unrecognized tax benefits.",
        "label": "Unrecognized Tax Benefits",
        "periodEndLabel": "Balance of reserve for income taxes",
        "periodStartLabel": "Balance of reserve for income taxes",
        "terseLabel": "Reserve for tax uncertainties"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefits",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions": {
     "auth_ref": [
      "r523"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.",
        "label": "Unrecognized Tax Benefits, Decrease Resulting from Prior Period Tax Positions",
        "negatedTerseLabel": "Unrecognized Tax Benefits, Decrease Resulting from Prior Period Tax Positions"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsDecreasesResultingFromPriorPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued": {
     "auth_ref": [
      "r519"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount accrued for interest on an underpayment of income taxes and penalties related to a tax position claimed or expected to be claimed in the tax return.",
        "label": "Unrecognized Tax Benefits, Income Tax Penalties and Interest Accrued",
        "terseLabel": "Interest and penalties, gross"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense": {
     "auth_ref": [
      "r519"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense for interest on an underpayment of income taxes and penalties related to a tax position claimed or expected to be claimed in the tax return.",
        "label": "Unrecognized Tax Benefits, Income Tax Penalties and Interest Expense",
        "terseLabel": "Income tax penalties and interest expense"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions": {
     "auth_ref": [
      "r524"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions that have been or will be taken in current period tax return.",
        "label": "Unrecognized Tax Benefits, Increase Resulting from Current Period Tax Positions",
        "terseLabel": "Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in the current period"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions": {
     "auth_ref": [
      "r523"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in unrecognized tax benefits resulting from tax positions taken in prior period tax returns.",
        "label": "Unrecognized Tax Benefits, Increase Resulting from Prior Period Tax Positions",
        "terseLabel": "Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations": {
     "auth_ref": [
      "r525"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in unrecognized tax benefits resulting from lapses of applicable statutes of limitations.",
        "label": "Unrecognized Tax Benefits, Reduction Resulting from Lapse of Applicable Statute of Limitations",
        "negatedLabel": "Gross amounts of decreases in unrecognized tax benefits as a result of the expiration of the applicable statutes of limitations"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UseOfEstimates": {
     "auth_ref": [
      "r186",
      "r187",
      "r188",
      "r189",
      "r195",
      "r196",
      "r197"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for the use of estimates in the preparation of financial statements in conformity with generally accepted accounting principles.",
        "label": "Use of Estimates, Policy [Policy Text Block]",
        "terseLabel": "Use of Estimates in the Preparation of Financial Statements"
       }
      }
     },
     "localname": "UseOfEstimates",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember": {
     "auth_ref": [
      "r132",
      "r133",
      "r134",
      "r137",
      "r138"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Valuation allowance of deferred tax asset attributable to deductible temporary difference and carryforward.",
        "label": "SEC Schedule, 12-09, Valuation Allowance, Deferred Tax Asset [Member]",
        "terseLabel": "Deferred Tax Valuation Allowance [Member]"
       }
      }
     },
     "localname": "ValuationAllowanceOfDeferredTaxAssetsMember",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesAdjustments": {
     "auth_ref": [
      "r139"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in valuation and qualifying accounts and reserves from adjustment.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Increase (Decrease) Adjustment",
        "terseLabel": "Other"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesAdjustments",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesBalance": {
     "auth_ref": [
      "r132",
      "r138"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Amount",
        "periodEndLabel": "Balance\u00a0at End of Period",
        "periodStartLabel": "Balance\u00a0at Beginning of Period",
        "terseLabel": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Amount"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesBalance",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense": {
     "auth_ref": [
      "r135"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in valuation and qualifying accounts and reserves from charge to cost and expense.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Cost and Expense",
        "terseLabel": "Charged\u00a0to Costs and Expenses"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesChargedToCostAndExpense",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesChargedToOtherAccounts": {
     "auth_ref": [
      "r136"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in valuation and qualifying accounts and reserves from charge to accounts other than cost and expense.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Other Account",
        "terseLabel": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Additions, Charge to Other Account"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesChargedToOtherAccounts",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesDeductions": {
     "auth_ref": [
      "r137"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease in valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves, Deduction",
        "negatedLabel": "Deductions"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesDeductions",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesDomain": {
     "auth_ref": [
      "r132",
      "r133",
      "r134",
      "r137",
      "r138"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]",
        "terseLabel": "SEC Schedule, 12-09, Valuation Allowances and Reserves [Domain]"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesDomain",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesTypeAxis": {
     "auth_ref": [
      "r132",
      "r133",
      "r134",
      "r137",
      "r138"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]",
        "terseLabel": "SEC Schedule, 12-09, Valuation Allowances and Reserves Type [Axis]"
       }
      }
     },
     "localname": "ValuationAllowancesAndReservesTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment": {
     "auth_ref": [
      "r171"
     ],
     "calculation": {
      "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail": {
       "order": 2.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The sum of dilutive potential common shares or units used in the calculation of the diluted per-share or per-unit computation.",
        "label": "Weighted Average Number Diluted Shares Outstanding Adjustment",
        "terseLabel": "Effect of dilutive stock options"
       }
      }
     },
     "localname": "WeightedAverageNumberDilutedSharesOutstandingAdjustment",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "auth_ref": [
      "r164",
      "r171"
     ],
     "calculation": {
      "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail": {
       "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 common and common-equivalent shares outstanding"
       }
      }
     },
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Weighted Average Number of Shares Outstanding, Diluted [Abstract]",
        "terseLabel": "Weighted-average common and common-equivalent shares outstanding:"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingAbstract",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "auth_ref": [
      "r163",
      "r171"
     ],
     "calculation": {
      "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail": {
       "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 common shares outstanding"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "nsuri": "http://fasb.org/us-gaap/2021-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail"
     ],
     "xbrltype": "sharesItemType"
    }
   },
   "unitCount": 18
  }
 },
 "std_ref": {
  "r0": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "105",
   "URI": "http://asc.fasb.org/extlink&oid=124434974&loc=SL124442142-165695"
  },
  "r1": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "105",
   "URI": "http://asc.fasb.org/extlink&oid=124434974&loc=SL124442142-165695"
  },
  "r10": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6935-107765"
  },
  "r100": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3213-108585"
  },
  "r101": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3213-108585"
  },
  "r102": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3213-108585"
  },
  "r103": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3255-108585"
  },
  "r104": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3291-108585"
  },
  "r105": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3291-108585"
  },
  "r106": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3367-108585"
  },
  "r107": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3521-108585"
  },
  "r108": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3536-108585"
  },
  "r109": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3602-108585"
  },
  "r11": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e7018-107765"
  },
  "r110": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3602-108585"
  },
  "r111": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3602-108585"
  },
  "r112": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3044-108585"
  },
  "r113": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123431023&loc=d3e4273-108586"
  },
  "r114": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123431023&loc=d3e4297-108586"
  },
  "r115": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123431023&loc=d3e4304-108586"
  },
  "r116": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123431023&loc=SL98516268-108586"
  },
  "r117": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=123372394&loc=d3e18726-107790"
  },
  "r118": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=123372394&loc=d3e18823-107790"
  },
  "r119": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=123372394&loc=d3e18823-107790"
  },
  "r12": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6361739&loc=d3e7789-107766"
  },
  "r120": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=123372394&loc=d3e18823-107790"
  },
  "r121": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=123372394&loc=d3e18823-107790"
  },
  "r122": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=123372394&loc=d3e18823-107790"
  },
  "r123": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(d))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r124": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(e)(1))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r125": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r126": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r127": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(1))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r128": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(2))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r129": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r13": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(1))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r130": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(m)(1)(ii)(A))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r131": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(n))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r132": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column B))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r133": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C(1)))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r134": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C(2)))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r135": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C)(1))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r136": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column C)(2))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r137": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column D))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r138": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(Column E))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r139": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r14": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(13))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r140": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "235",
   "URI": "http://asc.fasb.org/topic&trid=2122369"
  },
  "r141": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124436220&loc=d3e21914-107793"
  },
  "r142": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124436220&loc=d3e21930-107793"
  },
  "r143": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124436220&loc=d3e21711-107793"
  },
  "r144": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794"
  },
  "r145": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794"
  },
  "r146": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794"
  },
  "r147": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(3)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794"
  },
  "r148": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(4)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794"
  },
  "r149": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794"
  },
  "r15": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(14))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r150": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22694-107794"
  },
  "r151": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22694-107794"
  },
  "r152": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=SL124452830-107794"
  },
  "r153": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22583-107794"
  },
  "r154": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22595-107794"
  },
  "r155": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794"
  },
  "r156": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794"
  },
  "r157": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794"
  },
  "r158": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22658-107794"
  },
  "r159": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=124431687&loc=d3e22663-107794"
  },
  "r16": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(20))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r160": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.M.Q2)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=122038215&loc=d3e31137-122693"
  },
  "r161": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=122038215&loc=SL108384541-122693"
  },
  "r162": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "250",
   "URI": "http://asc.fasb.org/topic&trid=2122394"
  },
  "r163": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1448-109256"
  },
  "r164": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1505-109256"
  },
  "r165": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1252-109256"
  },
  "r166": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1278-109256"
  },
  "r167": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "55",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e2626-109256"
  },
  "r168": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=SL5780133-109256"
  },
  "r169": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=SL5780133-109256"
  },
  "r17": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(24))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r170": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125511455&loc=d3e1337-109256"
  },
  "r171": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257"
  },
  "r172": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257"
  },
  "r173": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257"
  },
  "r174": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=124432515&loc=d3e3630-109257"
  },
  "r175": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109243012&loc=SL65017193-207537"
  },
  "r176": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125512782&loc=d3e3842-109258"
  },
  "r177": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "52",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=125512782&loc=d3e4984-109258"
  },
  "r178": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "260",
   "URI": "http://asc.fasb.org/topic&trid=2144383"
  },
  "r179": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=124437754&loc=d3e777-108305"
  },
  "r18": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(25))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r180": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=124437754&loc=d3e543-108305"
  },
  "r181": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=124502072&loc=SL77927221-108306"
  },
  "r182": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "http://asc.fasb.org/extlink&oid=125520817&loc=d3e70191-108054"
  },
  "r183": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "http://asc.fasb.org/extlink&oid=125520817&loc=d3e70229-108054"
  },
  "r184": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "http://asc.fasb.org/extlink&oid=6373374&loc=d3e70434-108055"
  },
  "r185": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "272",
   "URI": "http://asc.fasb.org/extlink&oid=6373374&loc=d3e70478-108055"
  },
  "r186": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592"
  },
  "r187": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592"
  },
  "r188": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6161-108592"
  },
  "r189": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6191-108592"
  },
  "r19": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r190": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6327-108592"
  },
  "r191": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592"
  },
  "r192": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592"
  },
  "r193": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6404-108592"
  },
  "r194": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6442-108592"
  },
  "r195": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6061-108592"
  },
  "r196": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6132-108592"
  },
  "r197": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6143-108592"
  },
  "r198": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8657-108599"
  },
  "r199": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8672-108599"
  },
  "r2": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "105",
   "URI": "http://asc.fasb.org/extlink&oid=124434974&loc=SL124442142-165695"
  },
  "r20": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r200": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8721-108599"
  },
  "r201": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8721-108599"
  },
  "r202": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r203": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r204": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r205": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8736-108599"
  },
  "r206": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "26",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8844-108599"
  },
  "r207": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8906-108599"
  },
  "r208": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8906-108599"
  },
  "r209": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8906-108599"
  },
  "r21": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(27))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r210": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8906-108599"
  },
  "r211": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "31",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8924-108599"
  },
  "r212": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r213": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r214": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r215": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r216": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r217": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8933-108599"
  },
  "r218": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "34",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e8981-108599"
  },
  "r219": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9031-108599"
  },
  "r22": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(28))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r220": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9038-108599"
  },
  "r221": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9038-108599"
  },
  "r222": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9038-108599"
  },
  "r223": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "42",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=123359005&loc=d3e9054-108599"
  },
  "r224": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "280",
   "URI": "http://asc.fasb.org/topic&trid=2134510"
  },
  "r225": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=124259787&loc=d3e4428-111522"
  },
  "r226": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=124259787&loc=d3e4531-111522"
  },
  "r227": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=d3e4975-111524"
  },
  "r228": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=SL6953423-111524"
  },
  "r229": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=SL6953423-111524"
  },
  "r23": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(29))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r230": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=d3e5212-111524"
  },
  "r231": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=d3e5033-111524"
  },
  "r232": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=d3e5074-111524"
  },
  "r233": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=123577603&loc=d3e5093-111524"
  },
  "r234": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 4.E)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=122038336&loc=d3e74512-122707"
  },
  "r235": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=84159169&loc=d3e10133-111534"
  },
  "r236": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(d)(1)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=124402435&loc=SL124402458-218513"
  },
  "r237": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(d)(2)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=124402435&loc=SL124402458-218513"
  },
  "r238": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=124260329&loc=d3e26610-111562"
  },
  "r239": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=124260329&loc=d3e26626-111562"
  },
  "r24": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r240": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=124260329&loc=SL6284422-111562"
  },
  "r241": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r242": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(aa)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r243": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(aaa)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r244": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r245": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r246": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r247": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27161-111563"
  },
  "r248": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27198-111563"
  },
  "r249": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27198-111563"
  },
  "r25": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r250": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27232-111563"
  },
  "r251": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=SL120269820-111563"
  },
  "r252": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27290-111563"
  },
  "r253": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27290-111563"
  },
  "r254": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27290-111563"
  },
  "r255": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27337-111563"
  },
  "r256": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27340-111563"
  },
  "r257": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27357-111563"
  },
  "r258": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)-(d)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27357-111563"
  },
  "r259": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=123581744&loc=d3e27357-111563"
  },
  "r26": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r260": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "321",
   "URI": "http://asc.fasb.org/extlink&oid=123583765&loc=SL75117539-209714"
  },
  "r261": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "321",
   "URI": "http://asc.fasb.org/extlink&oid=123583765&loc=SL75117539-209714"
  },
  "r262": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "321",
   "URI": "http://asc.fasb.org/extlink&oid=123583765&loc=SL75117539-209714"
  },
  "r263": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "323",
   "URI": "http://asc.fasb.org/extlink&oid=114001798&loc=d3e33918-111571"
  },
  "r264": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "323",
   "URI": "http://asc.fasb.org/extlink&oid=114001798&loc=d3e33918-111571"
  },
  "r265": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=122640432&loc=SL121648383-210437"
  },
  "r266": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=122640432&loc=SL121648383-210437"
  },
  "r267": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=122640432&loc=SL121648383-210437"
  },
  "r268": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(3)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=122640432&loc=SL121648383-210437"
  },
  "r269": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(4)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=122640432&loc=SL121648383-210437"
  },
  "r27": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(4))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r270": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255206&loc=SL82895884-210446"
  },
  "r271": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919244-210447"
  },
  "r272": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919249-210447"
  },
  "r273": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919249-210447"
  },
  "r274": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919249-210447"
  },
  "r275": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919249-210447"
  },
  "r276": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919249-210447"
  },
  "r277": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919253-210447"
  },
  "r278": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919258-210447"
  },
  "r279": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124255953&loc=SL82919230-210447"
  },
  "r28": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r280": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124258926&loc=SL82898722-210454"
  },
  "r281": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124258926&loc=SL82922868-210454"
  },
  "r282": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922888-210455"
  },
  "r283": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(2)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922888-210455"
  },
  "r284": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922888-210455"
  },
  "r285": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922890-210455"
  },
  "r286": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922895-210455"
  },
  "r287": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922897-210455"
  },
  "r288": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922900-210455"
  },
  "r289": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(h)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922900-210455"
  },
  "r29": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(31))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r290": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(i)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922900-210455"
  },
  "r291": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=124269663&loc=SL82922900-210455"
  },
  "r292": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121590138&loc=SL82922954-210456"
  },
  "r293": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=116847112&loc=d3e4492-108314"
  },
  "r294": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=116847112&loc=d3e4556-108314"
  },
  "r295": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.BB)",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=27011343&loc=d3e100047-122729"
  },
  "r296": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "330",
   "URI": "http://asc.fasb.org/topic&trid=2126998"
  },
  "r297": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "340",
   "URI": "http://asc.fasb.org/extlink&oid=123353750&loc=SL49131252-203054"
  },
  "r298": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=99380562&loc=d3e13770-109266"
  },
  "r299": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=120320667&loc=SL49117168-202975"
  },
  "r3": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "205",
   "URI": "http://asc.fasb.org/extlink&oid=109222650&loc=SL51721683-107760"
  },
  "r30": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(32))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r300": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r301": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r302": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r303": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13854-109267"
  },
  "r304": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/subtopic&trid=2144439"
  },
  "r305": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=6388964&loc=d3e16212-109274"
  },
  "r306": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=6388964&loc=d3e16225-109274"
  },
  "r307": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r308": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r309": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r31": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a)(1))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r310": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "((a)(1),(b))",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r311": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r312": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r313": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(2)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r314": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r315": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r316": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r317": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16373-109275"
  },
  "r318": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "40",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=118172244&loc=d3e17916-109280"
  },
  "r319": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "50",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=16397303&loc=d3e19347-109286"
  },
  "r32": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a)(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r320": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "50",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=16397303&loc=d3e19379-109286"
  },
  "r321": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "350",
   "URI": "http://asc.fasb.org/topic&trid=2144416"
  },
  "r322": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r323": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r324": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r325": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r326": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230"
  },
  "r327": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "360",
   "URI": "http://asc.fasb.org/topic&trid=2155823"
  },
  "r328": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=109237686&loc=d3e17752-110868"
  },
  "r329": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r33": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a)(4))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r330": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r331": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r332": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r333": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r334": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r335": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r336": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 5.P.3)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140864-122747"
  },
  "r337": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 5.P.3,4)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140864-122747"
  },
  "r338": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.3)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140864-122747"
  },
  "r339": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 5.P.4(b)(2))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r34": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r340": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 5.P.4)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r341": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(b)(1))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r342": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(b)(2))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r343": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(d))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r344": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(e))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r345": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r346": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "420",
   "URI": "http://asc.fasb.org/topic&trid=2175745"
  },
  "r347": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "440",
   "URI": "http://asc.fasb.org/extlink&oid=123406679&loc=d3e25336-109308"
  },
  "r348": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "440",
   "URI": "http://asc.fasb.org/extlink&oid=123406679&loc=d3e25336-109308"
  },
  "r349": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "440",
   "URI": "http://asc.fasb.org/topic&trid=2144648"
  },
  "r35": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r350": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "http://asc.fasb.org/extlink&oid=121557415&loc=d3e14326-108349"
  },
  "r351": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "http://asc.fasb.org/extlink&oid=121557415&loc=d3e14394-108349"
  },
  "r352": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "http://asc.fasb.org/extlink&oid=121557415&loc=d3e14435-108349"
  },
  "r353": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "http://asc.fasb.org/extlink&oid=121557415&loc=d3e14453-108349"
  },
  "r354": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "http://asc.fasb.org/extlink&oid=121557415&loc=d3e14472-108349"
  },
  "r355": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "http://asc.fasb.org/extlink&oid=121557415&loc=d3e14557-108349"
  },
  "r356": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Topic": "450",
   "URI": "http://asc.fasb.org/extlink&oid=27011672&loc=d3e149879-122751"
  },
  "r357": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "450",
   "URI": "http://asc.fasb.org/topic&trid=2127136"
  },
  "r358": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=123377177&loc=d3e11281-110244"
  },
  "r359": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=123368208&loc=d3e12524-110249"
  },
  "r36": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(6)(c))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r360": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "((c)(2))",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=123368208&loc=d3e12565-110249"
  },
  "r361": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "((c)(3))",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=123368208&loc=d3e12565-110249"
  },
  "r362": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=123368208&loc=d3e12565-110249"
  },
  "r363": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=123368208&loc=d3e12565-110249"
  },
  "r364": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(5)",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=123368208&loc=d3e12565-110249"
  },
  "r365": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=123368208&loc=d3e12565-110249"
  },
  "r366": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r367": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(ii))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r368": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r369": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r37": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(7))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r370": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r371": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(5))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442526-122756"
  },
  "r372": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(i))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r373": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r374": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r375": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r376": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(5))",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=124359900&loc=SL124442552-122756"
  },
  "r377": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466505&loc=SL123495323-112611"
  },
  "r378": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1D",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466505&loc=SL123495340-112611"
  },
  "r379": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1I",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466505&loc=SL123495371-112611"
  },
  "r38": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(8))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r380": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "69B",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466577&loc=SL123495735-112612"
  },
  "r381": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "69C",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=123466577&loc=SL123495737-112612"
  },
  "r382": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(CFRR 211.02)",
   "Topic": "480",
   "URI": "http://asc.fasb.org/extlink&oid=122040564&loc=d3e177068-122764"
  },
  "r383": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=65888546&loc=d3e21300-112643"
  },
  "r384": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21553-112644"
  },
  "r385": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r386": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r387": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r388": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r389": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r39": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.1)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r390": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r391": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r392": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496158-112644"
  },
  "r393": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496171-112644"
  },
  "r394": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496171-112644"
  },
  "r395": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496171-112644"
  },
  "r396": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496180-112644"
  },
  "r397": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496189-112644"
  },
  "r398": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496189-112644"
  },
  "r399": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496189-112644"
  },
  "r4": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r40": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.12)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r400": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=SL123496189-112644"
  },
  "r401": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21463-112644"
  },
  "r402": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21475-112644"
  },
  "r403": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21484-112644"
  },
  "r404": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21488-112644"
  },
  "r405": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21506-112644"
  },
  "r406": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21521-112644"
  },
  "r407": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=123467817&loc=d3e21538-112644"
  },
  "r408": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3-04)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=120397183&loc=d3e187085-122770"
  },
  "r409": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "505",
   "URI": "http://asc.fasb.org/topic&trid=2208762"
  },
  "r41": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.13(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r410": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123360276&loc=SL49130531-203044"
  },
  "r411": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123360276&loc=SL49130532-203044"
  },
  "r412": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130551-203045"
  },
  "r413": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130554-203045"
  },
  "r414": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130554-203045"
  },
  "r415": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130554-203045"
  },
  "r416": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130554-203045"
  },
  "r417": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130554-203045"
  },
  "r418": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130556-203045"
  },
  "r419": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130558-203045"
  },
  "r42": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.13)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r420": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130543-203045"
  },
  "r421": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130545-203045"
  },
  "r422": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130549-203045"
  },
  "r423": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123351226&loc=SL49130550-203045"
  },
  "r424": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r425": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r426": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r427": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r428": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r429": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r43": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.14)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r430": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123410239&loc=SL49130690-203046-203046"
  },
  "r431": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(g)(2)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123338486&loc=SL49131195-203048"
  },
  "r432": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123338486&loc=SL49131195-203048"
  },
  "r433": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(i)(2)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123338486&loc=SL49131195-203048"
  },
  "r434": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(j)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=123338486&loc=SL49131195-203048"
  },
  "r435": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "606",
   "URI": "http://asc.fasb.org/topic&trid=49130388"
  },
  "r436": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "710",
   "URI": "http://asc.fasb.org/extlink&oid=6409733&loc=d3e19396-108361"
  },
  "r437": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(i)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r438": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r439": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r44": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.15)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r440": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r441": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r442": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(A)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r443": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(B)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r444": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(C)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r445": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(03)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r446": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(l)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r447": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(o)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r448": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(p)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r449": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(q)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r45": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.17)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r450": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(r)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r451": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(r)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920"
  },
  "r452": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=123450688&loc=d3e4179-114921"
  },
  "r453": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=21916913&loc=d3e273930-122802"
  },
  "r454": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "60",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=6414203&loc=d3e39689-114964"
  },
  "r455": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "70",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=49170846&loc=d3e28014-114942"
  },
  "r456": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450702-114947"
  },
  "r457": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(d)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947"
  },
  "r458": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=65877416&loc=SL14450673-114947"
  },
  "r459": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "80",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=35742348&loc=SL14450788-114948"
  },
  "r46": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r460": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "715",
   "URI": "http://asc.fasb.org/topic&trid=2235017"
  },
  "r461": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=123468992&loc=d3e4534-113899"
  },
  "r462": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5047-113901"
  },
  "r463": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5047-113901"
  },
  "r464": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5047-113901"
  },
  "r465": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r466": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a),(g)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r467": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b),(f)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r468": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r469": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r47": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(a),20,24)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r470": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r471": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)-(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r472": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r473": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r474": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r475": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(3)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r476": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(3)-(4)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r477": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(i)-(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r478": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r479": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r48": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19-26)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r480": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(3)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r481": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r482": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r483": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r484": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r485": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r486": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r487": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r488": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r489": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r49": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.20)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r490": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iv)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r491": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r492": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r493": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r494": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r495": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=d3e5070-113901"
  },
  "r496": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120381028&loc=SL79508275-113901"
  },
  "r497": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r498": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r499": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r5": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r50": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.21)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r500": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(g)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r501": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(g)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r502": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.D.2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=122041274&loc=d3e301413-122809"
  },
  "r503": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.F)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=122041274&loc=d3e301413-122809"
  },
  "r504": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=122142933&loc=d3e11149-113907"
  },
  "r505": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=122142933&loc=d3e11178-113907"
  },
  "r506": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "740",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120384911&loc=d3e23163-113944"
  },
  "r507": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "http://asc.fasb.org/topic&trid=2228938"
  },
  "r508": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "35",
   "Subparagraph": "(a)",
   "Topic": "720",
   "URI": "http://asc.fasb.org/extlink&oid=6420018&loc=d3e36677-107848"
  },
  "r509": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "35",
   "Subparagraph": "(b)",
   "Topic": "720",
   "URI": "http://asc.fasb.org/extlink&oid=6420018&loc=d3e36677-107848"
  },
  "r51": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.24)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r510": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "730",
   "URI": "http://asc.fasb.org/extlink&oid=6420194&loc=d3e21568-108373"
  },
  "r511": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123427490&loc=SL37586934-109318"
  },
  "r512": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123427490&loc=d3e32247-109318"
  },
  "r513": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123427490&loc=d3e32280-109318"
  },
  "r514": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123427490&loc=d3e31917-109318"
  },
  "r515": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123427490&loc=d3e31931-109318"
  },
  "r516": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32672-109319"
  },
  "r517": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32687-109319"
  },
  "r518": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32705-109319"
  },
  "r519": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319"
  },
  "r52": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.25)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r520": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319"
  },
  "r521": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319"
  },
  "r522": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319"
  },
  "r523": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319"
  },
  "r524": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319"
  },
  "r525": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(4)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319"
  },
  "r526": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=SL6600010-109319"
  },
  "r527": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32809-109319"
  },
  "r528": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32840-109319"
  },
  "r529": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319"
  },
  "r53": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.28,29)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r530": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319"
  },
  "r531": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319"
  },
  "r532": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319"
  },
  "r533": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32847-109319"
  },
  "r534": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32857-109319"
  },
  "r535": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32559-109319"
  },
  "r536": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32559-109319"
  },
  "r537": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32621-109319"
  },
  "r538": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32632-109319"
  },
  "r539": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319"
  },
  "r54": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29-31)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r540": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319"
  },
  "r541": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319"
  },
  "r542": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123459177&loc=SL121830611-158277"
  },
  "r543": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(3)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123459177&loc=SL121830611-158277"
  },
  "r544": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123459177&loc=SL121830611-158277"
  },
  "r545": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123459177&loc=SL121830611-158277"
  },
  "r546": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(3)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123459177&loc=SL121830611-158277"
  },
  "r547": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I.5.Q1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r548": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I.7)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r549": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r55": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.6(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r550": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r551": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r552": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.3)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r553": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.4)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817"
  },
  "r554": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.C)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=122134291&loc=d3e330215-122817"
  },
  "r555": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=123586238&loc=d3e38679-109324"
  },
  "r556": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "270",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=6424409&loc=d3e44925-109338"
  },
  "r557": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=6424122&loc=d3e41874-109331"
  },
  "r558": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "740",
   "URI": "http://asc.fasb.org/topic&trid=2144680"
  },
  "r559": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "05",
   "SubTopic": "10",
   "Subparagraph": "(a)-(d)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=6909625&loc=d3e227-128457"
  },
  "r56": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.6(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r560": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463"
  },
  "r561": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1486-128463"
  },
  "r562": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123413009&loc=d3e4845-128472"
  },
  "r563": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123410050&loc=d3e5263-128473"
  },
  "r564": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123410050&loc=d3e5263-128473"
  },
  "r565": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "38",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=123410050&loc=d3e5504-128473"
  },
  "r566": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=6911189&loc=d3e6408-128476"
  },
  "r567": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859721&loc=d3e6578-128477"
  },
  "r568": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859721&loc=d3e6613-128477"
  },
  "r569": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=116859824&loc=d3e6819-128478"
  },
  "r57": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.8)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r570": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r571": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r572": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r573": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)(3)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r574": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e7008-128479"
  },
  "r575": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "805",
   "URI": "http://asc.fasb.org/topic&trid=2303972"
  },
  "r576": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=123454820&loc=SL4569616-111683"
  },
  "r577": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=123454820&loc=SL4569643-111683"
  },
  "r578": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=116870748&loc=SL6758485-165988"
  },
  "r579": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=116870748&loc=SL6758485-165988"
  },
  "r58": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.9)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682"
  },
  "r580": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=d3e5614-111684"
  },
  "r581": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(3)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r582": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c),(3)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r583": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bb)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=123419778&loc=d3e5710-111685"
  },
  "r584": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=123419778&loc=d3e5710-111685"
  },
  "r585": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=117331979&loc=d3e41228-113958"
  },
  "r586": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5579240-113959"
  },
  "r587": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5579245-113959"
  },
  "r588": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5579245-113959"
  },
  "r589": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5579245-113959"
  },
  "r59": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=51824906&loc=SL20225862-175312"
  },
  "r590": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5580258-113959"
  },
  "r591": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=d3e41620-113959"
  },
  "r592": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=d3e41638-113959"
  },
  "r593": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5618551-113959"
  },
  "r594": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5618551-113959"
  },
  "r595": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5618551-113959"
  },
  "r596": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a),(c)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5624163-113959"
  },
  "r597": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5624163-113959"
  },
  "r598": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5624163-113959"
  },
  "r599": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4C",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5624171-113959"
  },
  "r6": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r60": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=51824906&loc=SL20225862-175312"
  },
  "r600": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4C",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5624171-113959"
  },
  "r601": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4D",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5624177-113959"
  },
  "r602": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4D",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5624177-113959"
  },
  "r603": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4E",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=SL5624181-113959"
  },
  "r604": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=d3e41641-113959"
  },
  "r605": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=d3e41675-113959"
  },
  "r606": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=125515794&loc=d3e41678-113959"
  },
  "r607": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "182",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123421605&loc=SL5629052-113961"
  },
  "r608": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "25",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121577467&loc=d3e76258-113986"
  },
  "r609": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(f)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123477628&loc=d3e90205-114008"
  },
  "r61": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=51824906&loc=SL20225862-175312"
  },
  "r610": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(b)(2)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123482062&loc=SL123482106-238011"
  },
  "r611": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(1)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123482062&loc=SL123482106-238011"
  },
  "r612": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(3)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123482062&loc=SL123482106-238011"
  },
  "r613": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(4)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123482062&loc=SL123482106-238011"
  },
  "r614": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=123482062&loc=SL123482106-238011"
  },
  "r615": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "815",
   "URI": "http://asc.fasb.org/topic&trid=2229140"
  },
  "r616": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r617": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r618": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bb)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r619": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(1)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r62": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=51824906&loc=SL20225862-175312"
  },
  "r620": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(2)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r621": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r622": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19207-110258"
  },
  "r623": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=d3e19279-110258"
  },
  "r624": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=123874694&loc=SL6742756-110258"
  },
  "r625": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "60",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=7493716&loc=d3e21868-110260"
  },
  "r626": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123594809&loc=SL116692626-108610"
  },
  "r627": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123594938&loc=d3e13279-108611"
  },
  "r628": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123594938&loc=d3e13433-108611"
  },
  "r629": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123594938&loc=d3e13531-108611"
  },
  "r63": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=51824906&loc=SL20225877-175312"
  },
  "r630": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123594938&loc=d3e13537-108611"
  },
  "r631": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123594938&loc=d3e13537-108611"
  },
  "r632": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123596393&loc=d3e14064-108612"
  },
  "r633": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123597120&loc=SL121967933-165497"
  },
  "r634": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123597120&loc=SL121967933-165497"
  },
  "r635": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(3)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=123597120&loc=SL121967933-165497"
  },
  "r636": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=120253306&loc=d3e28228-110885"
  },
  "r637": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=123602790&loc=d3e30226-110892"
  },
  "r638": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=123602790&loc=d3e30304-110892"
  },
  "r639": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=125521441&loc=d3e30690-110894"
  },
  "r64": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=99393222&loc=SL20226008-175313"
  },
  "r640": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=125521441&loc=d3e30755-110894"
  },
  "r641": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=124440516&loc=d3e30840-110895"
  },
  "r642": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=123444420&loc=d3e33268-110906"
  },
  "r643": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32136-110900"
  },
  "r644": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r645": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r646": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r647": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900"
  },
  "r648": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=118261656&loc=d3e32262-110900"
  },
  "r649": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6450520&loc=d3e32583-110901"
  },
  "r65": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=99393222&loc=SL20226052-175313"
  },
  "r650": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6450520&loc=d3e32618-110901"
  },
  "r651": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "830",
   "URI": "http://asc.fasb.org/topic&trid=2175825"
  },
  "r652": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "840",
   "URI": "http://asc.fasb.org/extlink&oid=123405975&loc=d3e41551-112718"
  },
  "r653": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123399704&loc=SL77918431-209957"
  },
  "r654": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123391704&loc=SL77918627-209977"
  },
  "r655": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123391704&loc=SL77918627-209977"
  },
  "r656": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123391704&loc=SL77918638-209977"
  },
  "r657": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123391704&loc=SL77918643-209977"
  },
  "r658": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123408670&loc=SL77918666-209980"
  },
  "r659": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123408670&loc=SL77918673-209980"
  },
  "r66": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=99393222&loc=SL20226000-175313"
  },
  "r660": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(1)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123408670&loc=SL77918686-209980"
  },
  "r661": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(3)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123408670&loc=SL77918686-209980"
  },
  "r662": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(4)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123408670&loc=SL77918686-209980"
  },
  "r663": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123408670&loc=SL77918701-209980"
  },
  "r664": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "53",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123414884&loc=SL77918982-209971"
  },
  "r665": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/subtopic&trid=77888251"
  },
  "r666": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=123420820&loc=SL77919311-209978"
  },
  "r667": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=124258985&loc=SL77919372-209981"
  },
  "r668": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "30",
   "Topic": "842",
   "URI": "http://asc.fasb.org/subtopic&trid=77888252"
  },
  "r669": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "848",
   "URI": "http://asc.fasb.org/extlink&oid=122150657&loc=SL122150809-237846"
  },
  "r67": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r670": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "852",
   "URI": "http://asc.fasb.org/extlink&oid=124433192&loc=SL2890621-112765"
  },
  "r671": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "852",
   "URI": "http://asc.fasb.org/extlink&oid=124433192&loc=SL2890621-112765"
  },
  "r672": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "852",
   "URI": "http://asc.fasb.org/extlink&oid=84165509&loc=d3e56426-112766"
  },
  "r673": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "855",
   "URI": "http://asc.fasb.org/extlink&oid=6842918&loc=SL6314017-165662"
  },
  "r674": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "855",
   "URI": "http://asc.fasb.org/extlink&oid=6842918&loc=SL6314017-165662"
  },
  "r675": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "855",
   "URI": "http://asc.fasb.org/topic&trid=2122774"
  },
  "r676": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)(i)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r677": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)(ii)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r678": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r679": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r68": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r680": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r681": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(bb)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r682": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r683": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r684": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719"
  },
  "r685": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719"
  },
  "r686": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719"
  },
  "r687": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719"
  },
  "r688": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719"
  },
  "r689": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4D",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=121570589&loc=SL51823488-111719"
  },
  "r69": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r690": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=66007379&loc=d3e113888-111728"
  },
  "r691": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=109249958&loc=SL34722452-111729"
  },
  "r692": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122625-111746"
  },
  "r693": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122625-111746"
  },
  "r694": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122625-111746"
  },
  "r695": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(4)(i)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122625-111746"
  },
  "r696": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r697": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r698": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r699": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(4)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r7": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765"
  },
  "r70": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669646-108580"
  },
  "r700": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(5)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r701": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(6)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r702": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(7)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r703": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(b)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r704": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r705": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r706": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=125521744&loc=d3e122739-111746"
  },
  "r707": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "910",
   "URI": "http://asc.fasb.org/extlink&oid=123353855&loc=SL119991595-234733"
  },
  "r708": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "310",
   "Subparagraph": "(b)",
   "Topic": "912",
   "URI": "http://asc.fasb.org/extlink&oid=123371682&loc=d3e55415-109406"
  },
  "r709": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "330",
   "Topic": "912",
   "URI": "http://asc.fasb.org/extlink&oid=6471895&loc=d3e55923-109411"
  },
  "r71": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e637-108580"
  },
  "r710": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "730",
   "Topic": "912",
   "URI": "http://asc.fasb.org/extlink&oid=6472174&loc=d3e58812-109433"
  },
  "r711": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "350",
   "Subparagraph": "(a)",
   "Topic": "920",
   "URI": "http://asc.fasb.org/extlink&oid=120155617&loc=SL120155628-234783"
  },
  "r712": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "350",
   "Subparagraph": "(b)",
   "Topic": "920",
   "URI": "http://asc.fasb.org/extlink&oid=120155617&loc=SL120155628-234783"
  },
  "r713": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "350",
   "Subparagraph": "(a)",
   "Topic": "920",
   "URI": "http://asc.fasb.org/extlink&oid=120155617&loc=SL120155638-234783"
  },
  "r714": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.L)",
   "Topic": "924",
   "URI": "http://asc.fasb.org/extlink&oid=6472922&loc=d3e499488-122856"
  },
  "r715": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154696&loc=d3e54445-107959"
  },
  "r716": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(f)(1)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r717": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(f)(2)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r718": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(f)(3)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r719": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "340",
   "Topic": "928",
   "URI": "http://asc.fasb.org/extlink&oid=6473545&loc=d3e61844-108004"
  },
  "r72": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e640-108580"
  },
  "r720": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Topic": "940",
   "URI": "http://asc.fasb.org/extlink&oid=123384075&loc=d3e41242-110953"
  },
  "r721": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(10)(1))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r722": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(11))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r723": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(15)(1))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r724": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(15)(2))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r725": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(17))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r726": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(23))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r727": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(6))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r728": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03.15(5))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r729": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03.17)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120398452&loc=d3e534808-122878"
  },
  "r73": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e681-108580"
  },
  "r730": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(15))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r731": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(22))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r732": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(26))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r733": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(27))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260"
  },
  "r734": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "235",
   "Subparagraph": "(SX 210.9-05(b)(2))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120399901&loc=d3e537907-122884"
  },
  "r735": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=123599081&loc=d3e62557-112803"
  },
  "r736": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=123599081&loc=d3e62557-112803"
  },
  "r737": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=123599081&loc=d3e62586-112803"
  },
  "r738": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(a)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=123599081&loc=SL120269850-112803"
  },
  "r739": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=124429447&loc=SL124453093-239630"
  },
  "r74": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669686-108580"
  },
  "r740": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(15)(b)(2))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r741": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r742": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(15)(b)(1))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r743": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(19))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r744": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r745": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r746": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r747": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r748": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03.(a),19)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400017&loc=d3e572229-122910"
  },
  "r749": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(18))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r75": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e689-108580"
  },
  "r750": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(22))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r751": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(23))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r752": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(3)(b))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r753": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(8))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r754": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(9))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263"
  },
  "r755": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4H",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=116884468&loc=SL65671331-158438"
  },
  "r756": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(d)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124506351&loc=SL117782755-158439"
  },
  "r757": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124504033&loc=SL117783719-158441"
  },
  "r758": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124504033&loc=SL117783719-158441"
  },
  "r759": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(c)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124504033&loc=SL117783719-158441"
  },
  "r76": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL34724391-108580"
  },
  "r760": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124504033&loc=SL117819544-158441"
  },
  "r761": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r762": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r763": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(2)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r764": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r765": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(i)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r766": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(ii)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r767": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(iii)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r768": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(iv)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r769": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r77": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669619-108580"
  },
  "r770": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(2)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641"
  },
  "r771": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=123600520&loc=SL75241803-196195"
  },
  "r772": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "210",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=118262064&loc=SL116631418-115840"
  },
  "r773": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "210",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=118262064&loc=SL116631419-115840"
  },
  "r774": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column B)(Footnote 1))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r775": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column B)(Footnote 6))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r776": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column B)(Footnote 7))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r777": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column C)(Footnote 1))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r778": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column C)(Footnote 6))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r779": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column C)(Footnote 7))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r78": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669619-108580"
  },
  "r780": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column D)(Footnote 1))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r781": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column D)(Footnote 6))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r782": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-12B(Column D)(Footnote 7))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611197-123010"
  },
  "r783": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5D",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-13D(Column B)(Footnote 2))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=SL120429264-123010"
  },
  "r784": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5D",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-13D(Column C)(Footnote 2))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=SL120429264-123010"
  },
  "r785": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-15(Column A))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611379-123010"
  },
  "r786": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-15(Column B))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611379-123010"
  },
  "r787": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-15(Column C))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611379-123010"
  },
  "r788": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "320",
   "Subparagraph": "(SX 210.12-15(Column D))",
   "Topic": "946",
   "URI": "http://asc.fasb.org/extlink&oid=122147990&loc=d3e611379-123010"
  },
  "r789": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "310",
   "Subparagraph": "(SX 210.12-29(Footnote 4))",
   "Topic": "948",
   "URI": "http://asc.fasb.org/extlink&oid=120402547&loc=d3e617274-123014"
  },
  "r79": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669619-108580"
  },
  "r790": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Topic": "954",
   "URI": "http://asc.fasb.org/extlink&oid=123364037&loc=d3e3115-115594"
  },
  "r791": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "440",
   "Subparagraph": "(a)",
   "Topic": "954",
   "URI": "http://asc.fasb.org/extlink&oid=6491277&loc=d3e6429-115629"
  },
  "r792": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "450",
   "Topic": "954",
   "URI": "http://asc.fasb.org/extlink&oid=6491354&loc=d3e6049-115624"
  },
  "r793": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Subparagraph": "(d)",
   "Topic": "958",
   "URI": "http://asc.fasb.org/extlink&oid=120429125&loc=d3e99779-112916"
  },
  "r794": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "958",
   "URI": "http://asc.fasb.org/extlink&oid=120429125&loc=d3e99893-112916"
  },
  "r795": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "958",
   "URI": "http://asc.fasb.org/extlink&oid=120429125&loc=SL120174063-112916"
  },
  "r796": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column B))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r797": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column C))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r798": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column D))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r799": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column E))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r8": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6801-107765"
  },
  "r80": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669625-108580"
  },
  "r800": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column F))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r801": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column G))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r802": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column H))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r803": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column I))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r804": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Footnote 2))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024"
  },
  "r805": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Subparagraph": "(c)",
   "Topic": "976",
   "URI": "http://asc.fasb.org/extlink&oid=6497875&loc=d3e22274-108663"
  },
  "r806": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Subparagraph": "(b)",
   "Topic": "978",
   "URI": "http://asc.fasb.org/extlink&oid=123360121&loc=d3e27327-108691"
  },
  "r807": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "985",
   "URI": "http://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756"
  },
  "r808": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b"
  },
  "r809": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r81": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=SL7669625-108580"
  },
  "r810": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r811": {
   "Name": "Form 10-K",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "310"
  },
  "r812": {
   "Name": "Form 20-F",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "220",
   "Subsection": "f"
  },
  "r813": {
   "Name": "Form 40-F",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "240",
   "Subsection": "f"
  },
  "r814": {
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "13",
   "Subsection": "a-1"
  },
  "r815": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "1402"
  },
  "r816": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(1)"
  },
  "r817": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)"
  },
  "r818": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(b)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(3)"
  },
  "r819": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(i)"
  },
  "r82": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124509347&loc=d3e557-108580"
  },
  "r820": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(ii)"
  },
  "r821": {
   "Name": "Regulation S-K (SK)",
   "Number": "229",
   "Paragraph": "(c)",
   "Publisher": "SEC",
   "Section": "1402",
   "Subparagraph": "(2)(iii)"
  },
  "r822": {
   "Name": "Regulation S-T",
   "Number": "232",
   "Publisher": "SEC",
   "Section": "405"
  },
  "r823": {
   "Footnote": "2",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r824": {
   "Footnote": "4",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "29"
  },
  "r825": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column B",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r826": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column C",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r827": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column D",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r828": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column E",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r829": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column F",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r83": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124431353&loc=SL116659661-227067"
  },
  "r830": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column G",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r831": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column H",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r832": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column I",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r833": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "09"
  },
  "r834": {
   "Name": "Securities Act",
   "Number": "230",
   "Publisher": "SEC",
   "Section": "405"
  },
  "r835": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)(iii)(01)",
   "Topic": "848"
  },
  "r836": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)(iii)(03)",
   "Topic": "848"
  },
  "r837": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "848"
  },
  "r84": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124431353&loc=SL124442407-227067"
  },
  "r85": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124431353&loc=SL124442411-227067"
  },
  "r86": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=124431353&loc=SL124452729-227067"
  },
  "r87": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(1))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r88": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(10))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r89": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(20))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r9": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=124098289&loc=d3e6911-107765"
  },
  "r90": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(24))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r91": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(25))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r92": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(5))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r93": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.1)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r94": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.1,2)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r95": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.2(a),(d))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r96": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.4)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r97": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.7)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r98": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.9)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=123367319&loc=SL114868664-224227"
  },
  "r99": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=123570139&loc=d3e3179-108585"
  }
 },
 "version": "2.1"
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>138
<FILENAME>0000851205-22-000008-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0000851205-22-000008-xbrl.zip
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
M1('1Q?3@(8A;.)*OTN&.S,2*#K,9^;B@@XQ*%&%40[:N*].(3="N-((-@_8
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
MCX_&W0&-QX\2*YWQ=!?29Y-PS]]UW_'UJK!9'Z1?[EC<S"4QB N2P0M1>67
M:QU H1"FZ&@Y^E9B:;!\LM?%T?#S%1\O7CQ91D0EQ\0R)Q6*)>#(V&NK313*
MHO/)"5K\5'AS[I1WDNVN%%_3$L;,9I-5F_(R:E+@+$E@5YP6W^DN#"JSW+L9
MD@/E#$83 %2)(5/VF:93R%FU8(OM+%'YVYO>YXC1G>#ME%(IL3_3UM;,9Q&
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
M'^W&HPKWZ^[N7FN\N M)Z:31@$4(QH8,QM9%(5(0YI9LGO\.O&H= -9MG^K
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
M8OP9.\X+3O$GCUG=E^ZDEIP:3XFQ>309\ZW?OEG&^"T4!49DC<H"QV\0O0&
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
M;=J^5^VU [_JMQJ>WPN:';M9,P*AFV9H;UIRS0O9A%V^WL8>S4L5*!L3V-N
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
MTJ,K[2U,=MTQF*T[[/K+93!6=\=:-HC:VO:KM[FZ<@K\I,]0$\AB3L\^?OQ
M?^^?G%N'^Z/]'2_9NM-MU%XN+^GM>,D&45N]UGKU]N"W_>'[/D+5$ L!S63_
M_4E?,I4O1Z/?K/V#@^,S8"GX 1I&_.?1\#W](&=&N5*SXSK;1P?MW@MF.SOS
M:+/HK8L0,L/1R?$'5EPHC?9PEPVWG4?YHEG'KKQOH^C-!@WY>/1;_\0RLN)V
M3&/[#K'S@E$$>@<O@&G8K1]-;P_/X"E"JM%^]38W3S"C9?\$BW8POZ5_]'YH
M_7YV<G1Z>'1 $1YK]-O^"'22_F<P@HA*MVVMUE;.^FAX^K%_L NR;2%'I_/[
M&DO?)3/ODEP?5 MD-K/&Y=WE-+_TXW[!6J"$AZF] %7P!0DJNX.:X$F?X*0J
M:XJH.&%9P[9;[X\_]T_0Q;WS:F_A4;]\_K)#MMPHHJO77KW-F<K!\>!C?WBZ
M<U)MZ4F^?/:QPZ#:+*)KO'HK*Z+.K>,O0U!(?COZB G(H)N,]H^&UJ_]81\T
M%0RX\_>DK^3YSC)Q^=Z"K!T;VCZ*>/EL:(=OM5E$UW[U5C$<XB7HDP5&=%K@
M+E@3>KK/#MN*S!YBR\K"UA\?L7W)SF[:RL/OU%\ZQ]GA8VT6T?40??-H>'#T
M$30;(\?P7;\ODYO[)Y^/#G890MMXLE]C)[O(T"Y4\! -->J%R-#G76#HI9_V
MRU= =I@W&R6F&BUTW/YV].N1+*9:4V5EG1[\UC\\^[!30K;Q=%\P2['L'5K-
M9M%;EUJY<JM9Z_1L,-@_.=\QC>T[Q(>9QL_4\E5];NR^G,M6-0K'%I"[3N'?
M?2HONU.X:AUK3O'>QLLFD[M<9/,P6'XOMD63'4W"S-J/XX4362=BEJ1S*XFM
M=TDZ93[NP0A.&&=6D*0W3NI7HR2Y B8-LW/F8@J[FUDWX7P2QM9\(JRI<&+\
M%HX+_PP$'#F,G EOD<+=!M**G)ML#U[EP#>9Y<$Z0Q]&@77C+S+QT(O<I94L
M4FN1"?6"FR3U,PL!C^JU7\3M3'CSK$)_VK^HCQT8W0MG,,K*5P(V?+KN"U=$
MH;A>_7R6)I?KWA$B:?JKCT=P-.4/;\(H*G\V=9;EC[*)L_J<ERPB?_7)PJ=.
M[%M9"!3BI')_\),$MBLU-Q-VT-'/92+.Q)YU#+L;+.:+5%BIR!81/ 8SL_PP
M".#'N%-(<='2"M)D:L&9IC"4?A1?0U_,)PD<D=PKX5N2.!XX60?^OQP')W85
M)S<QC;>(^=]IF%UE\A,/] "@222GG))X$ZP93'?FH)ZPP'4Y<V09P'VL>8*T
MG(5(D/A!9ODB\]+0S><'5$J/>LX,_PM?R T^@9=;[QQOGJ3Y:3JSF7!27 ?\
M_".\4GIJ^#]5ZPC6)NW>?2;7!V_:GO5%P)L7-(-4+BI.YCAQ("-/P,+]!9Y+
M%#HQ_CE+<(N65K;P)@_L;<6ZF83P1 ;3O8)7PNDYF;H_/CP%Y^H+>KT?9E[D
MA%,:-G&!*3EJ[[*%FXG_+&! ^'TJKL.';RK\ EA\!!M*KTD\IA6/+FY^(8$L
MX3K'Y@=PZX@Z4\L+4V\QA4'A9W#T*(KS.=.B30)*Y3JVA.^>Q9'(,EH/LEB8
M#-_0&]S8%'8ZA-M06>5Q!\DX%K=JD<\PW_9>ZS'"?%6=PXVL-NC791^ADPE6
M.8#^.\U?GG&VC]Q=?4EQ__3.3>']*VSV1I0_ 1%3_FB1%;AK_B <'HVJO@6B
M1RI-+#XG^$\ZD_H/_3($4D4VE$2A3^2.]RKT0V DP,Q6:?>1:FSCU<,$W_N>
M!+]>*V*;_8V5-\'>L'NZ?MKJ (7U,4V",!(;-^_U-V -_=T VP]C3RV(Q-[
MR3+'FX!&-9_CMY;=Z]JL!^@'K0E(H_\L0,*A2$)&&R4>#>#,K>-86)_##,<_
M3($M5*PAO,V[JI2&KMF==HT5$1A[+B(QFX"(M>+%U(4; Z+Q=:O6_8D%9KM5
MJS9@5[:%F<O-#E&)B6"S4!@"UXY\L A)#[I&M0-%WQ1V!'YN7?.6P5?^PD-Y
M.8&]1+T#52_<)2=VHN4=/8@*0QB#L)WR.<(I@41@-@/Z0C)E&1XO M!0%J21
MX @@S.>@WK!",7=0?;H! :/?#;.5<L;?@\,JS"MDR307WB2&G1LO>8)C..",
M6-Z":0$GRC/ 7^%H,Q3']&/'#:-POB3E08B55^BE(T$!D?B%Y9 ML;*D>>IX
M5]*\0%TE%?!H""H 2$I2"(#"IPF\%S8=J0L^=K)9"+^WT,D0T0=JSOS<G.4L
M6!9$U#!X11LD_$><H55!_\;?@H63\8Q@CE/+U_\NS1<4F,()P'I!C<G6;74X
M16T0E"#4J%"OC$)/ZJ@P<];>)@L8WOQ-#,H.7$K<JP0F)>;J-%D?PI&0A&'2
MJ'LYWK*"4X*U")_^%2(A*>6*"0-E$4X#[@,<<C:W,N<:EL)'E+BH<^,Q3=)D
M,9[0DH%V%JPSPXE$C@OCXM!3)'EX5)ZQ!?-$4MBSMNL^)S.T%02= O*J3(QQ
M<ROE6YQ?$]*B$S*6'.L:A3I<@*]=^XES+;0A)D [2*:A9WD3!TX-#2Y8OP<D
M2H^1F>),A1K"H"Q-W*G(*0\.P5WFO\J<""_PQ(EC$9&6KK^:+V>"S (/-CR9
MPO7>L_8CL.3PK.6&@%K'O]+/X-845AJ"D8+OQMD@IX<UC<'*-CZ7$F2LUL67
M<4ZR ^>/ZM$"QK8$F@]I$M-3? N ];A$A*F8P;U%WXZ/%R9-;LF.!]ND4_LG
MSH.D3#('2D[1H@##"69:K]5!N.WSI/0BE/FGYZ0FNWS@-7;G*Z]Y#*EO@%JF
MN)&4X0,GO1+S[;JFTQ6&NB).OB(=]0UZD)R929;D8HCN+U^04>S!?&#Z/GDS
M8H.MH\0$!A*3;T--RC?O,$Y)<DGX-0@8Y,M[<"KI?$$.%Z NH,=\'2(M2!@T
ME^&5N!/PI.6"S@5/Z!%A=!$$8&.#";Y$CK#(<".*.\?7#XU0 =(#;J/<WU5)
M#0,XEILF#OS386=<SA$<+TVR[/YM!!4T6I"*= \36,\ IL(G$Y/L3Y1AF0 V
MF<0XM20U?J6FR\L)DL2G?[BX@\YX:QP$FO?>".VX4B<"I.T*$DG2C:.4SM)5
M8.,T9+J6KH0(MHY\2.A5U_Y/-5!I@"FQ T472EG'/Y4;@)0,(@!XEYB'Z"(C
M0D'7%;JQ0O0W73L@W."%RK+('V5J$-(]"2S4QT]716:VS%C/0V])FD01D)J2
M%_)R9;\4[@>- JL;"W6_R4>EQD&/9[)N#'*?TE,6>G7'H (D* Q!LCM1ELC9
M"_)ZTQ,IJ.J6B(%VA"#^X@OT0&HOJW*3)D2;K$U>Y^*'E%0XY2@BO]Q,Q-4,
MQ(J'BET"XE9O'NET02H$.UGQ>B6++#_D;:%L)F+9I" S[02UM;"!Z$U'_R@*
M6.,)7V0P[8IYT'R"J)I8$WA+53$]@P\8VUL>[EI$R<R*Q8W!YI!M+&)BS#P4
MJ6FD8XOK)$*=.%<>3*U[SQI-D-J ZH!9*S+'PP[8>6PYH!N2,<&>OTD22I?H
M>GK7UT-ITL5YX4Q!1R73$.1%Q1*2&P.7KLC+A#K,8D[F1 6GYLD-FX&"7V5]
M,%O,4%+Q[)74XGD)F)7D#5F^"N+LF3PF,G:D QUH.PQ0>96[HP\9KH;_ (%^
MC]CQ,P0''Q<<?>0UL.\/8.]BT2\G%KU9[LQ?4?'#P,/I'$W;\7)+9 :J#>,$
M'6%D?XK;F7(EJHO/(<0_YWT+R!_"*BKZ/G(+&(4^>D9(%45&#HH4<.V$=(EQ
MFMR #I 0]US$'-\F67&#*CA%D"V,]L*+0PJCTXPGH/0F*2JSH!JAR,*!,HRT
MXHXC0T>^!!=?F[UD^KM"Q$J/FX8^&+KJ40NLA3&K!_CES$'7#:F[D;44CG34
MF?&X:R<"4Y7B%UIOYR"C%+EA'"?7K."I76+=;66^6>Z8F"44;(6W8LR2]QU$
M$6M*&6KR8^E3(>U?*N26W)8@C$'JX*^G"1A4%;:BEB@"6;P:1C9L,?G[U!0"
MAQP3RC.5&*]!C_>4?N'PY(D#\&+DG#BJ'/YG(0RGM[>(9!R<?*_H)<-9TLX5
M_"0P\31C'5GMFK*E1(S\ NU1LD;GZ+^<R\,@<LA@ 7,0V[%(QZ J>%(;!7Y/
M6P]+QN.]F20<WT0#B2Q']*F"(B+]I.BJ\S!;@)30L79+H<]W6Y3"+T@'U^@I
MF@CG&HV&$,/@&9 O^G718F==C?S+I@N\<+>*W,"PTR.*J.,/BTR KKA\<QBO
M>+RGSA6<G]Q0T*Y"?B=FH) S.$%W?0#TX>-)KUC0N>Z.Y\\F,XRP8C3G[FNB
M,:D"DH52<A8R21G7EBX7,+[D!@=>^$!':H8E=H=/)@MF !,1S7 &63*;D W.
ML7=IQ!C6SOU;X_A^RDZ3AXC0]&875]DX7.\.9<(N>,'9\P+WER@&#2E0P\'8
ME\YXP321QS-TG,D78H9'G\;&E+(DF-\XY,I1KV,K*@+3NOA>W-M%/$O1]T!Y
MCS B*O"9HLB0GS2I2'$A;1H:A%NP12A(XL&,)<G"<;A2/ M^@=[R+;+NOG!"
M0XAL>F[2#T?+*4T#G0H&->3.GP<=P$@#-RR/<T%OBG=%<C#&T6%1NK/ELC2B
M521;(YP-YZ[ ?J'IXA!WP3FS_;[B&^;9E^8S3<@H=,4R05<3\"P08>S^(!&$
M; J7OI;*X!6B"M],49HSZ4[CL"J]]"PJHJ+#D@V7HFD[@[?"X\JVLY#$X;YG
M6T4Z*1F<]SL7U>5"8LIU/!\NO3>7T0T2UO)NJW@%.?PK*.]1Z34,U*QT(_/1
M8S&'%US)4*/RLF92SFN_4/XB:?>CZ$+Q/$56:.I7*,4QF<X53 MCD< 8P'Y9
M$00N!NH3\C9\2'(R,LTCI?T0.\#'E<7.<3R>"PN]+.207DFLP0AXT.,*NTBD
MXIK"5N3L=8K*5M&!ABYE%Y23()RSSRE/'UCC;20RA\L2IFNC4YM'A>M-I/V<
M)6<;-^7[K2,E.A21+Y7O*#.L%[*;\L-"MU?I$ N<B50<YM:%L.\3I);UQ7!?
MZSD: V32FUT(F*#_5(77)+&J9<D@9]$[KL6-0^N$ZY0) 7<7M)W"7$U+K:*8
M]WKCSEC46I-.Q!-RDD5@052!&4_51(D!8Z[07#H:"RP&KY+,ETX*23;2WJ -
MP[1AF;"J5\8+*IJ:14-8N@B1/-!/KLP39**5HOB0O*V2'Q=Q%6ENJ),N')(R
M/,M7G@.EVW*W/TJ=8..F^W > B84H#T3+("(V-B_-T(BO>$RN%%2>2M2?&E7
M!\5'JD@B1;4%W\>^=K8VR?FM28J\N6A2<V(X$HWAAI8W #W;LR2,E>= ZV/2
M6X'R!*R6*F6:%$P>E0[%P3U,C9AA1@]%XCWQL^/2?W5F#ED6Y,PWE7WR C-_
MR:V*OZKE%]9!]A$Y/PJQSMEDF=%UPOV F:UXR4$E2_]'N<0Q 1QNL8/SJAC:
M HK>V0)L7U2!5@P7MN]HXBQP,47><^"7CN(_*'0Q+LI.H65Q0/2^PG-.A#%$
M9"=JQRF](I-#5<QQB*S4!$AZ8/5 /,:3<;RKK8FL/N25EDD0I\9-.F6*W(JE
MZ04H5B#/D]U,\E"SXDFBIXZO+IPG*=.:O^3W2Z8/YI%[DL^<,(>6E$R8"]7?
MAEF.PB\34Q=$\C6N23]#7K#$!;//L\:+T%<)#P4^X(/$O::(,SI?EK#-50IM
M*;YAA++5?9>9;\PRX-T_!V@]%7B%LCN]B>!T0G)>2O8BRV<XJ(WKA#MZ%%=/
M<9>?->V^V?E+>??-[B8FWC\HC-B9K=72^F'%:AQ6)),U>3<Y@"GG Z2.BG.S
M1"F%/%>3'E<M?=.??UQV"DG9I^>K,H;XDI@R(XQQN28E,=.<+V?:A&.CC7,U
M+Q<^I0O2K%B@P'_F_%O@RS,ZN3S/3R40T91?'Q^<_'3OW<%LGPB-/?71+K)J
M$F%]%UG=A*F\U,CJG]4JI,C=,E5"*0K2"#%=<:#$ V,,93J-S""3-HN*05$*
M4Q2Z*6;$E/16I9%4P!C %.1QZKBNSNL"+A_.)A3$S L+^"6@\'+JS)YZ'<\6
MS#L6?"O31@7B%N@JHY2U13B7XGW.N;WF;,T,16""$ZPZ\$-.NK'21:3,)9F=
M519>58[0^&HP2NGWKU%8D5X.BYP"5QF#5@$2Z],B]*Y^7801?3=/4)C >T5\
M':9)3$L&T9+<%#8^L5SZ!4NF^7K?C=YDTH5"3QZ18VFG(\P-1D;Y,Y=+,J;'
MX0L0IB] K3_*[=TCLG=_I=7^*NU=64&\%<O,:XT>9\/_!^DK6JJ43525E_2E
M98/FA1I8Y+@BXE]+58R=Z:3BH_//>GWX<?"3A<.BAK4@!P)8KTZJTY)UOGQ^
M<]8F].8I>2O9O/AF'63A3+1#9^X,G%C>:-.]M:)*!N&M\*M3F-P<"R5B?R(B
M.:BL\U$JI>&*4WO%NA7Q'0Z+IF,G#N_D/4(];8KF0"'1CI(2T)*6SK+98JZK
M%S ]E4J5A'0 ;MX-6N\=.Y'A]HIU6 A9PK+Z>7KKQBWFP7LBXC%FTIC9!)52
M1#;V"]F[KT\._]N9SG[I_T0.5NGF10\KR+IL+H..>:KH$])($Q4T5XG5!7\N
MVIGX0*AJ[G4$^=X\"(&I!W-V93,$1<%MG'"."X<#@/F/G9#L*\?SJ/B<(P"%
MP#Z[?O- &=L)<!$FX4P6_)EN81F9Q](8L,_@-YM'Z^O)0QTR>M 1^T)"4.3)
M5[A?*MWH!A=I-_ZIBGLJEMU6?]28@O0'=H]<^"I6P*D2^DA(:$_#.5=))I:>
M!@4NV*T?9A;&'3B3:GVF2ZHK/31;9(8/I\22_T%Z5;E91I:70;JL,V'A7S$X
MFO_.O"XJ%(EZ3K&NJDC0E4(A0RD/&PDRHF(["[@MES3R#<%A"]>*HT4>HLEX
MG&F&8ZF3XA@,R0^5@W-#82_*?"M&5#"WIQ#WUX>Q)@& 45&4_WSM35/;9UY0
M H!11:*HT28^)8]QNHZ:-:;"15AO-Z>,-_*:TXMA+V@!Y&6.48:B)^1>=J#0
M:2Q2?L"<W9;;2)%_4">DASP/2>')I?,0?7XR*XX#:K!PQ(4!/9MO*NT_D%R"
M*1,K:5BP@XLY$!M*<5+Y*Z34"Z0Q5$]F2\*+JZ@B8Y^P8%)!.SI7/M!2JIF9
MWI^GG;'S'7^C:&*&D0&T?N@=F4J%*=Y)LX*4TE(X"7,.=P^&P@IP' FV0@]#
M;G@=,)77(%L09Z^8T4KB0(D9(29.=S-)X#4A8\P8R#X<KB!;B^%E##2=AS</
MBW^IBN>!>6\>0=Y7%EDN&#PF+OQN$05A%$W)0[%A*WE4M4VAF,_(]O#E#6%W
M>)CZ53SW)>NS$OF(I;VL)YXZETDJC<J\OA$#1MKS+VM8E!-3,<^04X0%RR:<
MAU2MN;+0R/HJU6W"#ER'GBQ8B4*2,"O+4[4W/.UBQ210NX*N@%L(9B%B!(2.
MJDI;\Q.J)55U+<(L%+.X2$LB7CFJVB8*,1=X)@O@83E2#R7-26[$S[AVRX>=
MHL0>]E$C=Y.9B[K$S1A@\R[./66+&J9)>B=DCDCIV+5K.R^#S7@GD_N/ DD%
M!*!,@*;\SC5)<7BT!Y3=<(3*:TP84VM!22K6V>F^KNM-&=Y %;TJ80(4X^A/
M<[>2S'4R3%JE'"F%QXER]ST1/I4BTLFP7X=#P,KX55$X5;ZF#$D*P8("@?8!
M<)]H685O@G!,=S: ;<TFA3U,TF)U/DYR'_X <8HW6'F%Q*TG9NIP)*!:/@K\
MWKL2/MV6B'.Q!Z!->DG%XL19 >0$NN9,T3\>QGK@ES5'I%(OOS9[.&K4%I5G
M4:V"DW;*;R\>^9JW;MX-6B]Z3BF+\4!A-% 06NK8IY(!;MQ*'C3!.0L3D:^,
M1&^98O2(),X ^"3:9U(W-/5=3&#7EBK8$.C_D5&Y,=94.)Q0B?3")@!S#OV=
MJ?SS>SFO?&U2J&.-H\2%6[TN,U3C>QG9F"A XSSJ6  <D%]IIL%O9R>8F> )
MLR6?E-Q*3H^58#-+74[,%Z>@5<*-Y4@H(VZ0V\ZH %=)8^OFJ_<KY7&,M&KF
MZ22UT)UO)/HI!*-8+PF8=GPEED8B#MUNE8&3AV=SJR7+L_3W++X'NB3!0DXD
MB41:"FAMDLR4)V^PMSP3EIS>N6,\'U"Z!YT8V3)G-6H37%H4CSI> _XT1&2K
M- WEMINVNY8.,4<#T,6 MAP?/'DG5PYQ:_!R^*@*N##LCBYQ\#-0 N#3TSE!
M#MP/KM*N/PRN(@^Z^*-Z\Y\*EK0X"?A1?X%62,6R>_<_\YXT,! D<)B.=.H\
M\#B;.BJ%6BUT996*CM=LCIX70_8(Q/V)E7**WS!#.-L[W;,.01UTJ$[H@=$*
M*U@WZ(F(X2\WO)^N_H[I HU=NL F3.7OE"[PZBUEJ=%=EN)C  HXJ:[R]I9N
M?LYR# DCLS(?8 E%+K6&)12YR^\.;  B/9R+N&+]*P%ZCZTO*EV/3 #XX*/(
MD@TLYWB4_T/Z$'(?=RZ&+(G("S.S[P,18R6 ,3G(&RABG?(L=389[XQRR$ R
M+4T'QAZ=]IK?J@A\CHLS<5*?+,Z5)V0YZ#R<%^I!YS(G&=,>3=,*ENE@;61!
MM]7V[/K1E=)2KC8UU"GUPT)2Z6+FDX27-C*&>+$D77T-P@1CI^CP7C-2J+5B
MQJY;*7HR37.-0ZH5Y#&;W@G"78E2P'<))J>(?$T$N7)96*Y>$]?*KH"9&-5-
M(.MDR8;:*GWVN;N*!C>RWIT<* 6VPT%*6PT4ZNP.,K]9[:0K"VHMN8:,4]BS
M1F42TP14S$V7(0K0EU-=V4(%E;I063J+Y?[E]ED%O\EKWAT/@S>:!R64'+EY
M/&&]B?T;)6@>.+,0]G+CYGQ_C9< BDB60F(HXC%1V35B$O#999F0$85R@$Q&
M!K@>B_1$:?[(B 8F2!E)1^P3,S#'D]#H;N HN(08T[:4V:)G5R$[D"/OS#$8
M1@AE444[NMA><I$S<#&2BJ++!"]8HK;27*%!$8!ID'UV*#R!:&2,&-P FX M
M Q7WY\GX5KU2;W4LM01IPZ,S.L]5L2OU;@V%(4G2B@P]:O:MN$5N'_YBM=J]
MQZ<4_(*HR@P]4(XJK&#^,?Y8W:XQ0&N.^IN'B"H2*D-&(QU_BGZT>2I9P3'+
MK>*ZP?2I--IUHINOFV:;=X]7[H1=?U"M/9#H';A!GPFR8_.7I"*ALY3.!3DT
M01/ X4\(B#>_=PJ<A'6 6R1VC$]DDB?,\=('UC=)_Z=QWB#C#+W'K <]9;^!
M$E.Q/D;.4OYSD("&\L[)GK.BXI$;+(,]<@.Q\D1DVOVCBEY=@3LND0C9NZSN
M$6F 6)D24+A MJ0!74Y!PU0W8M\/E*1^A^@T%:M_ZV%,EKC&1^"K!+Y#?_7C
M^621A4XV!>9IQ-@_IB3UCTCWH$].\@*%BG4ZH>8GO"'O%O&/.$F)SL0I-=*Y
M"\?BJYH>2DXD":-*6REYI%Q=3(_G25"RI4,AC2<Q:.9Y4'TT):'O(\T%M9$5
M Q?;6\PU)E..:<19)22;M/N; VSX DR?3+B>*960&F86VTK)L0K'* !;@K"4
MA9W4>44"NL(XTE:5]F2>FJ)]XW/A3-DLE_(640_D/#)K0()*0G,>J+='^34"
MVU?H;T"2H0ZZ@8&;ITJC#ZJP"??0R*W<_(454XXQ*XJ#BCKW':B,XN"JS%::
M3EH7E$937MM5REFB6\9/$V"3,Y61!-)1,VZ.PS=7FV=7823?[B54 SVFVZ*5
MXZ0$X@S;2! RJNY/8<?@VU9RW-0*\HP].DBJEY6M!PQF4)%<OU+(&JZH/"#I
MQB_D Z)[1>9M*IQFG3Z4X_M*[/D<U2['*=^:&ORG^B*Q0X^(L[Q;SJ^,/;(M
MNIO&-E9KT-X4A;WG8'^R*IQ]U:QAG '[31"):TG&C>:=LFS$TL$EPR92&>@R
MK]!(6F6'56$>")H8LGC$:T&V(OP>G4><0DJSS"^(,3E55Y#$"X7O0<D!\G,'
M&X"M2_0DIX*;PXTA8 >+$+AJ55<85\FP:OG6<*!,YR@[U@2M7 0:D?1@&F\\
M="7',(?Y+2A_+4J<F-Q>2Y4<B<N4E<<")R[_F9==JJW8%O3^$S%>1 [5N^+E
MX<YP6W);2HY9C[TQG(\-E+2@OBQ2:A@PW:LIEQ)LW,AA9)1E5BL\O2_LBI M
M*1$,"GZ@"D\HUS3W?W#>(I-4M@+""0J@)WO7.7XRDXIGRF?!,<!"Y)BP.GAR
MF49),E^W>:S['F@D[24\RCT3&S?WKS2+"&5#4P=8D8O^6W1LWMS<['F<: <$
M0Q*;TL.U7[3"R.N8+#5A,#&IE:M!I' N-IM3#C/569*$G2Q]Y.PK^?P1Z59
M4,;&JA\'"58 ,C7+Q]]IK%3N))F9W>DH.TL^>-H_  OPB*Z0>@9G7>Y#R5XT
MW8RR8GWB?E]PF>0;S&:5G_C:'$A@^_(371P@Y]#B=A*ZH6K(X #!^[I))'<*
M3>4  84LL(A_D:K4L$6:+62&\RGOHFRJV7CM_(3/VJW7_D_*C76:-YH%BW="
M/O=]*FFP[%ZCR:"R. ,9",D2Q@I%49K$5!TW0W,N]-BA2MF,)!;5'"DY1J>H
M<C-4FC9RETIQ\O.$.SC"*:QDJA;7_/"/V46/<#,%/[W\5@]9HF<@NKUQ<KUG
MTI3JYXO;7*)?S@1WE'4LFT09[>+<);<WE. [/+^'>YKN\@P,#M1\EH[E[5W'
M\I>=G  S_>Z-.56?XC?6R='IOZQW^P>CXY/-:]%Y7PMS<5][:*/',QC@R8U6
M%JDI<4QYA ; 'Y6[6_MY O=]PZH?4+ [=B32@ 3;XJ]DUQ>JJ,%&'E.E E:8
MDS,4*&&3&_W_9(,-CLN2%JMKC1@+W2A& \8>4(6.[L_!TZ5J170A8.._2J'T
MIV*@K".\6JCQ9%0/;[3)9KI%-K4;)\120[FFF-,U^I -51M+[L),*SJZ,IN&
M#F1B@LHSO[]Q-&E>W$1WF2Q4 @'8!)$3.TJ9QH\H<!84D"JC<!K.5=5V_/6V
MV'D#[UPMFTC7T*MW\H<?Y ]/]0]?6;+?MW5T9)EMOCN/Z?*]%7?J(9Y\0C1V
MPG7[RFF-">I # <3.-W-6>&](9/UC!#Y"&;-+%+9DH>REV6I$9?_Z6H4Z<9D
M=+)2QR%N(H>UFQ$!ZL8( TP7*19C1^*3RLNM$RK04Y,%3MX-KNCQE]=S.\@'
M#,5":CW> GEUBSGJF41=FT?+8BT:-9A;7X9V3P47<9_U55\3U/G'8+T5:I^E
M/<@9XR*EE#C"1DUR)#M=L4OLQ<GF53S5JKM059A@YNCL<FIO9A2R/E#(9$RC
M1#OL#N?,B=#$K"FU4LU=BP;<8[&[GH;"G8*A@OF""NC.\#RJ'#=CIPLS_<6:
M@.5Y324[@D06"D]&,4-@FI5IA5FV$ 6PX$S<,]>MR6Y7K1 >=["$62<Y [ /
M#TRY122!D,F%1)45V(A157[AMIIUZ?D#F%82@2*OY+X>MGR3OE8YY_/(<^[O
MY7@*2,DZ./Y\=%BU>Q;""&-#Q;R*5^HB1A=8?N5#!983U=; Z/T\"8.YF3*'
MQ _2?&ZDM!I Y+&I?F *##RGKSG_4'6X31<S@HXIM=&D7,,<,<K($<29E<<B
M30M;AG)BA=PDD]/+:*;9"%,%IY2K(-*=+SCIT4\8@7:-), BOA07/:7*]/G]
M;$O%U8R2TY4J'UPO[OG3:(JWSH1USEA^:T4R?R=!*> G^0+QV*@9-/7!RV=G
MYI,9J!,AYZ\(*<.8<S-=KY\K/V<^A:E3@C*R9%>/\NVB8V3GCORYO#KJ60F7
M7>IXY%"[#HRL('0CT(WP\\$QA56M7EY#L^L/5?8H#;DT96I0S G#9G1!]3#&
M7ZAKN$[*,]D8=??_86=<*<SRM4D9VH9\V[W:!FTQ%FQAZAY6/$<8\<?R.LZ(
M,V=>UOTW7E-YHAIX3&5Q!@=C8G_P'F[ISCSL,)?&&FK!N<.3;ZQ URHS/KTK
M>?C02%?VPM1;A-@9*)QE7#P<@#'AJ(X6B91KJ"ZNX;1[UN'C)1=IS:;HRO-3
M_C1_5!W2-7]\B KR;NZ*U3W$X.C.83L.3 !0P-P(:DR8X9()R;]EI:*1/,J7
M?UMH:43 D.S#6"?74'V9D=F/VK_J JRST[E#@_!5ZFI\#QBP@A=2<.U'+-V0
M%7/K;760^1&KC/SRVRLKDI".,0?[Q3PR>6H* R(BN"Z*3LHE*,[)+5V4C%A[
MZ/>><;YH@L9!>"3=YPI!PAA[F_TRDE5E"]GLFQ1S+!%!^<>3C OSY,/8>\[D
MO?KC@**_?[Z@8F@:J%2'Z(K(* HJR#CZ-742K')+%Z+:1_3(Y6Y!V?<MPY@4
MXD+ J5'5.=,@#<!$)J^$-K*XHR(R"L49%R9X8DY3F!A$%3],43GWD$9#@9YT
MW]\LQ)D51/RV,!*S*SHA47#W+N585#F\:(<!T8^-[4;?J J/:EY$NC.&A$@K
MQ5P3]!-(_V!N2L/(;II<B33O7:::;>:2@2KR37%( %2RAQ+8S7F.O\0--^9!
M'66P"8XD&;+[?7:>$D0?D4D^.?)OAK"K#M4#%G)W%%<A%DF):=3\,HKVZ'6,
MTZ,1=(B,D%^@V"0VG"3I.B]QK@7"@A3=:4@IY3<K;$N(?H. S1WVSBH?1/GN
MK6I;ZUE840 G<1ZW%6H?C.4:('#F9J=B2@D V<*]E+!P[#C'R\#'F4W0(3_6
M*4DA13P9\M. .EA1^-!:S6&V\ 0W6/O[$WJQ.F8D4>YD?BU-6W18*6<0&+.Q
M H@DJ$+@?URCCX?AH=6E+1'$$:/,GJ(9A? T&?TZP?"NF',WLYBA_6/U*-U]
MRL?8I(U]D(/]*MC"8C>#QC@L.T9U6P 8FD/OSBPT>VM)KT,\EG(C(!.67*DA
M(@?!2**(G$BN3E"B&9H*2;F:!-Q/0W^JRTT+:+<&I)$NX@R$0SE:JSBG= <9
MX)!Z^\A&JGCQN,?P"B[EGK4_321KD"&W+$N\D$P(C>FAEJ5\R46T5?()(<\
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
MOXL\ 8Q131:S1">CI)*9!@[: (E"#I8@N!D6_R5CP9'CW5D]YUFM#5(]D(M
M9=)IGN:2!Z(DCH"$(>"("2$]&%5^.\'X;8]397>O29?,*SN#112$G.L8&K 4
M":BI8T=G+QGWU<.FV_3K/%/Z*R(V+_;DGLALTF="7*TIY#5KV+ 6W208B@#E
M(?$=W3P[W7#*HY$BGY3S./+[K1*C^? ]72^XFMH7KBTI!JK+'U$@-C+WP8G
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
MXWWPK4_M7<L+ K( XEKWC\ZF<N+$-E*W-KF-\N% F0*3N6?2]7Y#F15.L\P
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
MD,R=*!6D!(KO,P>-NVN643>@8P4@22.\.Y$T*P#?D4#IB183WB=D#\@8 %K
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
M%(1/JWG5.VAA#(]@1+FUE'=%8UF]:^#"H,T&8AHF'HMIC/8Y._18>T)VW!P
M6_N@;+N*L.$R.[SD\KL"([S2NEHXGJ0?;<G2!6HVFKTFDKXD.E,OMF7:KDQR
MFWF1SN"-54]<FY?HE2Q1VD-7NF]V>8GBK_BB?ME>RS/G[_ BZ1A2$"+C(6N+
MBI,6<0M;GA57T^&(U?NT"WPX!K5?J\5Z)R0M&TWS].0>+J(8#D"=)C,D W]B
M*PFWW\60>B?/8E]W0/[U\N,EE6S2OHO7'9!ZW;920SU75PF4[E<BK-.S6^UN
M(?.7F6VVP1O/]]'"R<Z2R%08\H@;[837BSK$%R[%[!MY=YS"$23/5HYN_J4K
MI&E&M2M;\7.CAW16;[&#B[2.;N>BV]TZNKT/6WG"Z/:3"LYRN^M7Y9PQIL!5
M2>AS%^%\LK/BPRQ<-[:WE_Q\N=$\21C@U5W6P&6H D-"%-E4K@?/- ';'=O,
MPJ:L.,Y%9$^9*[5=Y43_)C ;S(=_[9_/JIQBLM3DRG0%14+!5.JC5#K _CN\
M0HI/I HVP+0&.>,Y#< Z<)*(%765-B<[]<><=AQB3TW@1:S'2^>-\UVK"''.
M59EY92A+U:0NT"!:K8XVU3(?6 R <53)#?G-*1Y I9W9RHJHM,$"3_8JDU1A
MVFDZ38XN&1IDXKO'';C71#A1#PFG@A03<@RNB\9*G2I.)Q-O[ DVW^9")/FX
MK"W?PYH/%G%QDG ^@J583  @M)(;X8.>(QV/JTNX,:H:A.2E/D O-57.-*Q_
M"G5\/KU1B4KG4:H,_7Z1 E.).8?$*&Z<AJ&;/4BP +);4.$K4"R0R=A;$$7C
MV['9 +Y?AUOA',(MT\>V2U7HM?<_5>'H_.3RY.CPDW5X='3V]?3RY/0WZ_CB
M\N3SX65E$A7.4DY"2KF&EU@"&$BWL1<7# )M!&<I[GK>O)%2$!O!X%#6H^?*
MME&P8CL*9H9ZK1CSIG.1"6E8PD8.N0C[G#+J<9V/F-?6:A[\(TN)N!:<5[%
M7AO)Q(8QIHZ1&XOH5P:SN)L!O,5;8)A(]G4&DH?OQ2+)6B[G4KK9:N7E'<-@
MBD7Y*:0'"7WI 6C8<\4>T%NDB[H)<'^F[M0(V3J4P:1<B5R%R/8EYR1CV VX
MCU%_9:M:)CEC75:]JTX-',=!+/L<H\Z7=?&"'#3)UF0F0D[,U*A"1^AGR2ST
MJLBC2@K\/7KQ0N E;-C!PNF<P]V*':E &QK[8(BCKJ.\A4 97C1.YP!"R8<)
M )JF&-&4T4B-#1PD462: %'$: 9%YRI,&7YC)XIN\4NJ)S/ 5SQM5LB)44'8
MG8O!8F>!I!3(&F\^E"S=;EA'60J705<&9B/CF+?PLF^"RPW"\1@@2DNR,Q0_
MY+\U0(- DH65?/1&<E1. 0%>XKNR>$47L\0F-3$L57E+DL, 0"H'8*,^#HXP
MGF$1NH0#O\B,AV;^6Z.LA3VY!6ECQI+&F*2#9&)>/+C[8T_H^V%6/\3 !2G5
M![:^ZHIXJK5![AXBC6YD+%51A\]E8>)Y-F2D0N;34EUV;%9:%EGR8489P&8#
ME\:4'(6NSOBRWAQ>'+VU^LV^;:$(:C??*_AP4QX9OHYYO2/9%B=NT,.M]\2U
MQR%G23'+1X*!17%-5*QS%4#F5I%S!ZHUARL6WCAA]Y:NK*'<U'#NH7A#?8F3
M?3CY@19677IBE6='?)Q7E*6!L9:*F;F)%2;$[DQ=C]7T6')0*D"7XP'$=\XU
MDCID&(OEW6RGP^\!#7W.Q"6%F#<S!8 5"'Y7H +*P2OJW,*@-@I]E>C1!7O4
M#T?R8$IO62Q\278'Y'&%UV:-ELCIQ[E;!M7N\+N5*D$(EYQ: <&6N#>!R'X^
MU@1.J65\2&:;B]#C:BZR'#$/1Q.->BD2."S)7#$7R-+ZW+:[1X&&8=2(R)VJ
MH^"?5UZ@N;#,AF+LZ&O FW+*DHDPT]UL,)/E*?!A?<S^Q%(V<LGH,\FL!K5'
MC-H"B25"9_5E5U")=<S%\MRLWDZ?CUR>2R"#VX[Q0[=\VPZ\@*3/JMTKTSL/
M/',/><9@AC]ER3FI==ICKGE$BGL6R#? FO/&JIG'%"W;<6S\N#+W77/S'2Z2
M%YO76(8R\K>!>,+*FV#X5=;\5.>D 2Q"\N:P:6S>0OER9QJ!O7M SCFU<VD!
M>9F[CCJK9;8*9NOJRF)U2O(JL"7">RNE,+TL:+C(^I&7%#+J](KH8*27<B\V
M7TRQI "E!T>T9F#MH9:VH)XPL1$+8BFBX'&++_.N,XBK-VA6X@KDUJ2 X7UD
M'=YDX, [OJD$=!Y)ALK;#4C9>.8M,L%:O*5A & GX$H4TB4S22=<Q0+RA;:Y
M2YDG(YWSQWXXZJ<DTQAC?7<K<ZU.LJ)E+] V%:H@&<$09>@\0 EK=?&HA@NI
MD"B/SA\K0R+7%"QU:,">YK:H_>>QA_XB)FCX;23P(BGF3LFY4FJPGA62"49>
MM%(:R]^NAG4RV>6NTBT,?19?Y.+*="3RAM'%5'08E0B,$B5V-P9 MR(P)% &
M9<PM(1/7P=@GG:T<!RQ.!(H#95)C&5WB4$*X?(/698V1MZBU^&7O7D/8+S)T
MVJM#I_NPE2<,G3YIZNZJ0)A.4=\[7T7Y/3E<4P!67AIJQ%S6]?S*JCH&L%*[
MF0MI%9_-=93#GHRZAY1,[\80'  )Q7RQ!YY-A;.H\&"XS?0]4P80=GD [41N
MGRI!0$]WE(^3#"(!W#;F=E'<8 M7?@N*#W)MJ73D-VLH2FA/< ZB+PZ ]Q]@
M\8+Q?#&G?AL8KP4L9M]SM; !%=RQ; <R:K89UB=%/SS^!A^TN39D&N&/"HLH
MS*'1\KIKCP8MV3).>7#AP^&($WME;3.UYHKC+-B$^IQ/77RHDZD9"^.4IT%O
MX^]5G]/E)?;/#;C1$2(]!#'%%9<NBK)QV<541*J&2LY] #H]^^CY(0J-+C6E
MD<68?Z6DCNB6)'&<HM']3_:Z@)85+BB6&6C_C!J53%%EN8JZ;8;O0SF]8JHM
M5XEB< Y2@61G4V4!ET8=;-GK,<EB43KLH2,,&'$?.S&'$?2VI#\[JX]L6$?F
M3C'2400U$1RIIX9CG*\A)_11U^)]['B[6M[(HLB5._[A=DQ6MTF]K1,GR2Q0
M;NE'\:R8;6GD47P!"/<D! "S^#7IP?("@"9,/<%BZ73F#K_*+> L0-?^KER-
M'(7A%L!9M(K270^\P)9_PYC3FX\G'\_>HET_PV#.:<E>E,M!715TE-& 6=FF
M21H+% 1R(JR'2R..CJBB-YMYHPI2+9!HQSS$E?<H:QQ]P?D".+DUC-7@6C)M
M4#ZP#;UWA+J1%V8^8-GJC4K=T:X0\9@BD:H6U^C"90;".#PHKS_7ZMJZD#-+
MOY%\1$:'+<QJ#N?>6.:-<%O($JZ#EF&<M6+*&M\OQR/9VY<K2TZHJ78Y#?\1
MHKE%G%@2B6R8SUN[I=!R+/6-#0?F7A?*@>[XH&101B[%7-E'$\?AF#.6M(UK
M5KGBYHT*6*G6>)@)D_J))DL* RIK4[Z;_-RJ30<U- 'D<AQ2U03*,FSL'!]0
MR%HWN9*EU%(6F36XM/1UZ+F*,/*/HMMK?*N>+N34W CRA= \9S&5?1K(_N2"
MUB ,#L9H)OORGF65B@0=V+>+\ADCN:H:1LD(.9=!P0FEM'NM:FLD2-!#XKH1
M[AJ0.1918(:QS1H5JI!A5-+YR$]<7JH^$_Y"P2]SHLZXDCFK@77A4.CJCF<4
M]KT19E3?;"EOYOS(?7/\79V30$$5LSXP)_*C<=$*.A[YU GVZ:4B']7O%=D>
M('\/<\Q6R4P0&5,/MWY(N01[M^]M"H.][!0J(X(H*D9_D"=[DP!%@$6%PC*3
M5FE,7>K0><>LUVAE8[3NE2UUC"^9M:6Q4$-%D# T5Y4/$K7(ML?7G--82%O(
M%V.I<)ERXZ/53VH9?.U%*B-V^;#HTL9^K*O>0AV7QJK-0X%M(Z? BR.#B=C6
M%99N6!]E$8210Y%$WG2*:G9@;DFV^%.>5T.S948A\T95WH=6\ V;:)9G\6F<
M92W!4E/JLIEK<TY-7F1++@*"C?$[#AM[0:D5F579,UN\I?JS)%;I&B5+ABB\
MIMS-1>.6JM:DP$PB+$>IBMIQ0H<D&BF2B*:0>*5D+Q)=.=WD$SH="L'(1?53
MGFE_R=6N;F7G8AT>7-J"\;2TZ(!BU!>@R7JQ#FP6C2$CLI6Q!S-16!?EJ+")
M%QG5HQKWQ">TD[ZP19XT$N^VLSR\9/-F7L/@/UG[S (2E&F;WXFIN^7O*IG'
M*C<W:QR<9T-9"F&FG2YO2';T*VR([1#>+'F/R/C S(1,>[4,@&0)R?,01+?N
M@I;[J<XT,+*KYI*^,KTP<(W]9I:VSO2B\$%<R"E46\G5Z>++5;\U59KK(B_6
M:3RP 1QEMC"3\$A?0 V#AI]P21G9\@:RN1\@/JY=< 7:NKM>G#O_LD;,=I^$
MQO($'Q6Y747U*B]M&>5EB7R8M*.X.#.!K.UQ"1>(A9G)R MF50%Y$BYE1DL5
MV57AR1_0A/="B8P<JE&/T 99UNY;SVU;R,EB2BQ34\FLW^XRD'B@6HE2L7[@
M#G=LE@N;G=:*;S"7U!F8VGO:&MD]=I]F33!EZ6C#.@W+?IQKVK*D]/#XHMQ*
MK:JYK*BKQ\&OQ!J/R@8/[\OV5S2R,EMUJ5Z8^3P$2H3Q?6"7CDSYSG6]5[GV
M-($0S3;Z,@VH5?B'8A(<"H0%51X9ZB )#I/]J<<S>;7T7K6=G&3Q BP>P2=3
M%7(W.:R9P*1U!Z,'@W6M6;>=56'SA!C;T#;@2+::?C01'DNG+"=?/Y@M9^P"
MH<N2-&N;KFOH#-7;^/&*PH=\ZSKV%*).%T:F:L<CY)1Z&$:&P9Z]@C=>IL'#
M5L:IOR-*,!6 \SF4FRQ3XJE_F9)RZ"I(EM+&O0!V1N&K&>>-IX','=&])'$K
M=8* F2#0KQ,$]F$K+ZMSN)$@B<=0ZBK%B+.6V9YNHJ,L?)JJ5EH6@G8=\A[9
M'.> 6>6X3$SILA CHX^Z6JIU2>.Z48;CTG00E0<E(W:RY&7O!/>SJ5&^,!(O
M=:Z\IT4X(<3,FK\)(]^]\5QA6G0*^5D-'WSH.S<ZK4W5?.5:7^.7RQ4,;$,5
M?7C%SL"Y,1;93@2Y// "W"K9*.M!R')3]57H'0-)K*H_L 0)O=.VC-QEFXJR
MZAKX-[P4,ST0/-1#%V/;Z/KA,7_HD^=!:>R+X[)K*;-L"1N,0&&X@5M4)F(\
M"TBQP+EB&%KTI(U9V*E.WXM1X**'=4%WSIFKS'J<[D(;EO%QFI'#+:A0DSCT
M_=Q^^$Y3%2>JDWS-9$B#K&ECG(M#'?U<FB:@7*%4GB;;>F*N**8?N$8'9FKX
MXJBR%15G)+,^=3UVIB:LEGE9A1;&;=.$E1C?FWM)OJ<U=Q(K]!I45@VZWG@8
MCNQ_6R#.I09=DL6@ID=8IXTI.)YP:W5?IP]?R/3/-Y*>3LXO)/F\U9X??!M/
M]*+B?H0C=L8#Z.NF0EBQE^3W4?+V(U(B;X3C)S.$1:[%JQX\5?XJE=UMI% 8
M5>[Y%F4R7N;?JONDFPFAZX 0Q=O-3\,LTWOSQ"65Q7QACF(OME86>="38B^R
MIH->SN1+V.1HX*TV6WUNKNS1<*V\2R/K9)J%%'*5J?LG2%9FS*D9Z12SX":U
M<LR!=.=N+&7,I=&8+!TCIBH))\<[L4P,/8/RM3MR:T]WT\WP7[ =E5@G^>!E
M'?6R$0B&6TO,%Z#*1;>&1S5>/:<-P_+"2;0SBUJ4YJ>M:="HT0QZZIK.&33>
ME)&53HPFJBRM#;:-"J9L-*<*F1B(^E6V3+R8";&/U:9W[63BS1&0Z"M#16&>
MS@E8G&>7;V6RSOUD6]^"\"90DN,W=MP9T=1/X<W!)<W44!.>?SOY='GR%M^V
M8GRH\'4\0A9I:8:==8:DM^%*N>T7<$_%$4I;SCR'2[FK'GD"Z;WD2>'FV]PE
M]0:M9\GFEU\HV]SIC,H2'8N?2&E/(=>+<N<#*G9O6$86S,S))3/):(VG%7XO
MUMEU5&*!1^5H4[$9 ^PH9N9,;5),EQ$/FQG/\N(E\X?(&\\CFR4LC6,!"GQ=
M!%%,+<PBC[FI1J 0B8J-P7R,:4[EXYM '76(WB61%6<^<55Q;K!';KHU91:S
MH[MD)%..,(JA-"\N_Q5W7U2-!ZD+(]!4(*]'5AVSJF46=<QZT!%2Q R0&/CM
MW(DU0G$CY_X8@W1*+22\J*7RM#S$J+=;NDO3!3HO2V(K#%3$/-72>"Q;\#+T
M%JU0>+;LK=/;T%MG#RHA3H__:7TY/SL]^WIZ=/SY^/1RJX8Z>U!W=RYD_>(7
M5/).3FSK!!03:V@=6*? VZRVZBM/=\IH9,-#.R<I-=?$%NT+=5N *MB8H<QK
M-]_&)@Q"]-::G7.41J;]XJXC#2_'E9YC%=*EKY6H#+3BSCJ5SAQ?W=TG;S'<
M?3)5;[C_)'ER>?R9BR\&A^_X+__S]?#T\N3R\/+DCV.:5P4??%+__G!R<?3I
M[.+K^?&%=?CKV==+Z_/A^3^.+ZWSDXM_5(2:"W8U9=;* G;)>CE;U)R-2BZ
M8!I2%W&50F3V33,R#:0"R9K$^#;K9$'<&M>6^;8@Q3"0H3\NS%'5]KX:SQ/K
M#6[Q#IF) +H2-M;F0AZ4$B7=O]U0Q.2U,5Y);#V3\+E]KEUY[Q2<<L+_*"%X
MI"!X#@>K( %/G+'(3VK:0!L3'Q4%1;;<^,'0&*@1$K-H+]%=;F3D4C;@DJ9/
ML=T4UX!ARD(@=0>U!QIJENB<6^+(P."ETF@^5.ZLR:E"TA;*>C;I@^9_76B'
M\+5QT; ^A+[O1&1XE122WP@KQ5#FOZF\YH8K*(Q&)3/A8MB!BNV293B;D%4&
M>O9[%9/@>5M@0LG7Y-?@0CXL%9.51=*R+'RNY)IQ![E8*A&!;,8AIVAS00G_
M)E++!"HE343L>-:#E+'OE:Q6%\'486MF:9=8"Y[ZLF'!WEWXS9>&8JPQ9\'K
M+!O";BPIH)21+Q,%,<+\Y+YT@= ?]4!!N97SGHB52N4ENZ8&M90".7=M,T=2
M-O:++'KYLP/SXJ%N!61QY<LXM^S 6S<2SP>[!W6P>Q^V\ERKX;<9HBK#"KJY
M8)@F5+PGV4^!V[PA"RM,X?UN_/;=5IR7ME5VY;BX3E_C"-!Q,$;QN(C%._67
M]UAGYSNW[[R CD(_>B^7EW<?B?T:A"E&X^1+Z'W\M;P'HU%C0!-3_I9$\']7
MO5C>D@;=DI\3M^2[0:/='J[\NMEHK?[IFF5'C7ZS\^"KMIJ-?F?UUW===M 8
M=KM[M.KZ[WJ=1P!LJ]'O]:N"KWYCU']X?.&JVUV$G^F2\46#JXQ<XN^O.J\R
MF>8BAWG7M%HT+TFMIQ]MM9>>;2^^X]/+K*1X]_G:/]D4)LZ>+DQFU(RQ>+"7
M X-F#@9;$D3) 7TQ66+O3WZ\=8J,,N"WP+F4<B06%XE%04Y+[7C_D;P."J>A
M-*;_0#?^RX;%UXL/UO%?*5A /FF(+QD6O\-3UCE8A2\;#)_"FVVAL%$PO B
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
MY?62(GNEE!E;\>314_+D02E//@G@/, 5K'/D"N>@+&RS\=Y^"A/@47 45G.
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
ML>T>Q9N6.;ED]4S/<@T : UG/D/+];C??Q48=<O!<6]P\]WQF,-'+(PRK-O
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
MB4D2Y:M^[V03[M7NGD&OC;,L>]UQV'/TN0-['@?;Y\.^A8YO=VW_8F<83P8
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
MR"3)$)&"&6M)<E*LK0,]8?3Y>9KK2D]VNL!*AKU^.S[JB-CZH4UMF,FDAR]
M!Q5\F1N^S&Z0$2!T@I(621X]XM(3Y"AQ2 ="B2*<R)Q10@AK$CR+,'5G(\5A
M\DS92,&'!>'#-/\P0E)!5$3"2,"'E%/#@[5(*\<,!U@GT:^M2]S4[-&A[N(?
MN:_%O>G'4]L.C7A^&KLY:)UC/+W1H7M?[1$OCI.%T)-Q_V^/NG^C&ZI3;S:J
M+B^J:,ZHM'LP>QR>3Y%(8B.RB0G$G><@D#3\\$)+*:073@(LZ:;BJ\=:B@_E
MF;*6 AO+AHVI,OM2:FED"H@FEQ#'7B/CA$*:,NT$%9Q18#-,-2E]AHE[U;T9
M?D%%[0C-^+BKQW.7U3C'K[;$IF#1@K#HEL.:0$$ERAC227'$M4[(24=1P%%(
M&0WS2@&%8::IS,JFJM3F")$?YXS0VK*?@BV+PY8IGL.4S$6:,6(D;T0-3B''
M,0.A)'!@^9A@F[$%DZ9\_#$8S_*DSWD5J;Z?-;9Z7>2?10$0>!)?+'S>%KXS
MW-W\RL(_A]=_\O"?WSL?:.>S^]C#>W_M0AO>8N@+UMHZPJW+W?/#D]:G0[K#
M6@?;EX=_';+#OUJ=#QU]#L^0=Q.?MS[NL+V#7?(W#YXKR8&*V'QJCE442 GW
MR/! G0X*JWQJCM"J:?0MB>8K4 2D3,M5FY9OZ=\!YH2,S"+C':Q=+!ID)9&(
M1Q<\X\%B%D&M&]SD1/VPA4!N3NTR>VLR>]^?_VU-M$$GC4#"@;Z3,2!+@D0P
M$9BRG.7YLC+%0,HDJ^<D2TSA2$1$)'J>ZYOF:@8B $1B&V,@F&%5"H+4SLWV
M1Z][=!#[)SO77+_PDKD:W92SS1KC(Z QHGD')8]*(9-];]C+Y)T"(I%+80K-
MFFH%]X65@.$S=9D5G%@T3DPYSHB1/H3(46(1A(9V@!-:."2<,8(&&#'/L^00
M34)GJP.M?(2P9E'!-_W>*30 M-IIQW:'S8J<Y*,73K,I-!O=."SYUPM*<!KU
M_)O<[QO=L#WI]))O.5<$VIUA*DEQK@FUR,0D$*PC#CE/@.!K%0F7&,NH<E61
MIN"S&U+K3E1*/O8S)2H%+Y:&%U.,107M* L"R4 3XLX*I*7BR 6KH^(XN>0
M+TR3_+@U_I=F>7M@!':83Y+N1#N()0E[D1SEJK/_R'V]GQNSE]X/8I5G4$!G
M?J#S=H:D1,D(<]8B@AW.150=,C9X%!.G2C.=, .91%F3B-G 3-U)2O&F/%.2
M4@!C>8 QQ5)X%#(Y2Y%@.4YA'4,6RY"W;]B H\9& DNAM"GT,]S'7C.6\KK7
M"U_:G4[QG2R$ETRZMR#*_!#E_0P%89BSI!E#,?((%"0YI 41*)*D6%*12AH!
M43AI*C(K?.K.08JCY)ERD (."P&'*;HAN (Y@C$R@..(2Z:1CDJC!-#N8<1
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
M<R0V^GT+?ZV@:O,XO]S)/HNSO+'MCJ_\T;:NW6D/+TB)U\X%U@YGA(4C,.[
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
M9=M"LPI,,,XDBDR6H\$)<E0PY SFH-1ZXKEKNZ22>W-&P<,,1SVYS' ;V/G
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
M\QHO'UZUG&)OLJX^@] WB\K[(?B^/*GJRI/>4Q'TA3E3UP5Q!=PZ"Z>U:BJ
M70W \!: 61NH-L&@J!1#/%J,3 KYQ%U***?>!6</#MG7]].I<%7AZK[ 51"$
M<\Z(3U9S@KU.0F+NL" R&&7EU\!55<:N#<OH%I8!7$5,+$->Y;[*Q@JD4Z(H
MB<@\#4D:P7*S53.D>/>HF8IG%<\>*)YQSY,WG&&L'.>4.<9L<(D[EI*VXJO4
MKXIGUX9G? O/$IB6"J +L>R=X)(Q9+0R2+BHM8Q6PL8^.)1<#BGA%<\JGMUK
M/+M*]VD5DL#68Y]R>SX9'<6"8BR-"4XHP2X'M$N:3E=DNU%D^_#BR5:O,F$!
MSHQ!H%-',#85189+@IPA.@@K?!#TX)#CH<"[!397;HU?0:V"VMXK:=?5;JE"
MV0U#V6BKQ[UETN3($6:YQ[TU'+ED";+6:^6DL5+G'DI#PL20RJ^NQKXM2/LF
MCG@?-<VBA*JG"2994OJ:S#Z#4I_0_7XVAI?\K:#U-?;LOD]QZ2\/?5KL),&&
M,0 ^CC4UEIC(32+,46M3N')G[@)^;=SSZ6(&"]9VVV[CH>7+H[,\KN;9ASCS
MHZ:&1Z\1',]WPJ,J"8VM58A$S!''(B$#X@T)R;AABH24JZ[8L&2%7$L9]1[U
MF?BFV/N"/@FWQ-LE0>L2UJ[<>Q7NW8X-JJ"258$BS"/)/2$MLDZR3"[.O#>:
MBG!P*"OG/C#.94E&'*25/DD>!7-*B@2J*\&2)^KE;7!N%<K7QM;;83(1@\;:
M>11"V]/$(.M=.?M" SV#3#&?>,&'0NT>/%QY>P]YNR3[TQ\K;2IM*FWNR1E2
M52;>I4S<\>)YYW$B*B+@5HPX$PX9EL!2S5W>! TQ*M4*17U=';_VZ*2G_?72
MO8IGBYD_L<V.C^ZNRTCN"\A='E>]19?<BHP7^.4JLET7LKU\LNN"4]K)I GR
MDN5>AMSG7H81]'Z=DK,RB1QI)4.08OMQ!GEEY6M)D;A5/BY:2^74JW'J3BH^
M-D%1[)' ^21*FBPRV4(';5-(K'3@%.SRW0!BY=+]XM*_9_%5VNP;@DJOK$Y:
M&L,U5]9HH@(GDL/?*B5I;@)!JR)T;?"ZG4UK$\?>@4FGJ:>(*^*0)5@A%PB(
M0^(MJ$E@X9&AU*IB[)[S<<78_:7-53#V9MQJ%6-O"6-WD^&22J"G>F0X";D>
MGB-M>4).2HH-43@:WX*LV2V'OQ.0??!Y;H4CD,O,D/UG9W'2E!Z\@_@A__XE
MO6UJL* &<BIM*FWN7>+)X_#GHIF7EOEOIJM6E;E+Y?-)UY^R^* +/#Y90\=7
M^?C59C2/K^/LW<C'5H-X%?WT>%*>4I6)ZU4F7N_DJ9!HJ'0^(!ORX<04U @3
MB4*8)&\#EI;K7",DAD*;/0K)52BH,%UI4VGS0/)4J@B]1R)TQQZW@7@CHT=8
M>(NX=0Z9I"3B@C+M2: IFCV4H0\^K>57>YY9*N>TA-&[48B3T R^^P=^1+$8
MG,79,M,E<]:7]#*NGL?J%:ZTJ;2IM'E@M+G3B/737C:M]1;.)Q%7I>W:E+;=
MMD_4&N(CCTA:&A'/M7<FBHB,2,E;JKC-#068&!*ZV_6I!JKWBWTKM.XO;>XT
M4%VA]1:@=<<>=LQ3[%5 S@N5RSP"TM%SL(>Y"!1S2Z38+VQ]\/'ITH=E O9N
MC4175VVE3:5-I<TW2)N[M')! CTO BB?*UCUK^O2OXYV<[ %]]YI+% 4U.33
M)C0R#+0Q+S@.AD<6/#XXI)@-M:R])^X%XU90W5_:W*5]6T'UID!UQZB-!DOG
M%$$^Y!)?A@.R.%G$M0I1D22L,_N(JI\Q;<.H.1O;\SS8^&EFKU<^]"OK5JE7
M7L]6N?^Y(]EAMIC,(KS\8PR#8SN:#+X;@Y3]?@ RWKZSH[%UXXA Y*(&!.M@
M-'D7NQ2NX6 22];)W'[(/_XAB*C9)3644VE3:5-I4VE3:;,_M+F"]4Z(4")P
MKAG7G&>_*&/<2I:$9YI&?V7K_6A^$F<YF7L63^*D&;V+K3'_^U+O^._I.*_B
MSZ!]9 O_:/(Z^L5L-!_%!J;>P%?KI=>@LQRE-_9#=01<6Q/#[ !X\SA[5S_\
M\N8Y/WKZF+Q-VE.K#4%!)8FXXQQIAP-B(0EK*3-&X(-#,:3DJ[.]*P;L&09<
MNP?O,@S([/ZXMS)^FLY> \^N,?^R7J3R_,WP_/--GC=!) !]C)CQ"7&6$K*.
M.V0IM\%I'9)U^\?S#SZMY57T8]LTHP1#**P+UG:VO9=V^W?9</]^D WW;+<#
MLPV*M0[7?=J&KVDR-3)5:5-I4VE3:5-ILS^TN4HZ^:T9[%E9WU9%5BKZ3[/I
MZ>.C)\\[+?XHK?3XJKU?O_;^?-=BIPX[J[!!00N,>.(4&28UTMR0Z+6 ;5%.
M#^6"?D4^>@6 ?0. 6[76*P#L$0 \WP8 +WW2$AF3ZU"<S]5^Q".5HJ><&IQX
MV"L >/#Q=> %^',R $:8Q8D_'\QG\+!Q:\7;)>OLA-)Q#:37H%.E3:5-I4VE
M3:7-_M#FE@WS!F8)OUU%0>]4CB>=QO$F*QSM6!]/PIN5^G%1<*TJX%=0P%_L
M6N L>.VDB2A* Q:XYAH9&3FB@21FE,))F8-#P7>/_:N]-NXOGU^#_5WY?+_Y
M?,O0%C)B%I1%#M@:<8X=<B%:I+P+5 4JG7-[Q.?7%"#_G&U]^USZ+SNV$Q\'
MMLE6\]/HXZF+LP$CPT'FM+N.;KOI+,09FD_/?LBD:Z;C41CT2W%?D/!J1WYR
MP7P0#)0=C'G$ULID#=. @H92D(!OGW^9"W*MDTU[L&=[O'%U(%X?KOTVWR[^
M ]@RN64^HIY1Q)UDR'B<3[D"F LJ.D/4P2%1= B0=TW%?U_,(W<<9+A97M\/
M./W'C1'O"D2[>V#;U?"N"]4*GIU,Q[!HS;/_+$;S\XI95\2L?%+41L&RCEXX
M09#A(B&>VQQ:Q[-2)C$8WXG$D+MP\>LJ5JYX5?%J[_$*,^R48P$[[SDPB(U1
MB00<$KC# &9?@U=5 ;M&,-M2P#0%NY($BZS/^=<%UJ0/*&'BA<;&<L8/#B4S
M0Z9V0[@5T"J@/5! 4U@32;11.!#N'75<846L#\$[K&2J@+8?@':TI9TE34AD
MW"$AC45<"(X,Q1I)XVFD@24A_<&A$FQ(I:Z 5@'M7@/:58(&%FP3'!C7SFD.
MT&5ID-++A$64TG)Z.:)=$BNHT';#SK+M8!^AVD3/(F(Z2L1!0B'+B4:,695@
M=S%/$UB>:DC5KO%YY72[BFH5U?9>3;/&$$>85Z"4<<Z,D=Q2&80RE(D8>573
M]@7+M@*:6@B,DU1(6^FSGD:0H\*AX$%&4:65M3%G#C,AAHK<&]__@\\O+@WO
MFV91HJ#3M#SJ+?,/,"JL;O?[V1A>4I.*;R+D25ST MM$3:"<<VFX)4D%:5*D
M#@N=TS\H[M(_ /^^#/W:>.=ZWY,V#EJ^/#K+XVJ>?8@S/VIJ6/0ZT?'WG;"H
M93&(X AB$G0\CJ5!N4\XLMYQE225$LN#0SX47]\1M29W[9E&<UO,7<ZOO82W
M*_M>B7VW(X1,&X&=BDC&8!$/1"'CA44Q@.7MDA>&B(/#?6IH4EGW6IH8)>L9
MU6",*,UY\M80[I0++NAH562WP;I5+%\C7V^)90]0#&PM$(M"(AZ914Z#@-9<
MLJ0$QR1EFX6"Q8)EY>[[P-VU\J72IM+F9E-#O I@M6C!N.,..XV## PGK:-W
MQ%>I>,^DXHXKSR86G,W=.D5.XE4"U%V@."*:4IQ 7A)*.K%(]LE>_0:Z^)TM
M9O[$-CN>NKNN4[@O,'=Y?/46'7,K,E[@G:O8=GW8]L>.(XZRB"/E%*60-7Y.
M!'*"1Z08QBS9#'LZ1RGH!<!6&QS=%UZ^+2?<)8Q<%)?*JE=DU6VGFXU B4 X
MBLI9Q"GPJS-@H=/$G'<^2"[MP>&>M"&J;%J;1-Y#VEP%0KD.V'CI@].&>ZD=
M\U@[&3"F4O"4;@)"JRIT??BZG5C+'"<DL("<=+E2  NDH^8H*6Z<,P2+4H%.
MAICQ"K)[SL@59/>7-E<!V9OQK560O35[<]N7EBSF,8+!:9E4B'L 6">Q1X$+
M:H2R7 G9H>QNA*EVU+P)?BPL@5SFANQ#.XN3INVF&3_DWV/-<:OAG$J;2IL]
M"+5=>P+*JI57\V;Z&-8KC\".?[6C\'SRQ)Z-YG9<_- %'I^LH>.K^)_%J!G-
MX^LX>S?RL54A7D4_/9Z4IU1MXIJU";^3K^(T38)ABHS&''$I$HBQ?,)6T,([
MV"Q!X8-#3H=2[O8-JUBPAUA0<;K2IM+F?J6K5!EZGV3HCD7.+,82<XE4D QQ
MRQBR22FDC6 V6:&CDWLH1!]\<LNO]CSS5,YL":-WHQ GH1E\]P_ZB%(Q.(NS
M9;Y+9JT=STAU/E;'<*5-I4VES<.GS9U&K9_VLFFMO_ 3VYQ4K>WZM+;CG6"U
MU)ZD*!Q*Y6!"SAW2@3@4%5/4$4%\/IB0&3P4>+<+5(U6[Q<#5W#=7]K<:;2Z
M@NMM@.N.21P-"Y8&@HCU#G%/" *8C2B1I&C4,G'B]@Q='WR4NO1E*4>UU'AT
M]==6VE3:5-I\>[2Y2TL7)-#JK+"J@5V?!O;7CGGK7!+8,XM2ROVA# W(*")1
MM-0ZZJP!'2P?FR.'1-=&%/>"<RNJ[B]M[M+$K:AZ8ZBZ8]=BY4QN\8\TH0"K
M*05D-4E(2^489LQ9OI>P^AGC-HR:L[$]SX.-G^;V>N5#O[)NE7KE]6R5^Y]!
MDEUFB\DLPLL_QC XMJ/)X+LQB-GO!R#D[3L[&ELWC@AD+FI L@Y&DW>QR^0:
M#B:QY)[,[8?\XQ]&DYIC4L,YE3:5-I4VE3:5-OM#FZL44'G.;>YFIZGEE OM
MB9 &"Q>#C<Q=W2EZ-#^)LYS3/8LG<=*,WL76FO]]J7?\]W2<5_%GT#ZRB7\T
M>1W]8C::CV(#4V_@J_4:;-!9CM(;^Z%Z J[-$_#G\]V3EI).@CFJD72>(6ZL
M019+C5Q2^<1R[9/7!X=RR-5UG2%7,6!?,.#:77B784!F]\>]E?'3=/8:>':-
M^9=E(Y7G;X;GM]N8,JN=5Q%9E4_S)H(C*Y1'2E-/HK,8]L/^\?R#3VQY%?W8
M-LTHP1 *ZX*UG6WOI=W^73;<OQ]DPSW;[<!L@V*MPW6?MN%KHDP-357:5-I4
MVE3:5-KL#VVNDE)^:P9[5M:W59&5BO[3;'KZ^.C)\TZ+/THK/;YJ[]>OO;^X
MX&QDS+E6EH/%'O(A!%HB8T"%9]918C7L $[SD7F$[)Z[]>49Z14 ]@T ;M5:
MKP"P1P"P9;XKIVGT22&FI$ \.H6 $2R25A(1*6>&V+T"@ <?7P=>@#\G V"$
M69SX\\%\!@\;MU:\7;+.3B@=UT!Z#3I5VE3:5-I4VE3:[ ]M]M4N[Q2-)YV>
M\2:K&>T0'T_"FY7244-J-ZF3_[9KE/,D'682:"Q,0IQY@ZQ2#EG,E =#37@>
M\O%9Y.O/!:P(L&<(<*N&>46 ?4& +:O<)*R-"@R! (B($^>0)D(CYS"1B;H@
M8]P_!+BFH/KG[/';Y]]_V;&=^#BP3;:TGT8?3UV<#1@9#C(3WG5$W$UG(<[0
M?'KV0R9=,QV/PJ!?BGN/D1<>&6H\,9$0T(DPYU@:X[1-@D:0C0P0-+U]_F7H
MN-8!IST8M#T@N<+;]<';[SO'@TH1I';6H:A%0-PSD7NK*T2IQM$%8S7QN6!0
M#)7!UU0P^,4\<L>!B9OE]?V TW_<&/&N0+2[![9=Y>^Z4*W@V<ET#(O6//O/
M8C0_KYAU1<S:/B<U4L:9Y@D1&PGB8)$C(U/,F<Y&*($#C>3@D(G=DU(K7E6\
M>J!XI:D'LX0%YAGF@A&'HV*&2A.Y2<;XK\&KJH!=(YAM*6!66<R$ LLR:8NX
M312Y9,':E 3^YZ73W!P<:JR&0,X*:!70OA5 $\'*(&V*U&!.F3 N>)F(TXH'
M[IVI@+8?@+;=V<MHG$1.7I,F94"#WUP"5)-,,$\=R"*93QO1:FA(U= JH-UO
M0+M*HE\T+))DB/9<<B&5BU9S1Y2/2AN)/Z&B-3 Y^*U"VRT[R[:C@5Y;[:+R
MR+,(V!:80X8JBS0Q6&DL@S4,+$\VU'CW)*4KI^A55*NHMO=JF@<)3[%11HG$
MO>(:1RQ=<%0S)1RW54W;%RS;BFL*YK20UJ,D- <L,Q$!)>&?[/+4+ 1L7(YK
M4DF'0,+[HJD]^)SDTB:_:18E"CI-RT/B,O\ H\+J=K^?C>$E-1'Y)D*>E/,0
MK"6!F,"%H !_$92XY+%EFNM0,D-(GQE"OA#]VGCG>J^4-@Y:OCPZR^-JGGV(
M,S]J:ECT.M'QCYVP*!BQP6&G$"$*P-%ICW)G<90B_$_@2# K21\*LSU*^JC\
M?1T:S6TQ=SGZ]A+>KNQ[)?;=B1!J2:.D#B4O'.(V=T"VA("J8S46$JPX+L%.
MJZS[P%A7"2N5-RZP ):(!0;6+AOHP@<1J-:WP;I5+%\C7V^)9<&$M\%0I'!D
MB.N8D"52(6&QU8*X9%0Z.)1L2/57Q\HJ<]=BF4J;2IO]I,U5P@XD&A&CP=YP
MKJAW1%CO3'!&4$VCJ$+Q?@G%'4^>U-IS10("BY4BSHE&-BF&!.=>>1UH#*R5
MBN:KW7C[5Z*POYZZ5_%L,?,GMMGQT]UUE<)]0;G+HZNWZ)9;D?$"WUR%MNN#
M-K];G1 %H\D'%!DSB-, R&; K#?>$\*%QEJK@T,ZQ!=DDM262/>%EV_+!7<)
M(Q>]I;+J%5EUV^5F=>!1,H*2IA98%2ND#;;("A>BD$%CQ0\.>673/6?3VE9R
M?VESI;:20$7O,*-*,<ZD<R$YC)-@+'+'B+D)"*VJT/7AZW9:;="2"R8TBO ?
MX"L5R,3@D>.&2<NHI5$>'!))AI+O=G>O*+M?G%Q1=G]I<Z64WAOQK564O36#
M<]N7%I4GGE&"G!4 L]C#;]@GE*3$@5JCN5$=S%Y07UJ[<-X$0Q:> (( .V0O
MVEF<-&T'SO@A_QYKCEN-YU3:5-KL0:SMVA-05NV^FC?3Q[!>>01V_*L=A>>3
M)_9L-+?CXHDN\/AD#1U?Q?\L1LUH'E_'V;N1CZT.\2KZZ?&D/*6J$]>L3ASO
MY*OX)"TGH$UX;A7BECOD"$W(DZ"(D90'[0\..1LJM>L9JUBPAUA0<;K2IM+F
M?N6K5!EZGV3HCDE.A(@D1(FPYAQQE@2RN14GPPF3E+012>VA$'WPZ2V_VO/,
M4SFW)8S>C4*<A&;PW3_P(\K%X"S.EADOF;5V/"/5^U@]PY4VE3:5-@^?-G<:
MMW[:RZ:U_L)/;'-2M;;KT]K^V@E7QV@QE]PA'6- 7-. M% .^613M#SG![6>
M#RIWR_!JM'J_^+=BZ_[2YDZCU15;;P-;=RQBGZ&4>H*8T0)QXS0R 6SC"%N$
M,QT8CG:_P/7!QZA+5Y9RF$N-1E=O;:5-I4VES;='F[NT<T$"K4X3JPK8S1BW
M?WTX>O/XK78J)NP<HLX[Q".F2 ?A4:2J) EBJOG!(55FJ/5N']#*N7O(N155
M]Y<V=VGA5E2]&53]^/B"/@;$$AN31YB';-8"MII<4:AT$A:@U7%M]Q%6/V/<
MAE%S-K;G>;#QT]Q>KWSH5]:M4J^\GJUR__-'LLML,9E%>/G'& ;'=C09?#<&
M,?O] (2\?6='8^O&$8',10U(UL%H\BYV>5S#P226S).Y_9!__..[W*1:UBR3
M&M&IM*FTJ;2IM*FTV2/:7"5*;;$F!(L0M O<PG^$2N%=,IYRZSW] AO^DO.2
MCN8G<9;SNV?Q)$Z:T;O8VO:_+[60_YZ.\WK^#+I(-OB/)J^C7\Q&\U%L8!$:
M^&J](!LTF*/TQGZH?H'K\PN\V#UUB81 4N 8Q6 =X@$'I*/4"#M#K""22Z9N
MVTM4=]A#VF%.<9JTEDC80'-"A4/6)X^84C8JJB.SY.!0#<D%-?_[D6!19<^^
M9$A=$1DR"#SN;=V?IK/7P,EKD+ L7:I(<#-(L.6#=HQ9J0-'SG- @H0Q,M(&
M)(2BECBL@U>7(<$^9E;MGU^K7GEO/(KW+0GO5?1CVS2C!$,H2#]-Q4^X]#%^
MEYV,WP^RDS'[& &2!\6S"-=]VM]8D_IJ&+W2IM*FTJ;2IM)F?VASI]4OGS+I
MME61E2'WTVQZ^OCHR?/.UCM**VMO9>-5,^X*9MP%![5K%RV0.:* @T0\>(LL
MB11YEZQ**5A"Y)5<AM?@E*Z;YYYL'JN8,]HDQ*V$?[R62,OHD ]4T!!"#(D=
M'%(FK],76.5%E1>5Y6^-Y;?<?I11D3#E", =Y(56 CGA,1*&*J"VQ5ZHBUG^
M3CC\P>>&P6:'/R<#V.FS./'G@_D,'C9NO3IVR1L[:6"X)H#59(E*FTJ;2IM*
MFTJ;_:'-_@?A.Y7C2:=QO,D*1SO6QY/P9J5^U)#\3>KF?^R:XXPS[R+7*&!)
M$9<>='/K-;*1>A\"H3:ZV_;EU/WU@/:7$,D11A!C(B!NJ$%6*H>BL382S;3-
M_67E4(G=9CK[D0-2Y4Z5.Q47OAH7MGQ"6BICB&)(L9P*IB/@ B4):<H\)8ZD
MZ/5EN+"/J6!?ZI'ZG"OH)IE87<C$_[)C._%Q8)OLY'D:?3QU<39@9#C(C'C7
MR3EN.@MQAMIU^8$!]<)TX<9QT"]'=\%\>O9#IFTS'8_"\LO]0]*+B7"UH]@M
M)\IS0C%WG"<OM:=6F1"C=PS+Q-X^_S*?^5ICP?; ]>=-LXBA0M_U0=_NL>N)
M I$PCTCF8YRYDPII3"6*PF-IL*4Z /(1)8;\@D8,/3O>HMW_=S(SKH]K[SA.
M=\?PM!\BXA]W1_XKD/WNP?H":_B:D+I@],ET#(O6//O/8C0_KSA\11Q^N=5$
M6^#H!1 #2>P9XBE');G!"$O,0W06F\ .#IFH&%PQ> ] IV+PW\5@JHRCQAGG
MN>;1&Q>QPD[P*'1@2>FOP>"J*%\C0&\IRE$;SX6C2!G-05$&E':".8!J VB-
MA=>*'QP:PH>@/U>0KB!]]ZA40?KO@G1047.7B/3><!V#<\[(1+3!CFIG;07I
M_0#I[:-H*#-8).:1- F@V0>&;"[SCUR[*$V4F.B#0R'I4.L*TA6D]P"5*DC_
M[2 >-HPQSXR/.G+0O)R&_V.?I&#!<4<O1^E+8G<5KF_8^;P=CP\.6^.U1C$Z
ME@]-UTB'Q! S2EEI(VC5\>"0JZ'A7].#H0)G!<Z'#IQ7P4T=O5?">T<YY\Y9
M3J4VH.-JYY/VL6JW^P*76VD*!@<BE")(.05P":HNTH)XA+7@FF"M/,O!NB%G
M> C"L2JXM=-.O7+_VKR76_XYSQUHX&<8O3O\+_BGOV-MI_H(J#WKI,CA?[G9
M/Y<LO*>W?26J$/PY6*$95MZ<Q('U?GH*;SP'7A],IO/8#.P,/IX,1C">XYD=
M#\[LK*T8.XE-S"*P (6=QS!(HXF=>!@(#!@^*(U_'ETZV^[EG+;U<V?39I3Q
M](=9S/EZ[^*/[T=A?M(+XK4;.PC#JUNL@T$LYI??\A4K^V9T"JOP,KX?O)J>
MVLG7K3%3F\NQ_F\>;I'@AIIH5)*6<,H%\]IJ+%1P3G)!"-%O#3_H;SJ9]5,X
ML\<1N5FT?R&;8(8_V/%[>]X<_'-C(4Y'DWY$0C_*Z[Z]9->\,)\5:; NK1P!
MA68Z*YF:/X#TBK-\%0S)[LM0!B>SK.C]G\_31P$S91S*;/(DZXBE 9;=9?Q/
MHL+-\/Z.GEOVY9.CGU\^^_\&3XY>_7KTZO&;YT<O!VCP\NC-L]>#-T?P\<O7
M1[\\?_KXS;.G@Y^>OWS\\LGSQ[\,7K^!#UX\>_GF]46;^G/3^]*]K@X^C90Y
MJ7>4SF\(*B]>KKPR _)#IXBU^N#+Q2D\S%]#1O26/0"3+%7MD_EC0.?%9)Z;
MVP+F^E%LWL";_C4&@^%NE7_Q\KQ7_G_C+__\@__[SW^!LO[RSQ=/?SL_>G,L
M_OWG_YR^!+/@Y=/?Z OZN_CCC<^*_#C^]ZOS?_]O. .;2?X;#("7?YZ<@L+/
M8&SOX9WBZ.GX].7__L'^H"_PRZ=_?/SWF_')RX__3B^?PI@^'K]E5%J?I$3,
M4X$X80%IIS52C"7#%(G6IM9.&TT6,3S.-E3P2G%I/%:$<7BQ%I1[K%U@G"A%
M]<$@@DEUEG?9; $(]'IQ>FIGYYF9UV@Q6!%CT%.C-PVZK;"UY^&[;B!M%79+
ML,\.9G/PW"3O8G0&<\&E9(8KYG(0A1D?/*6;8@_&?0R GU7ZK1+UF^6:+U0P
M/JL\# !QQ]'/2Z-!>W8V7NM+6'H/KM'#KNAQUM$#[.S&ST8.GN[B>/K^T0Y!
M;H!O_?'DPP\O[7PQBT?IZ"RV<J0I>^3\F^;7I\=O.;:PKF!KZ^2!7Y.6R'!M
M$64I<2<% 1[8YK]]W="?TEI:^N=MNMH!ERK"W:0ZM3;/:Y^F"<K!]'@2/X F
M,SOKICH8@5TP&$<;"KO-IOD4^UF>[JGU)_" P;M1DZ^#K\+" R//3^Q\ %0M
MRV(G ?YOQ^<?RX4+X/G1I/5QE8<#?V=7Q& ^'=@%K G  3QXLDC6STMO]_($
M, +GP-R+<L_<-G\U@_<G<;9\]RC#QW\6HUD,6XR_#=,W*\!_;P (G@'9\CR:
M;X_QSU]\_.NMH0[39!F2(C+$ 0.0(5$@PHGT(D@+$NT+&/]B'C%WS2.?@@(@
M?V:,Y0;(VSO+KE]G$4SII3C[:2G^7B_%W[U%C"SISS;G=Z%XAZ4 ;LN</YJ?
M#]Z/YB<;8AQ8W8_.QK!FQW$",#H>G^?OXUG6%[IE_'TRRG^512O538\+%]O!
M=[\_>OVHU=!_?OSXU^][,&@RE("MG$>0$>;4_A5AX_74R<CRYR(<MP,LL&53
MZG40F--TEM]G3_,HRPMMT\1Y>^-X9-UH7%I+E;_S+0!3?CQM.G'0:G/'^=T;
M%S>]2N.Z4JWF),;Y(*M&P^6C+GK[++Z+H!VV[XL?SN*DR8I/"Y/YIO-H9X]
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
M.T"\>/^6&FH)E11YS0UL R*12X$@;A2L.PY$._*)G+E5(M0&M3N#>I&SST[
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
M^SA^%R^KZEYEX*[Z1L6F<L[F8G_\_:W%40A- C"-UPC@VP#GQ(0$9E0PF@#
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
M-G)85X=O"$V_KE!3*[/OS6A0-ZLK"YE+=+((K8H:*]P,O;N<#*9N8)? TV_
M:(WA#5"/)1F>8E!@% 5F:=T-?%-?'OL)AFN$TPEVUHW7!S\-MOUV/^@E!!6-
MJ<P5$;9@?L!\Q J92;SS#->,H.8CP&=4Y,W[?[X%PFR<?6FBEY1;)T=?!MQ!
MW,2ST.WO>KIH4^MIN*YJ.@669!/$. J%+_8$?EP/_F4IE_[TDY G\\,[\A\/
M/NV<2)8K+B@G29$H(J3"')@$7/HL9U3J3&7"?0^._ &X<:4F 0+H!0K8$/GU
M*T@%BVU/*XZZ0#"$<'M;!O,N9Y%CP]TYLE[KX<;0B1&X<"6-7T87#-F^Y/0X
M!>^(!IF!A0M- +O]K>E<+]FZAJ.,<.X.AF$N&S#9WL7P<MIJ;>YPZK$I;FN
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
MRK<5'%LHCIU/X9AC05D?4+#)(<ZE1 8SAFP0EN# A+0F!W5Q-=MG<I7+5!<
M6U8 6SG\FN#63O^/7O<P]@M@+1*PFE.*E^2:.DP2$@%CQ%FDR'GKD7 X6B6\
MBC2WX*L3LOP-O0MJO1C46CVU:QJV9M2N E1W ZHIS8I*"X06-"*8$<1E8LAX
M2Y'ESCDKO9>4/[!7: &H E KJU;-1Z6B/"T2DW:FE"=#L55&6V2DT(@'(9 S
MUB 6$^')$A,3S5XK7E>R>*T*.KUB]6D^/!7?U&/ZIB[+@C0N=G;]Q8$//'&2
M(HK)5$U/*=)4*V1$T(YJ@J-FV3DEYJ3,/(L6M:!F2DL(.9N#01RB/($(2WG)
M-:69TG5L"IXR&ZF*VF,N7-08Y&LD5$@:(HF\' 6N.DQ]G#H*W#N(&+.$7<P'
M@!QQ[P32C"?0L:(V5!NKF5W;$+AN](-=4J5_P]*I(\O)\L6;\T F/[_.Y"(Q
M&R16R%(=$)<VMV;6$8D$FJ@SBH$2L;;!R&P3R-*<9<F8>^5X>_: J3#SG9BY
M.26Q;90L6>Q0]%$CKIW/;,U0XAQ,"V$LYF%M0^,'5U O'%W$=3E\>0H.GQ+7
MVKK(/7>(R%RKB F#M#4,!>\<3\%X3LS:QIPCXB*MEXRWEXZUR[G%X[/SSI3
M%M%Q%S%'UEH0V,EK9*I.1M1(:31WQ%$PL4E=Z2*S5X.OET]FW]+C7UCY;H;T
M=:<^/5 IAB@]R&)&LKLL]RV2"FQJK9G0VGHN/5C2=$DLZ1>:E[0+M#XX[9_7
M7*O=+DT.IP!'R! U ;2Q(O&HH_5), =6(;6.B^+&7WU@NI+1<WR8YW$@'0@4
M#CH&[*M'G 2%G"0&L<"8LY93*\%DH**.^0N,+'V1''\7'6,Y6;YH'PM*=QDS
M.=?"^0C:!E7>@?*A*)@4V.3L%QD2#L1[8'(V:T2L<E#FB^3ME6/MGZ>)O+SV
MB4^?(3+F<45QXB8(1,3(NQ^1%40B9:*R43KG8*-+]\3"[<_JX"_,O]BLBS'S
MIP0Z?'0*89("XM8;I*GTB#'"DA(ZNIS/6IB_,'\Y EAJQMZ9DNHX^(C!$D<4
M1S#/5<SQ=MPBK460#'.=,"GF^4KQ]?*9Y^4(X''C^L?-,'B0RG)"D,LG>3PY
MB73 N=VG(,: [IY,7!XK_(F"^I_Z!&#S,';]>>WW>67)7N2)XUV:[PA,'7?4
M8JXXB\$H[#07/(64:9,4__^JH]+'&?\_QB(*:0R*C%4-*S'2"LPRCK4F0$%,
M20 E(NM8S1Y-EAB#9>3X.W4R7$J6+ZK'@L+XQTP>(DDJ=Z6E(1_R*4R1T8PC
M1KFGPGF2",F!1,L1>U!X^P5)\^+_?^SH_HD@I]HI;RT2L,N(<X>1U2$AE8Q7
MV&)E(E^8"[!P>^'VXO]?@L#_,?/[(&725.<FQ1%QYQ0R+AI$O J<>AID7)S_
MOS#_ZV3^XO]_PA2 B>:NA Z11:2I48@'1I%ER8(B[S@S3C!F2#'/5XJOE\\\
M+_[_QTT!F/C_-9=8<=#+E4J(8ZJ0$]X@ZCRW6&NOC%P>*_R%9@ T@-M\Z\2V
MYW<F>9$GCG>I,A9E9 :42<4#EQP;Z;721%/E#)'$+,,10+$;[HE)_EH1GYVM
MQ@$1!O:8*13 @@!(<AQ9*0(H&E[2F'3PK,0-%6Y?HDX8A?GOS_SGUYE?P*Y3
MQC52E&#$*:?(T(21HX13S4A,!!?F+\Q?VDBL+,LWI^0]$'B0*6@4<$X$PL#M
M1M&(: @>[ ]/G'2YC80V+[ .\HMD^#N5$%Y*CB]^A@?R^)18YT0$8SQ%7(D$
M/SQ!1FB+M*=>696<#RE7&EB.,,/"VRLDS,L)P..S\\Z4R/8B>6ZU0D1C#H:Y
MX<@%01%CW 1J(PF6%I&]2FR]?"*['  \BKU]K0;0X<6!23HJG3S"D0C0O@D'
M@UMJI!U/3%L58SX 6!;)_'*K^G_NP1C@@^X#S@!6[=3Q#IA#8HI,>&-IL)R*
MJ&/@0DM0'@6)P2[%&4#1,AZ"37_.I & F-%.\X ()PYQHQ2R/@;$B$A6!X>=
M\6L;M$Z(*6$&*\'P=]$REI/CB_[Q0!Z?S@)(#)3&[!-P+"(NG40V,H=@AXE0
M26LM%?#X0]2/PMM%F)<L@"?D\>DL $I$$($:9*VQV<'OD672(,)R#CF6P99
MX,+MS^WA+\R_&.:?$O!82*>D]HC1F+, *$%:&X%8!-E.K!<TR,+\A?G+&<"2
M,_9T%@"11DN"&?(XJ*R^<V2IE$A)CAEC.FHKBG6^2FR]?-9Y.0-X%!M\.@G
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
M*70%!Q\'!Z<[2 /@16D2TC8?40JBD*&$(THC"4 [1E$,EA86=<9FZR$6("Q
M6(!P84 XP;XQ$A[U8RQ8^'A8.-T71V,AN*,&6>8HXDHJI',SLAQ1X16)*@B[
MMD&4J!LSVZZW8&'!PH*%B\/"2_0;H>'[WFF_@.$C@N&48IBC$QSL+ K!6S"0
M!46:ZX <=AP';Z(B (:2UYF8;8!0L+!@8<'"A6'A)?:-H;#UK>B%CPB%T\U@
M"/'8A6B0)HPA;C%&CF")0#<,/K(H9))K&TS4!3.O# H?,2JBP&N!U\<[??GQ
M5\'.A?H7=QO7VZT(PD0@A"#GD\Q]"24R6G$4G=>)R$2M\FL;8'C7&5X91?*)
MBAP]];'XYF 0ARB//H8K64FEV.5UA J>,ANIBMIC+EP$0\G82*B0-$0R*N);
MSH=7";>NE(F[^'@&]QYPEICGA"(6%07SUVND'6$(8X.=]-*8%$#G4W4I9ENJ
M+EL!S%^^\D:UKG#XO3B\G($N-:^?7^=UXB+GCA+$HP!>]\P@%QQ!F$O)@99@
MV\$^H:S.U/(7NRV\OO2\7H[YGI3=FU.BW46G%=$$&9EXKE1(D1&2((*)9]0[
MI6)5^4'*!T=^%6XOW%X.LIZ8W:>DNV92*APH"MQZD.[>(1<%04P':U(">DAD
M;4/7\<//] N[%W8O9S5/RNT[4\(]1*$,$1HYJ1/B6C+@=HD1$XPD)FDD6*]M
MJ+HF+UF5?XQ,IH(@C^CL*\<1CV3J7QY'-'!CZQT^D );HSC@ Z<&\<09*/\D
M(,J$D]:!KA #: .D+LPR^?5>:![>;FY/<]H_K[E6N_TZ6M#< 7J$#%$3P!TK
M$H\Z6I]$+IH;J'5<E'.&E02DZ=Z!26M1-58F(B N*$.PS0K!KAL" @9+G4O$
MZ;HABPHY7L;PD<+A]^+P<LZPU+P^%5)+@B&>1XHBQ@QQ&@TR3@E@>"J!YQ6U
M"31O9NI*L,+KA=>?^)SAQ?4V>(8CADDS)$.#%!0X/00"G)Y ON??-/8Q)&8"
MIW1U.@(75E]^5K_C(4/A]8>?+TRR!A..P@:#F!$"<>(L@KWGR$9I))=.)>(*
MKQ=>?ZX3AL+J#S]<&+,Z\U@S8A(RPH("KP.PNF<)4998P)8Q3>1K8/6G/EXH
M\%&.%Y82(&:R'32UP7, !RDL* ,"%'_'&$9!*Y)K_@=+]=J&T'4I'WR\L$"
M6))>F>7.EW3G2TV2.8Q=?SZ_<.1K/RS' E/'';68*\YB, H[S05/ ?XSD903
MJU63<7_.-OH6$40<-2BWD4$<*X5T- $I[E5V>F'#V=H&K6M<XND*@Y<#JU5B
M]2G75B2..F4EPM:#-BN#0%H[^)$($UQ@%A+//:OJ  *%UPNOEP.K5>'TZ0,K
MKR+1QE(D$]6($X*1==&BI+SV),6DC5J89ZNP>F'U<F#U=+P^7?(W24Z254A8
M[1%75B,3M$5"<&4"[+@WH?!ZX?5R8+5RK#YS8!4<*.Q>(8]S9GO4%!E')-)"
M1BVM)BYGP[Q\5B_Y,$L#'^7 ZEDM_.D#*X*MT,)Q) B3N>:U1X:#B2\TB5B
M+B"LJ^+/M7IP;<.2#_,K/FP X_G6B6T_X'CA!1^6TR@C,U(FQ0.7'!OIM=)$
M4^4,D<24XX550Z2]ZX6WCC</J TB><$1%Q8CSD- ENJ #&62!99$57B+UXU9
M5%^F98RP*0Q^+P9?_/%"X>:[<?/Y%#=[D;2(&@$? S>#OHB,QD#*BA%LE$V2
ML5Q%?E&MA0HOOV)>+L<'3\7FS2FA[3 C.D6#'*,6<>,YTC)0Y(*.S%/FK"XQ
M\(75R_'!*O+ZE$BW3&$G5$",&(>XS<<'"C,4N,8N)FH4Y877"Z^7XX.58_6=
M*;$>64R6 6\3FVOW,ZT0;+='VEHFF++:A_@:6+WDNRP-?)3C@V<U[Z^5T]H^
M.R ,9+ZE"B5F8DY^#<@2"I:^P2HH0AWQH R(NEQ89Z32ON-&-OS<@P' !]V2
MG# />DA,D0EO+ V64Q%U#%QHZ945) ;[+*<'15EY^,'!)(0QRB1)((@$HP&
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
M\'RVO]L\:NYNXYVMK^>-#W^U]W9_;\/SV=\7C?/&Q>:!""P2:QD"E4\ASHU
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
MNUX??NT6_3AL34K7]1RT9%Q\\TX,9753PI^<H?C#[H]7'R^&^DV.N.632"K
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
MT>M>,TRGMN"T3Q=6<+J=15<Z3WYANH&]5](*(-)CZ\^W^G[4R88X=&US//9
M)Z[LRIZ:NBTPU7T>B?*^_)3OMCV*4Z9RI1'983(F4#",OO<]]G,SQT.2NU^T
MLL'8<^-/<X?@#6#6E"QI:N-.=OCG.0=C9]#+73V[G([RDM);-VU ?O*-7"3R
MZ3GFEXE[R[=MJS->4.UX6+HN>C[&[!,9%(>Q"R.7):/5];!.NT.X8"*KW8RJ
M;1CT47^\2MQH &\9C!?V21R[5<I%!:,'ELG8K>%BT[93OAZ^LH>VU1T,KZ[4
MJ8">ENZN/(=@V,.TCR_JC88PR_'24P8S 005ELUI]B"T6_'[9'7D1=^>%FF
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
MEX\WB0SVTMYE!ONEEOUK@A:#E:I-_P3VP?E>8_>;8CA*YQP*/@K$?:Y9J:1
M+N&@29#*)'[#XO3FZ<G[=0?BQ-]0%J4OXRE7-C3,$\69HO4+S/;Y+I?-6MCG
MM:EDS]46O6')^5M5LB=;L(P>XK%$__SK7SWVU]\)=K>G/E!C?_E8NL4$7\8A
M 7<_WU+>J[C%F'NM0(F"W]:T>*!!6\>QN5Y!\I%*GCQZOW]%7*<6^WT6R6UJ
M!:Y>48]?C<Z4?15?LBE:C=&B,?K\:;O8^;\1,-$VB/F#@LV+'N=J+=YK+4[
M?<8],TZ@?()U6CWC!L]XT )G3WOE,^Y:-0C5(%2#4 U"-0C+'02BU\04+9_S
MJI5K+OD;E*^[$BPN@.06V]?"=),\F*M9&*^>G=6^>&!V1OW>RRX)'T?]F?W#
MRB=%L3!)>,$-C\9I%21.W'D*O^F;%@^X7'1O<F#Y>IAE/8IKWC6\,CG7^L?>
MMC_;_YK?WV[N;1]C:.>/O<8A_&D>[\-GM>U\-O4'LO=I]ESK'5X_A_?F=GS=
MX7N-#^S@:$?L;<.?]Q^;\-GIWG;[Z&#[L_C[?&=<6+,LL+G+<UN^16ZE()PC
M;?*N<X\5,B9P))@6PG/#G#8;KZ58N.7XZ4K 5Z>GKD1AWGN?*E%!R!I"R.YU
M"$F!)A6#19R4M4H 1YS'!DF&-8[)!)5KM2NVJ;A>+0A9JF/EA9( +AUCFDD#
M,LR%H0Z60C0!I%D2&YV\:1&92H(?48(_7)=@X:@0,$<H,)J3-))'CNF B&5$
MA40Y,_E(J\5U1RH24)& ^Y& "D+6$$(^7X>0H&@DE"ND/<D0(ATR1#,D>1)"
M I_3D8$=0389IRL$(8]T5N<3R-_;9M[^&(N/L=MI=5WK19P7]5/0\=VSV<J'
M&*#&*RDHEZ#?F*:P!F$5*^[@P\ KRV/50.?LTGE1P[7&_MDWG83FH":0$APC
M[I)#-G"!J+5*>1R8XS$GPV\RQ5?H1/07)WT+ZHY6TK=^TK=[7?J2($PE*<%6
M(!%Q;00RU'*$O4W)&T>M$ANO]::XO]'P0,)W"T5_)[/_V0CPO/JT4EL1+.-1
M46XUT8:Y9%QDD1,6M'\ SEX6]4#GL=^K9/?6LOOANNQ:3JG6BB*BF$7<2H9
M95JD<UVPY+QFV.;#K "7Z;]65'I?A.0MJ-I;2=Y:2=[GZY)'J;<Z$(XTC09Q
M%B4R*B;DC>*&$8>9)ZLH><\WM%^+/W(1F.*O.'CA(?[.C^YL? [T@9.@* 17
MW%/ODD^>ID1\,EX27/'T%42<F1"_-I8E(C@RC$K$3=" /9X@9AW5U&(69-AX
M3?@*NO=?EO@M"(]7XK=^XC<3'O=!".UH0#$:,)-I$L@%+1 ++E#KN;(2S&2Y
MJ5?*,5Y%QY>B/VU@/$A-:*242PKF55(J4,<-YYI)486V5E" 9Z+C*@669+!(
M$N$0#RR'MH1&V$;B1%1&! KZ4ZQ@CMS+$K\%MG(E?NLG?C.19>ZT44HZ9(D'
M_>F$0,8SAL!63DJR2*T%_:DVX9H5$K[G&UC^MX57Y<CR?NR^[*#RT<F<5YQ;
M3Y53*AG&51 F1,QU\)PK@L'>JOCZJN$-GC.7,8\J.E#RQ*: .%C.R"1M$5#U
M(!D6AOF<$?^34[@JU_A3JOM*_-9/_&;-Y:AQY &#?:P\XMAA9#DSR%&>'(Y"
MA> W7HM-2MB*"E\55;ZS_C0L.A]P@OD7G%'K0K".$:FTX$;95/'U%13@&7-9
M:Y:4P09IYPGB/&&D15+(@.9,@G&9C*WTYPJ(W[S^K,1O#<5OQES&1'%KC<GN
M9I?CRP0Y(BA2-#(;+,-$IZP_-;[W9JPJNGP#\?LCUX4?-(N_<NM?=GCYT)W,
MQK>(U8Y(R:17G&.M;534.%BB*3DV 9R*L*\0X)!K2=C;-?%-*&)@V@Q2GC/$
M*=;(2A,1DYQ@,)P!CV0^MYJIRCF^4MJ^$KXU%+[=Z\+G- XTBHB"RM:RL0%9
MQ1C2EO(HF F1NXW7?%.(*KB\Y@(\KSTI8XY%*3S'A&O*+8$)I1KFVC+XW%5T
M?04%^,-U ;:)):DY0=1)$&#/';))"R2<2TQK;;C7&Z_)IE1B107X10C?O/:L
MA&\-A>_S=>$+R9)(=$ )1XTX!A)K7 *#F3J;HH&YI';C-=VD6JV0\#W?T/+_
MCKJ'%A[3+=[U^JU?%+!^$?ZYYBC-%DKP0HGD8E!,@5Y@.FBJ?9(^,>R5\15C
M7T',F0DO>ZQ)<"8@F60^="X$9 "#D U>"2LB\:I4^&PY^625@WRIE4HJ 5P_
M 9P),.>SQ)4*%CD0-<0Y_.6<X(A$;4,,5$N+L\E,Q+T9=Q5@7CD-*I(1WF L
MM.(JAR(-2R$R;$-R^>#5BK6OG@#/!)B#=4XG(9'5)$>X2$!@*'L$:*R8#Y9'
MJDH-RJH0\^IIT$H UT\ 9T+,%!L>.*A,;*5$//-8JUG^E;"06%"6ZZQ!N5FE
MJCO/-\3\UG9MR%;S=C[WL?^R@\S>SD*.]S:)9+T66G 'YI5CCA.ME-,B>BXJ
MTKYJD$/GK&85C?2Y7HGA&JQFHPS2R3ED#!$\.$*%*W4^UU60>:7T?25\:RA\
MLP6^94B)NH2H@K^XH )9L*&1M5A'8-G4$YR%C\A5<I-70>:E:,_H":4.,^*X
MY=Y*QR1C07 LE&"4XXJPKZ  SUK,(42C=$ F$8LX]@&Y:!.2WN7S%[@-+%<
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
MJ0C%/OF0BWRL$+]\\ET#>RF!<3.$?HRMG$9NR@O>!'"^U_C\C09%C4P441I
M,]KD82$E#I:* I49@]2.WGP3P*-F_#=R;G^9I%]F^H\SZT<=:!$\9% F^L-B
M'@R*O/2_YX2]U.L7MMT&P)J"TL177#J1VY< 59PV6[Y9G,9^+$[Z<9!#BJ$
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
MV,SG'JR\X;=TF5Z/G7G/!M,?JU#MNF#ZO6DY]BJ7L-6"<<<==AH'&1A.6D?
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
M=\\&H!V=G(TI139+\:T-&-2F.6@-V9)RJ7,OU$JENQ>DOW<'"[?$BF*4O^#
MV^4UA3^ZO7P70U'/E[]W?3^WI!P>DL^2?@Z7WX^=-RSD!Y<9K*7CL",[))0#
M(1<)A)P"8N>^-X.9-232M8UN)T[NS'EA,S;;5JL&3W>0P;=_YMK-P3"_9(<?
MN06UP[C;;=!>KPT=I-M(WLL)JWYW)'FA3'QE!.Z$/D!R[!2XWDQ92EHV.X<
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
MI*<,_163$Q9H%UUQJ54!P"?$I#%[2=I(M<<&2:W!:66>(&L!G52R3"DI(G>
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
M(F:YJ:<?G35^,]-[V0]R,=5V)UN,$QG6>69EO9[UF^F>EF7Y[B76F;R3&>;
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
M8'^Q[3-[/EC[YTW& !X8/USH];R$T[-?\!S-$WVU_[;+,I3:43^+D_]J&6I
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
M9WXY,%@G1U5$..1D8$HH,B+FOA3&"9= Z+'BY((QMS2Y>V&DJ@CB.0EB=_O
M$!^XR#UZN*"()U#!C=,"12L5X)/6AN9N/77&;FE$=E,-*KUU$U/_L@M5KI(Z
M*1'</E^O;:?K50<O?4PW<UR*HD2#T:#LOULK&B'<&IN]7F-U4FOLZE%%M#?7
M("[A[;*[PEEOU,Y=&/+=L:BG?$OUWVL7 @B/RX#?[",VI]+B=)CYLI3C_#D4
MPX/GM?)S3GO#LAIJ6;(Y?]"_%JZ^/@L_/8N)#EJ.^K*?Z9QYN?,<]^[WOK=R
M[<_V^:LT/"W4D499+W>2$[U]51[V?3G6K5'<[7TJ9[C=G=19J[C[%NXFV<I1
M#'14J2AB&M00+HQ!SBN&B%<$#!\1I<PE'&^M;IRYZ?4HPGZO*&*Q%+%WH V.
M3.M\5E%&Q%V4R!(*/T(TWB</JFG()\AOK4!?5(K/T-:%7:\-SV+[6ZQU@ B.
M?MQ(<8E*Z$T*WN:N.Z _%Q(FIPIU[/&XO^7QJ-\:Y!:3A02Q@]D^<O5)M?IZ
MV;"M+''__WI KL5ON3;O.$5SZKX&:.G6'XU 59_HZJ5,Z/7/KXHK@QRXE?>
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
MN=*T[?J?HQ;.WY<A\'2Y^)N3M:^0:8'(=#ZC%QD2,4[4(4^%0EPXA0PW!,4
M>A!V1&N.US9T'7Z9P:5_5)Z7Y5(R'L+"SQ83JECXN5EX2KE@ABG-/=@R)!<<
MU8HAXS7H&CR:?(;12DXR"PNY)"S\5-_+0PN /LV"6-52R?>?]3)J(\N@C%SK
M2W/OWDL5BMT+Q2YF%!%+!*6"<V1]%*"()(VTDQX);6P,V%I"&)A(@JYTV>15
M<="\,4A=4,'E58'45W=!59#Z*I Z[75*(/^2$R@5E75R\TL=M47$*>4EHUYB
MGB'5U E95/'EE_(Z308RH7!>P-<R=3I9_EXLS]J(9=G<>G,BH]>:TCVN(\]]
MHQRO^8RWGXSW81L0K]C0LH=@:"78Y-CU<? <+7;NZQ1:.;MQWL26T31\24?U
M="SM1JO2[^]&1?_2__3<8-,//[1[SK:O6D[\WCN#:\HFOI6FLT!-A\X8CY1+
MGZ3'2%(!QB.-"1D&FHX77(9(DG*1KFTPJNJ*SAX#764_]NK!U%-ML>6#J==W
MQE<PM9PP-660&<V=ET0@RJ)&/ B.M+4))::YB8XI+G3N36_J3,ZF 2RCKW[2
M$1G&&>]&MI>ZLAKP"PWX:1;X LV>9[+ 7V^$;S2QIAF'-^SOV?/<]_1DC%NM
M,UC*T!OE?JJ3(:^86WI!%ML"EV49[;W7,O=*E:AR73^[IK1]+2VI(9H7F_2
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
M)_9WOYS]=;'-8$P'43GA) Z(,9J-,&F0C8#ASH(,]PQLB"A*@0OH&L-FCM<
MO1F3SVC10#@C /-,> <F1J#)@+:U5HL@)D\S"/9'P$Z3#0#-[_]&K1) !S..
M_1MT.M>T^?%[;XZ3X=S;T(.,"HE+8XW0P3$B" -*$?G8Z^V<\+K&W5W@]'ED
MV]8!CZ_7:[\/P_I] @3BM2>TMK'3K>WX82\+="++BD+U(@P"; F#. =- (BC
MGU.CV^WBB]YH.!B"S&]U#VN#(PLR/V/;]/1K?R\_^4<=;-G3?N];"U:J"*'$
M>%IK1]OOP@-0&7GY!M0'U#3HI>$9/+ P*EK= ,N1)U@#E? 0U(^N;9\/P!0I
M[P'[Y?_U0,:MUW9A4*76 G0VR.\IB1->]M\/:6S@),,J"9%$Y$I@JY.4@?/$
MC+#4V?($!B":1)-?[@ZMS@&X=]<'N-N'?4NQ#XM+[A=VQ3\C&GX\T)9Y&I1&
M%(QIQ+5RR('EB*A43%BMJ6(J>Z1873)=!RZ9T6R!6O)Q%R ;;P='M5-[WLF"
M^-5)Y(_Q0'9[FR6;36@F#C[T>X-[1N-_/K)HG#4W<ZXL6)26H>@$R$BG++**
M!Q14%BK!)<I"#H/AG,8SGRQ&I[#A6>4 +%JO;9<!X-0;]8='M?\;V?ZPQ*S2
MNKF.BOTL S(]V9H'_FT- 8%JA[U>.&L!3+;*!]E.MJ$>2F24J<!$L" 3&1=*
MZ>!Q= 9;:A@0NQP;SH;J>S98F1#9;[W^'_V>CS$,\JFP/_KQ6ZLW&ER3_A6Y
MS2>WZS:V!SM^[T 1H[%C&@GC+-">3<@2XI$T@8#])+C!V:\'5,?G4UX_CK,1
MLA@%"3GJ^R.0:R J6QXH)V1=(.]:*=[ZL6-;66!.B;CBKT$)9"&6LN31Z&:"
M,AA^ +XQ'KT%A3-(K8&[J/8.=/KMI\B]/%$8U0T)^'O+NE:[-3RO"&\^X7TY
M!_$G=0(F]Q0Q@G,<V"2D?6) <#@%;*WTJ2AH5<<<SR>VX9$=UCKVO.8 MCHQ
M4TAAD[:NE#^ $E8?*^IYGTIH+/)A)LI[+79.V[V"MC)IG<3S&BA=\%>]< %E
MS2QF$KW"QIP[TSF-W4%)K?%[_ATTR&^%9[I$6G2>BUN>@O;:FU::[QOT60(U
M>KYE]&-+9RL.\\PS.\#*';9[#M38'/G)B49YZ4-IEDT\\2"!=O[<WD+$P":"
M\9&O B7Y\# 6*GKV[K?B6=Z>]O2AQD*K/NUE#T2I5)_:5K_8S+&X&D><IN1>
M!J#68/)@P*Q1>UBJWZTNF &'K=(U"&^X_D@ L_XA6 :%7IZG]A @<IA&JS!1
M)F*NM#*P@B(%'7 T5(E)NU;&<"$!L:3Z;D3:OAS83MJ^''69\'AY$/K#6'I7
M6'2+*@[C;APDDO41P9%B$02?-11T<>L0XUJ8(L;)\F$'4Q>*W*:*WT%M]2P
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
M6[\U.&T9VXKG5U7_3Z.PG_(M0I*5%]9CMH7#I0OK;_ =Y;>[Z[6#I5LAO^V
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
M\)5'C&Y06NI[MJU >>Y?.L7IK-_#'\=[WZ)_C*)8:EL9;D]+9''$P?35%(7
M+3IC*A9JY<?6KVFN<6U$^H&C2#?8Y.WKQE<CQ(?30BQ-QHE).,J4)"#$:8*D
MW6*997%&4Y9(:DW@AK1G]Y*[$F6\\NB25\8/+\<?IN68:!#4*,J0T5F$&+4=
M5&5D4!9E(9>2:D&X5\9-%>E&1*2\,GYP(=;30JS21,N0<*2TL,>1I0+!>L:(
MD(ARP6*MPZ@QROCI%G]<OYD*WS3P5Q<W51-Y28'<:6^@VJ8J<+I#&>*#DVLQ
M3/WO1R%($P'[)OO,0*"UB"DW3#/PEP0'!SJ+:9H2DU&6N7K,6YI>'HAO!L0_
MIT(;\-\_49PR+E.#0F6/BXDBA@2)%"(TM>&J+$T2L['-%K2;:7S%Y0IE\(&R
MD'<=ZJRMZ/':X_7-M^X9(3*=Q"JCA%&M5!Q',A0A0$,([X3'ZP?%Z\-IO!:8
MQVG"":(XI8B%DB)P>5,D5"Q,B*6B*1C.$8X]7GN\]GC]#/ ZU*'6+$HSGDBF
M".=A$D4XC&)J5,I-=#>\]E',%>'XAQF[6X94::P09UH CD<Q4D(K)+G.,D!Q
M(DQT=1338[G'<H_E3P_+I18TDYAH(RB+#1=IPA+.4AQ+EF&1>-O[03%;3V,V
M)2$W6:A1FM$4,9P0Q&D4(B($24@JP3"G&]M"S+?X]WB]9)3]15_"X^!OFG_?
M'I+Q:- !(NCJO967O#N0%5WALN&D.K+XDG?=Z-@T(MJT39Y=/E1DG0R%?G*H
ME<CAD(?*2)H*!=ZTT8*G2L0Q(QF1)&3JFN/+@L*T9=^D0;\7].!I_;QC@KXI
M.GFW>H R79/E<"$\MLQ+>^EY 0A1P)1L=+_?,D$FO_<*2^$ 'F+0X-Q^41I8
M%Y<&@&?##_JF#)0LX?=PUPQNWP[DE\*8:ABRFP8M(]O]5I!WR\&5/S2=\W;O
MTL!W;>.$H-R:7[]@Q*!NO>UJ.CH),']$DL5V!Q"+J.:2AU&2*A6S"&/,_\$B
MWIC\U3P/Q$X;/PC*NP4_.C[;#PA]&?S/%-/.Q%:P$9$Q(M2"L81HA2.IE0 F
MB(@]F&MA[G(:VD\'JC3_&<!:['^W"W(&-W_5[NEOCX[JGVI4[UT<_GS]]=/7
MD\[GCT=?#]\ 0G?>__ATMG,)S[T\^MJ"9WW"AQ\_A(>Y"#__NQ7JSM]=^5$,
MCK_N_#S\>)0?O?G<_D0.+P"A+S_OO6X=[OW5.CP[(,=O3G) ZA^?S]Y?_OOG
MP8_C]_]D&,=)'',D@$D02SD'3.8QRC*BM3#2I$152A:8SJ0[UI5))2=QDJE(
M1)QED1!Q&H5IA'D2V9:@H"D-J,IS(+J5DHWM,<F#BN;SP#3+Q0OYL9F8]$MJ
M;!]W@]=&%0-97 8X<:E!LNGP9+?7@=%?_E<9O.K)(G5)Q+P >>\5I350VK(
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
M+!4V?U?VK<J=2G>L S,-X[95)<\H>.N+%B9HE(17%RW<8'\(QGYKV%,J=6A
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
MM-^FG#6*\!P48>:$K1#2*(Q[KQ0-,4]>ZH6EADNU3\!T;SQZ>^26T!M4H)&
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
MR9&LG8P6F)7T\.[T7D,:5C;Q(WQ$#DNJBB=[;HSD I#UVCL(FEC%.1H349$
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
M;=J/W(]K2.9.-<[<4BRQEFAJMAL_SR9Z 9\[B./E%.'ODU6KZFFZW*WZ[MK
MOK39$>AG9A'0<-/&H'(-%I6K]-GF2-&6:[,I5&D$@SI6THR#1Y%WH\7T36EI
MT;^/N-HO)C#+YU7\5NM)O\N:^= E]UL:MP)<:04L^14 %QT_EA N*LI= %C
MR$$0+FE.W#*/4)1RAYJ6C!!FJ(1@C&YS*&Q3A'L?\=_P/K_@S'_X"I,OL,Y(
MT3HS%7!2LK "9Z:4U[-9DF1,3!&D=-"FV_BNB(>TFC;AWXTR$H<0;;U:$QNB
M+1'4#U]G([0' +TA- =,J9%F(ZI:8('H915DB#I*=U3^K8$.*0PQ*-KM(LCC
ML*UL+HV\83X*)P@MIT1EV3H*B6F2\,F(.$-H>K1)RMP:ZI!"&<-CW-;"/ KG
MRM;1B$O.%%"<#JT2/AE"E#*VH12T#1FG*T33INSFMDB'M#,].,9M+<KC$&[\
M!4:4F2P#C81;XTMIJ5*%S$DB%,\L>6D,'-?:/4<ZI$WGX1%N6U$>G'#+W?$+
MJ,S8C+Q(!(151 +:G-YK34"+:%B*-KKCKJQ7X&Y"/?U'I-[N0FV6V3#WTX_C
M,($3',&E6E/7/]@GV6&[6^R;_[#'@"I%3LI.TASE_^7F79>[513IQ)(ES"=4
M.PE*4PBNB%/"0::@66Z3)'$_KGT5VSU77X6IM8TBE%*Q(7F.=$=-&UR*Q+CD
MA?9<4=TF^_\A9$.*>E3DSG4E555 U=;#>U!="CE?#BV/',N,FAQ)4*@M989E
M^BPE23BEH^$Q--HQV![KH/8&CL.M&E(\T.KWLI^/SZX#??E[Z3@&[Q>Q-"S#
MU?W5N,<[+[,4ZZV*N]ZZ[FI990(.LXKRY%5(RI*82]MQ!X;XLJ$D4&V5.J42
M<AN+^&BKZ"TRN1&6AJRX + D0&E\YZPE-CC\(3C/(7*1S,%MBPUP/Z(5>!O>
M;:,E*POW(.OS3<SG 6L=*0@1 F$B)W2MM2G-7AT1B6H:9(1$V^Q\[01W2/L/
M@Z'?+J(\)NN606O*N7,ZB!*J=J6T!;KS%+$+E2AE-!C?J [QCH"'M \Q+.9M
M+<XC<F\9OK8Z25'J7S :2_S()Q*,EL3C (*B,N30)BEP-[Q#VH\8%/.V%N8Q
MB5?"B" BS9)KHKC*Z+8G()Y30ZQ7$4V"9&VC1DJ[X1W2OL2PB+>M,(]$O*M!
M;$IY"LY30ODRI]!P8BV-)!JE/>4ZXM,R /8-=G]B,!3<7:R-HC,G,78+2&MX
M?6EM.Q_/%ZN>I]<^W#T0L\-=]HNY[#NL6D6-5G<ZWZ6ZU&<K,^^$R('@3T$D
MI1+7/L:)]@RD<L&Z1D>0[H14(5>]7/B]G_CN<D,Q7./+\6$<7BQE&*@G+C%/
ME,R:!6VI;G0R[W8\0PJ"U&''+3GD^\JA3MF!=S ?=U!V94\FD]E7/XTP$E9!
MPEL2G[(B4N(/#Q:(Y%8I%JABD3VD3.ZZ^) "#'5%6V4ZJQDR;[M96L3Y;[[K
M_'3^;3E4/WD^\7T_SF-(YR,-%(STP1)/+3).>8T&EG,DH8T?M [*-_+5-@0X
MI+! &U700E(USS:5(?_3Q^4$G6.AWG-+)1)9+O.%;,3QADB$D"YEEH7B3=>+
M:WB&Y,$W72_VD4-M3CR;31?]]]$E"-Q D$09BJ,KY9R"BI[$)+C20B0A&S5$
MN@W.D%SKIHS80PK5"'$Z_[2LJ7['* UCB8?D"&*SZ+BA*^5LV5PW(!QZ;8)*
MVH09]^,:DNO;AB(5Y=+(L7T!W?B++^5M7Z/OURU671Z7?KF?ILEWS)\[Z/$S
M2+.IG\(\E$Y,:0'S61EB$= LSW+&O]OCX&([,/NYR0>:I&K-@\[17J+<R-.<
M')HH)+I2NJJDM?MD%#$T:U1+C@;99C?^5CC[5W _O^A%<:[3?/-.WT:&HN/F
M0R)*0.D5ACK99AT)+MNR)!DIREHU)MD,X9 \[?V9<[.L>@,Y5>P#< /(\]FD
MI(=U?O*N3/B'V3N($S\^*R7"3Y>/[D@RS;+-G 1I$I&!!U*ZIY#H(7D%$JQL
M5>Y_![B#ROIK2;!6(FS MM72,7(N&)U,("RR2*15@CCG%4F21\ZSC#ZU5LDK
M)(VU\?(F(Z,5D\I$PC/%)QS H&&,V$S.,EL(H&.;-)Q-T U3"^_ DRT5\/:B
M:?4X?']J3\-D_'$Y4>71G2^ZZ>4G5WF)7C8Z5>A)$2E*PV*'QKEG(5J;)(NJ
MM?+= NY E6]57K627B.'YR4Z(K-O ._]E_'T8U]JPIRDM.SBXB>OIWG6K29S
M]UV\+>^PGVNRSW#V]#>6X?;GL[//?OJM-,CIQF%1;M7_$_KYR?SE-)WFBY*Z
MHQPM-1XMNF2M)-+'3#Q2CIA@7+2"^@2;E4/>](Y[;<H\<)-UH?]12F#!E^+I
MP3,B5:F*D,L/:;GES%GI-BL]OMG]AK!*M9/ZE6V<!@*HLUWW +!UP?V1B4:P
M !&!N8R:3LMRHB02&K5FD0.-)M=@QOI^0]C4&P8S=A' 89AQ4?-^%'*D:&D!
M\4:5_4A0Q#)T?<KQWB2B1W^G#CDN;CF$3;R!\&,W,30[]86_P@?_^_7DF[?=
M[,NXQ^OB"G[I2WL$5W>]U;ZGNBH,L%)@=!UVO[C;.K/I&4PAC^>C1*U,1@/A
MLN39ZG*XA2=/P 4?8[#!L3;Y^O?CVM?/6E_]%:1BGM\<ML[*:24BB;;T5I"E
M(5%D@,]=]""E#"FTV1QZ -@0C)T&S+GN2-443S7?? WJ_1Q]NI-I>H-_< LT
M$ZB2E&7"C+!$4AZ)\PC-1<DE!8DK<-,'YGYX0S")#L>?BJ*JS:)7LP[G>'H3
M%&5.:8=0%/Y'9,:Q.Z,DH2DRQUU"P&TUSQW AF L'5#SU!!/Q:A@!H25[AHP
M&F99E]+2 >TU(IT+Q(7$2-0T\R08HZQ-C;4'@-4:]WH=N&OXEC&!4^!6"?#2
M&#19C74DQN@]4D%2UVH[<Q-\0UJS:S+I9O2SNK2J/T%75H2[$+H<@S0!'VH?
M?>DF@0AEJ8=MA-0.0$%HLX1O@W)(*_DA6%5=<M6YM5XS[L(6G(G1)$E8=J5F
MHK/H8@,ZUB)[:[CF.K3:V-P$WY#6]X-HJ7K2JMA_Z'8P$A@#+QFQ6>!X$\_$
M1E%2KJDQSB5K1)M=XK;>]YW#%27.%0V!Y 21@-Z=992B*(!*EAS-C>JO;1-S
M.';CMOV9<H?I6T,J![-\0Q*)!95(B@G-<>\0E#8";8ND0B@]Y1J5D]C*\CUV
MW[;Z7*DIE_91Y'<09],XGJPZHLSR_!/\6D[>KHR*?FVPEA>+TFCL^:S[/.OP
M$_SC=_C??+8.G_<O<X98]O?7GUR*TEZ$;NM$HX\"N5I4^_@37BDZ?G'_B]L6
M%&4;93Q=C*<?UQ5E9]-^%-#F5"44D#5J19D3D*"Y)1:BR0'-!4';5'G8'..^
MVOCV.UT5]LG\NG2O?'FD+8!7Q29WY=AA\KG4+Z2$!I:3UXJK1LYZ!?!#L@ :
M,?.ZHC^TR*M9#IL O]VGA'ZDN;/XCY*8R_*ET*-T@B?\C=$40I1@#_DL;X9Z
M2#;'@-A91<@'I>5UU[1\X\48_["8YV,_&2E@U$C#B!'!$LDE>L+< HF*"L-P
MVOSU/)H#TO,A]$,*- R(IE6%?E"ZXIO/T148S_N1B#$I*Q+A.>G5$8) @R=)
MQRRC$$+G-OVLML.YY<'LMAG( ^+@CI(\[)K]R7?PS/>0BH^ /N>Z1%)I(8Y_
ML'9 WT(7ER?1F4_)I$R\IVAZY.R)YR:3*'W*S :A79N* -6'LN71\3\,9]OQ
MH4X"Y"9C^'G\L5M[RB?Q?Q;C96!E#I,)_N7"3\Y;M8Z"4)['<DC 9EUZ&B+Z
MTO9+J<ARU"8R_F",H3:H(9U7;TS+H\KSH$KV^2<__8A?>#GU<0[IW)&#S&)D
M)2/4^;+O4A8%[0*A.@DCJ SHU1U-F]Z.>1-ZFA^#G@<6\.'48S%+%LNJ O\Y
M"_U)G/]],@O%ESLOF?AF]A6_L[K"N:9W:*1(X ;-Y=) 6\>(0\%!B9 U-X%F
MM&"JZ<I=$&["3/MC,',XDCZH%ET6.KEX:_KQ-<J@/T>=@HE*6TFLB9G(4K#=
M6QF) !4H<U;91CM7^R+?A+?NQ^#M481]>(J>I/]>]/-E_1:<)JDLB$B8BI)(
M3G/Q^Q(1TH"FFEDNV[1NV@7M1O%X^@?EXJY2/73LZ#W,YQ-8X<Q9<9YR) "(
M3DJOB1.L5#9FBH)(E-KC;0Y=Q;H1]_Z FT%[2/2(S%M'7T?::\9#Y"1E:M$M
M*Z:P2IQP#UXY%CG>;" $7$/>B(=_P&V?_>5[Z-.-YSDU^-'E#JAUSS7>>9-&
M)QHW&U2U(F_7;G:IH%*IU4\!.*?,$TC9H7LKBJ>@-?'9I:@R4XZVV9YX -A>
M'O2-:_\VGG_ZST4W[M,XKDI>X"U*U^-5$U&?J<DN(ON51(ULHB,A!D6T3\FG
MZ+*[7BSF#L=XRQL/*7FB)E&N.+DMA5$]J?("9*F M!+%175P[I40I;,$M8F6
M*IP*/1953E@&9RG3D:DV?L &X 960*@^E5H)JD[(;FN.6Q^6)<%=XK1T49?$
M45A6"*>>:<H44^T5SKZ#O-:@915 '2_-C'FWB/-%!R,FLQ62HE]E2V\@8QFQ
MQ<TJHL_&:JG9CJIU@[L/0;\VY\?]RK:VC-II7/SE_+UUYO3EW<N3:5KO6_:W
M;V\^G_7SD18J.9,L08.6$9E2(,YGC3J5I9C ,RK:GOJL.9HA)*\=C+V#H44[
M@J\]O>G'-SA)SWW7?<NS[JOO4O\"'05T$.)(<2^45)%H(4LQHJB)C:6_N'-.
M<\@T27L8_CX,=@A):\>G9V6A'H-]YX$ !4F$4D]7I=(TEP>-3TDRR!9OK TZ
M,-FFP<SV6(?01F3(W-M%I'4LX5]FT[@Z-'=+F.-S!ZNN*"/CI7?2)A*\%$06
MZS\((]#D\$(G82/.TT9FX6;W&T*3D<,:@@WDT$XWO9Y^0:"S[MN(IH N/C4$
M'4%%9&2!6,,H,5*9H#37'MJDT]R-:0C97,?7-;N): #>PG+C;V0H$\$:BY('
M@Q8@KL$>&">)LJ @0C;F0(;5=L"'D*MU?/(U%':C^,\2R'<=/,J,^<B,)NA[
MX$),6=GSRT"L5((SI52V.X9!KMUI""E41PYY[#/W=>EPL05T:QC4)T%#PK57
M,XDT=1J(IQ )"SD(R,+G#6V@C6Y7B]^7KKI.33O9*#5MQ'-@V1I#G)8ELY=&
M@J/GA(:05!+,@_3;/@*[@MDR,-@F7-Z(*G<]' <17+L%_]J,:,.TI\R2%$JW
M-94Y.M76$.:BDJ"$HKK-*9:M]BT'$+2K3ZP6(FJ46/#;<IHAG7Q!3_DC+$.$
MZ"E?7'66;_W&[CT=]KOA?@D'%0=;*?G@VOU^69P%Z$[SB_%D40I?+&]_BHH(
MU4Y"0V 4A0,(:+,E*F@Y?EP6Z4)) U$+DZ)H9*5O"71?Y7;'[6[<YYGOQW%D
M%3Z1NM1DU;(4CL$?3C-#<E"2QX!SX]N<O-\*YA#VV@[!N^M:L)TLJZVEMT*\
M:S*^Y\B.=(A>44E)C@X7!Q$,"2%F(L"PY*5VTK;)#=H1\!#6WL%0L+)\-UR@
MU^^7'\'W\+<__7]02P,$%     @ X(!15%H]PO#^@P  ;-@% !4   !C9VYX
M+3(P,C$Q,C,Q7V1E9BYX;6SLO=MV6SF2-GC?3Y&3?3NHQ/E0JZO_Y5-F><9I
MY]C.JNXKK@ 0D-@ID2Z2<MK]]!.@1$FF1&F3W"!IVFM5.25+YOX0\6T@(A"'
M__@_G\[/?OB(D^EP//K;C^(O_,<?<)3&>3@Z^=N/O[__F?D?_\]__MN__<?_
MQ=A_/7W[ZH?GXW1QCJ/9#\\F"#/,/_PYG)W^\,^,TS]^*)/Q^0__'$_^&'X$
MQOYS_H^>C3]\G@Q/3F<_2"[E\D\G?]7>>1 RL! ]9QJ49Z"X8C(JC1Z2%4K\
MWR=_+=)%GG5D'*2MOU98<$8SJY6Q,A0+$><?>C8<_?'7^D>$*?Y BQM-Y]_^
M[<?3V>S#7W_ZZ<\___S+IS@Y^\MX<O*3Y%S]M/CM'Z]^_=.=W_]3S7];A!!^
MFO_T^E>GP_M^D3Y6_/1?O[YZET[Q'-AP-)W!*-T\@!Z?9]?_\#8:\]/E#^E7
MI\._3N?__M4XP6RNGD>7\,/*WZC?L<6OL?I73$BFQ%\^3?./__EO/_QP*3F8
MI,GX#-]B^>'JR]_?OKR+=#B:_92'YS]=_<Y/<'9&B.>?,/O\ ?_VXW1X_N$,
M%W]W.L&R$OUBR164J7#^O7[:3UMC.B4@DW1!O*"_Q5$E>(\8[_OT[3%??Q;+
M6.#B;-8CXKN?W2O>\3D,^Q3PG8_N >W\@]@YGD><] GUB\^]A7,!<AEA&I^,
M\--?TOC\ISFP9V]>OWOSZN7S)^]?/'_WGO[\]<7K]^_>_/SN[T_>OOC[FU?/
M7[Q]]^+_^_WE^_]^''4Z&7TB:%((>?EV__L:GWX+.Y%D.!K6?><5?7OUB(JV
M]U7@IQF.,N8??QCFO_TX3)!5"#PYXZ7&(D"6S#G7P6932BR#-9Y3E[-8T-DX
M??'8L[JMCJ]Y<$8GR-G\;P<74W8"\&'P;D8G7#WL2 +XDKZ<#E!D$ZQ)+*I2
MF Z:#B[E+7/&9A==<"F;NRR:+EA98!KG/+IZQ$]543_AV6RZ^)NYZA@75UOS
MOZ_&<JFLS5?W<I3H")_B<[S\[\O1N]DX_7$Z/LMD#KSXU\5P]OGM^.SLY_'D
M3YCD@<*BE<B%99LSTY(PAJSIS%86=!)61V.;+'U-H%_*Y8;&3R8+"5WM!QMN
M&-7*Z94GL_'N%'-)#EK?CS^,)_1Q?_N1;\NCN^ &5KLBZ15FGG8AIHU7+/+B
MF%<J\N"U0Z,:O27+6';/AJ;J&_<J^[ML$-NRX=GX_'Q\N>)WIS#!Z<OI] +S
M(*&7/EO-DHST0A X0H2*Y9*L$5"R#J4))58 .FY>]*&%N^20O6P5EU">7TS(
MQ?P-)\-Q_@><7>#\9V\^5!U,7WPBVWHX)< R&Q^3$<P4%9E&@2Q:8G-6R6"0
MUD6MV^TDZT ];D*UU=Q=JJE&5+M\&U8@3EH&FR(+MI!\JJ1"5IQY;7+0(+%P
MV"77'L#Z39*M+]W=99ONA6UO\</%))V2<.Z^(P/N740C"G/.T>N@ !A8Y5G@
MF?Y:&30QMR/70]"^ 2[UIIF[U#$MJ7/)^$')WJ.'PJ+FR(C-GD'4EOD8;.1<
M\AS]SKESB>W;)<\&NKG+'KLM>Y[D_[F8SJKO.7T_?I+S7/AP]AL,\\O1,_@P
MG,'9'&D-^V8R"S_@:#J/)K]%$M5T.,-W./DX3'BYJK=8HSKS3[E\.[SBJ4C@
M+-%RF.9)UF,\T8%>9/%0M]TV=GOKE1TW<P^*%W=Y[[;E_?/AQV'&49[>\G2>
MP?1T(&C;CM89ICPG7,*1(^Q]8LF+6,@UYM&E)GQ=A>BX>=:+'N[RPV_+C]<X
M(S&,S_'5>#H=.*5X3B@92OI#RWJZYZ"8S\5R@]99:&-\?0'CN)FPN<3OJC]L
MJ_XWLU.<U%UM@J?U%NDC7F+[?41R.!O^+^:_DPSH+/^%Q%@!OQF]PT2G^VR(
MTR<3VO]&)[</>UK<F_(>/@V$=R):$@F@\$1K&Q@16C I$WJ7'5>\C2G6:D7'
M3<J#X,$]4=:M@^ZK%E;7\.0C#.F?G"%)\!V<X:T575L%UPO1UDJ.8%E62*>W
M$IIY17)&6R!*#3&[W1)ZW15\FP1NJN=["+OUO<!#"R'C\@RFTV$97B:ZW,#_
MF83_Y,VSEU<K?%-NUGBSLAP#O7+D<F5/1XW@BCPPHIR!FH:C=4;</8.W6M*W
M2^G=,>$>CF]]O?'0R@@W#D]&SRXF$QRES^\G0/Y6FJ]QE.??G2VM^'I9T8,J
MV1@FT=!9$\B@ E\,<R1IC5I(Q=OD'+19S[?+[AUQX!YJ]W.=LG31G$) M)*E
M*)%I3W_X'!U#--9GZ77Q?"^7_/U=6HOL0.>DF4!5F+8QD+V7(RN:"P[%16?:
MO'F=+JVW2&AZ7\V& :+DA79&EG, IDLT+#@;&4(I/%OCP;>Z7+V-H\<-X58>
M:O,TG2V$>5_>Q0^7685_36?C*>:__3B;7.#-7XY',_PT>W$V?^#??ISB2?VB
M-SY<OD9UVQJ/:LSPR:?A=) TV8O61*8R*J:SP)I$8A@:I:T,VGK3)O3[(*P>
MV?) AO #[-E W:N8L[78&R3P+&%Z/C]B.X$:+.4L]\J)>V'U:4JLRKQ^@ G;
MJV_<2O:[(T94( 69V]Z$P#0/D05 2X:W*=I8&XL67SLAODAM/P ^K"'RMAE^
MO\X-[X'G*@OA%1.0R!+44A$TYUF0&#588Y-HGMOWZZWD^UWZ%CVH:'7NW@;R
M;9#@N^+Z\ J<D5YF[CB+/(>:YT4V,F!D3OA W@'Y!;G5!?$#L(Z!"/W)O<$N
M\!9GM#[,+V R&HY.IE>H2LC%VT(6$8?(=&5IY$"V4<DQ)N,@EC8>T_UXCH$&
M/4BZ02KODY0NSB_.:@GHJI#'@JBT865!3I4NQ3'MB;)>RBJ%""Z!"5+=4WC5
MQP;1%>(QL*2-/E8FYO['3TNR(I_ZC_4+W]Y=G)_#Y/.XO!N>C.91W]&,5C*^
M&,WJG=OX;)CFUQF+C?#EJ(PGY_,@V?/Z6G2H.KU;#[?]0[<JD^MYS4O5<SXD
MD[.'X%+0P)7WLI"AR3UWA7NK!ML_?KN-X[?)F+SNV>??SNJ#1[F^"A^^C,IP
MR^LBB)<"=;U<M2QDGQG9SC[%P%.*;2K-'L>V[;:Y\@F_3[%<G+T:%ASD$+!X
MD5G@VM,+BL# (&?9)*>CA9QX&Y>J [C=;Y4]\V5YW^Q;(2T*[-(IYHMZY[42
M[&5,2NNH1'2:]O- <HATD@ /A?EHK4*GN5"-BE,[(MQ5I+<Q9YHHY%!BPBN7
M]/3S>_J(>4Q#Q!*M*H9ALC5E7B@6@I ,R5JQ 852,>YVA[H!M[?X<!-2=-VM
M-E1. \=P]>KI ZX,W2X0FT:3.X#<3VRY=P5W)="6VMD3D7S.R@F=F8PU,I8$
M)V<I"5;(B_)*H<R-3KR]$>B16/0A\&<=I33@S=.+X3RE\\K=#29;4;AB99Z(
M;C1G46-BG,"9&+0OJ4V:PI<X#LAPWE15X][DW,!(7J!Y>?YA,OXX-XFN(V7%
M^H!DN9-#K&NDU##0&EE1&$V2 8UP31EP%]/QLF%+^?>X']3 3[U,^7 QP\G?
M89+_A G2RM^-RZQ^>87..HW9!V R@&+:JL3BO!^=EYKV2:O!+U5]WXTH=7O4
M\2B]@6@;A*BO5[N 4P*FI&I2*#B"X\F-#[)6IX20"J<CD+<)1"\!.1X>]"'I
M!KT??KZ8D$0OYI3\>?BI?K78BW*"8 /Y7=G;VAV'V.@E64&2^U T")X:>:ZK
M,1T?'7J2?X]]&J:3V> MC$XN#>"4O<^>5I2DS4P7 [0E"<VB=:"T(ZO8=0JP
MTJ?>(@!]MZS\+QY[E(&)S07;XX9_#>**9%U@K!->Z*[G_M_HQT,'6ZA@68E;
MR*]'PVT9#B2/1>?Y#26=)BI;XB4)/]F2,0H0V71*4SX,-:YPX/O7XCIBZUE[
MOY*DSB_.KX!H$8-#KEE26=6CA!83/&=.*9\4CSF%3M=YG?3WQ:-W=[1N)?QQ
M'Y+KT:>> X%/MX"8'(7/)C(;L3#MO&)T7I-S;UTQ.L@297^OX!>/_@I5N+'D
M5KZ%.\VV>#F:D12&9!$\F4YQ-KV\]9^VR[18]< =9%ET6NM2AH6"[#.]EL$%
MI:WP %Q)0%%3_CVXV#'#8M6CMW1]JICPU? CYN4'O+J^^U3"Y<21-A/:0^JV
M8EB,TK.HM%:6C$ );2IFNZ#;VOE;^8Q;-_HR<!4@2<8E!W)#HF#!8F N!.E,
MT9&<E!U+8)\Y%KVSYHY'V+=2FJ99/"".2T])%JX@0F80R"C3A1OF=4C,690\
M85$JMZ%/=XR[2K5H3IU&:CF4=(L'%O7T\Z_P/^/)LUH1/_<*+!9;@!STP-$R
M;8-AX,@ZS%%Q:80&"VU2[=< N?\H1[\TZ;R1;:>N!O>@#T"] ?H:SA<1ORYP
MFR9EK EX/PD:S0C0G6B]:>\ 2!=Y (@B,A&$8!I2;=EK%4,N+3F_R6;;)H'C
M(,CV2#+'H7)M':4UX-CSX70V&<:+>;?*.EIL<;E0[YB<#XY)X6I)E":/O=#&
M3GY9EB6)$GV;"[Y5B [*DM]>E7=Z/_:@AQX-^>M;Z3.<87Z/Z70T/AN?U&J&
MT651S!V17%U*!2U12,D"(22\EAP/)-- ::>]M=P5E)U3 -9\^'%29">JZ#U7
MY&(Z&Y_7TJG1; )I5K&^Q<N6/-/3X8<%1E7 2R!02,(@;R;(VNW9,?)BN,J*
M.RT>C8RM\\!CID@#D3?()'D]K@5T'XC+3TXF^$5R4Q+>F3ID1X4B:H(#,&_(
MM_!6NV!E+D&W22]<C>DX^=*S+AJDG;R?0,9SF/RQP.-D5/4FCSE1>V3G4%B,
M0;$4C8R)[#2%;1(/EY$<-R.VDGNS)!,+%K'H.DRB9KHHCBQB=,PF28=9((9"
MIQEH7UN229/PR^:B;9AFT@7&L::9K*6"%0D*F\BO89I)@!QY=5-TJ%T5<@J,
MCA/)"@>14-BHN[6N. PU=DHSZ4.+ZXBM:9J)X$AGOY*,MGH"0DM@017),,?H
M/4ACH-/XKJ\IS60MX:],,UE'<DW33(3R7'/GF8J*#F[,GH40R!1 HXODNOC4
M8Z;08:29;*S"C25W&&DF_X3)A'[PN7EZR?*#=I!6\N#:EM))M'9&Q>BL$U(K
M4T*QWB8A $1(,NJ.Z23+C]RZ]C)?I-FK(<3AV;Q3S?QAM6OQJ^M;7:$$0@8R
MTF/*M&V@9J"D9(0]*Z\R8FHSY;<+NJTB05</6,CT<O;#@&@7I</ $OBZ38IY
ML]C"#!FL,15P0:G'*+OZX_=2!M"ODK\([6POPP8Y'@\L^=(Y\0JR 7(\K=:T
M);OBR$W)B=9,T(3,N30:'_48LAVVSFA#BB8JV'<6QY(Y;4'PF"QS6'N*$& 6
MR'YBKJB811! <CD>E[]?1=[OZ*\AT(:>81<81^OHKZ."58[^!O)KJ$[NM:F]
MNQFO8Q1TU.3NR(2TF664)4OZIN?RK_T[^CUH<1VQM:TGT>BC4XG\I'FL6-/I
M0X<.BR#1!"D5&1C'YNBO)?S5]21K2*ZIHP\\96%J)8LW9 ;ZH@B2S"Q%;JS)
M4BG7Z=;L:W+T-U;AQI([#$>_VV^]Q8\XNL!;<V:;!P:V!;:#0$*OLEL*/ CO
ML]404D*O0W20LK(<);E@46K$CH&';2%NG0L&)R<3/)FG#+PI5\^Y<57 T3L1
MZ%U37M34<TV[G23_4_M:<)YLH.VP54[8@\BV"E!<?=AO\'E>OHV3VM&0:V_=
MO$ZP-EU(NM"^GCF3+CJO,4:,XK$79]6'[SXXT:MBOPA,;"N[!F&)%8N]=*.4
M<W0P)P+#=6V?0\<W.55T "0K+69>4+8I-GD(U:["$4UHT+O8#RL,48 +RVL?
MAU13@752Y'>#IZ^,=#))3W;?\80A^E/BO2&(=839T&?M N-80Q!KJ6"%\[J)
M_%JVM)"F"(&9 :\9TD(G.F]282:(X))'3U[9UZ/&3B&(/K2XCMB:AB"22;X4
M'UA.M*5H3@>.+[ZP(BP9$F#1\$Z9?5]3"&(MX:\,0:PCN:8A")5$P1 "4^0R
M,TV_RJ"8S$I$#H3#E^/+-=A8A1M+[C!"$/<,0VD>77C@F3L(''1=\5),0')T
M3DG0WM$.[5S,/(,HGM.K"=Z+CC&!!Y[>?.I0';1\XQYD[SA8[>JI@\1X0=RW
M.3)NP!47B*Y>=GG+UW:>UD6Z@WE,JT90KQPZ78H2$AU)BS:&V@%'DF\5!1,!
M9>U!)6RW%.96PEMG,;N/8#3EZ@;CGYJJO\78P6Y+>O*1]I7J[-':WL$9OL-T
M,2'5UAE&=Y;$!28?3*DM:$G$:EX<H@PKNF8YJNS("-DGH]=9S'=&-U5_@\+E
M&T0$]M5X=%*#CR]',YS4BB887;Z/D.;5;]>@HY")^YR9Y;Y._S2!!3"6%0!G
M 4.)K3B["=QC9V5S%38H7WQ(+&\QU5*LN2GWY3GP,TGZR9MG+Z]>K#?EYM6Z
M7IB3(EL3+;.B#C>.]&IYM/16U5*\6+ATH4WU8[,E'3E_#X,*#8HO.TKQ,BR<
MBQ99ZT@P>;5LR'D-I4[$=+S84G0&UZ8+^#HH=W7%<HBG^OIJVO<5S'4AY(/#
MX#EM]?0J**:<K"WN:#'!<3H7(#L' $6F1A/Z'H*UKZN;=F18[B'7FU(:6(7W
MSP+N JII-ZY[8>VGYU:/ZKMG<$4_LM\9,9 +J8./=:(&L3^"93XX8+7!8K11
M9=1MF@#ND!"/],7:-1_6$7D+M['S:&\?HE2Z%O!BM<$ (_,E>2933>AR46AL
M,SCYJQNUOI9*-QZUOHX^5D;0>KHI^1F&DW_ V05A@^G%Y+)QRF5?!ACE117'
ML$YJF?\\P^SZGXQ'\+9:_)/AZ.0I3(?3S8>OMX"QU7U*<[DL7;&$Z'/M!>]X
MXAH\@BTA.>,XHM7H^* %H"V;.BX^_A+%DWM1O!E=/YE^X?5X-/D"R(W[$(0%
MD$4P(:.LT[21Q5B0>8X @9,=%]ITQ>EU&5MOZG,,UY">#Z?52ZDSD^)TW@IK
M()1R+GID/&C!M(V919$TB\4X9W(R5C3:S!^#MH=V0GMCX)W-OU>]]=W]\%<Z
MXS[_"I,_</9R1'@NYIO'/6@'2814P" C^ZCV2$)-[I3C3.IHN4P*T'4;>]CY
MD7N(K/6KJW%S0?<__7+R83PA0^7I>)3O12?0VL*#9 *,9EJD&K4#8,)I$#EJ
MPAPZT>#11QV5^OL5;(\A_SFZ]Y/YCOCYZ?#L[%YPP8#3P7"&CDX K;QA$.MD
MFNB2BY \7\X07J'UQYYT5$KO5:P]AL#GX.;K?@KI#\PWP?E[B0G5UHR<96%R
M;3K#6>"$E.Q2#D+ZD'GLI/NN3SPJ#C01<X\]""]!SHOP5VY-):)5JNA:>4@G
M4JJ+Y]$P;Y$,(E&'=73K7_OP<XY+[_V)]*ZVS5;:?C?^B/.LGI7H'+AL<VVJ
MG&J[#JGK&#FA6,Q@O3!@ '(GA3_ZJ*/2>;^"O:MVNYVI?S$:IN$'.%N)+M!&
M4Q,X60+AF:Y&)QU.B<E:XBE"T*FX;B;^8X\Z*K7W*]B[:G=;S]CX,HEOT3M[
M+I+[X%H.W$2C6/)UKJ\6@45?+,NA8)0N.R[;!!+6!'HL+-J%GN[2RF]+JUL1
ME8<DXGP,B,6S9((E?[:B3*$P'KD BX5VOC8I/]WP?<NQJ08:;#$BZ/[78GK=
M2.J^=T-&<J$S".9 *C*GB2%!$'J/EG9C$S&53C6M?>UA#Z+=/0=;:+[;;M:?
MVEI0K8=7\S+[I"1NZ: W+)<ZP3!S7C,X"RN1(U=.)X>-^-?7$G8V$/)@ML/]
M:/]0$M&N5__TYLW\^Q GA.ST\RO\B&>79;E6%2D]L PUK4K6*^J0(R,35H#/
M2*YKHP%LG?#M*S5M3]Q9Q>#^=-ARE[U]87T7[U7F11>P;<=,K@-W3T,F&^A]
M%;6:*6WO3(O>%BB*S)L2')MW1P^:CI*HK [TXA7O&R<:[(]ACTV6/#2"K:.K
MEL1Z.?IP039ME8!83!-"Y47MLV=5$F2" ">WW 4&8%P=+.5":5-"_ "H/7JY
M_:MS%7&VU$6#DM3[H,D%-%<'-JC,Z"V!VF*5,R\T9Z"<4$D[FZ!-H[D'0'UK
M--E$%SO:3=05-%202ZXE,UY4%YQG%J15+ 7!BTW6.-?8D;P+ZENCR2:Z:%"6
M>>L0OB6&GR?XKXL:89F?P%%(52(:)I2M3#:*@2N2<8,",%B=8YM*M0[@OOMF
M?6JO)<'N [AXMSI W+D[M@1R[TY8/PKN8"#WH9T=^5W+4.G$+8@.6+">3+-(
M.VH0M%-[%%&GI+6T;>J2]D:@[C[6WOBSCE)VY:]?[\N+UHS%>B\<5IN^3HN/
M=!['.@#-!">E-"!4I[E]_;CI2^@.PS3:2JU=_/)M=+*7PJ5[3OSQZ,O2E]]'
MXSC%R<=ZTL^-O]I\?)3H7\&6[>4;(^J_G*F1M)8JFXIP/'*P$+6ON5 ^:]0.
M,TAC11+Z?NKUAZVGO>IA8[(+H)OK*T!CI+*>MIZHZ45UDH&HW2Y]$LE;KM$V
M2KUIL)K>3H/M,3V#LW1QV;CL[?CL[.?QY$^8Y($JS@E3:%^4GK8MFSB+8.N(
M.6L%^8[&QS:MTILO;8_GT+[>AY4'UT'0IV5T\=;V^,_A[/3.8J9?KF;Z=NGR
M_"HA8_Y9@^1Y%IP7%A.4FJQ(1SGHR)PV2D!&Q-!I6E(OYM76R_FJWX,^:-?!
MFMLM9QJX#?=E,]TTHQI(DP/Z7)@(HM3H+AF^R266G;>A1.,SM+G7>QC7=VHV
MTV*#V-C5^!=:Z/7<RAE]-1W2QU\=6HN\MN$(2%"CDR=I-OPX7\_ 9N]#D, P
M8JYR*02>"".,+PK)=[*EC5VW%>SO#-T7!QHTO&NS\Q>0(F.,3"E<S)'G)C G
MM3>QD%=G&]]BMK,6]NJQ7%XX6!%RT"HR\H<-TXJ(ZE7(3.9D(QG'L:C&*2D]
MK63GV:1'Z(6L3XE#R2U]>C$E84ZG3]*_+H;32\77<#8HXY*M$4.3)=.<1P;:
M.&;!.FN-T2ZWN0-8 6CO-Y1[(<FX?V4U,/+O@U6_G"!>1;F[ &QZ-?DHQ/U<
M3/:BT XDV5X;>Z%-)M]5RJ"9E%!;NY%Q%B.9A=XJ$%BGF]@V&>U[HLLCUY#[
M8<LZ2NB[Z\TO_QC^@PXYVFRG+T?I+XLA].BR ;)L;92UB:P2S =%^RA*56N?
M0O'=.MW<^_&[=ZUZUL&X5P'VW=?JV>D0)N/WF$Y'X[/Q"1VGKUX]6PPU+RHG
M389<*O5LM((3D>O;J:4((9:4L&,+H]4/.2KU]B7,UK.][KTN?)+S_"/A[.6H
MC"?G3>YR'WQ(@VZ3G=>T=.,:C7<F>!ZSSEH(#. TJ3YKG4T$JU;TDGSH<?LO
MN+SQTP(J9X0B[\QKQ[2$R"*2LU:R12(I_2=WFI*YEZ++_J]-^PWQNQ!\*I[Y
M[.=MZ3BCS2,S,$IXF:."+-K*]DBNA7;.]!U= :W!CP9WH8OC[]GX/ Y'EP'@
M^V.T3R:3.N'R,HVI?O6FO+F8U2;,TTL7?/SGP',TW I5T\8]&;PFL<!%8=PJ
M6ITK$&2;I/M>E_$MDWQ_?&CHPVZ_F+\/3TX'W@GOR0!@21;RY% D%@M'YD%)
M-(I'CFW&-/:[CN_TW@LC6LP;^S '.SIY13+$E^<?2,X5<!WF,HC2*#I<)',F
MU8X.+C/R(DT=,IG A%+(WVC"UH=0?<O<ZTU;#2XY;]"\*2]',^+[D*R92Y&]
M^)3.+C+A_F4\SG\.S\X&7#I(63@6C<-:KDR,-T6S.LU!!Z6R26TVPK5@?LM<
M:Z?/'GNH7K\8=;C'^U,8O<?SVNUY\OG+E^,YQMFM<:-+@TBKL7TR&OXOYI>C
M%S 9T<+JS6."5*1FQ>B:6*4B\RH",]EX3I:U2+;-+,_^U_(MTWC/S.B[@^QC
MRZEAX(]XF;<U_6T\F>?@W+.(US@;D8,Y[Q V&\@BA+=.,QD+K<B9PD!+SIQ7
M!A0:$]-2*LF*N&P3>-\B?0]$V3UVPNV_)#A'DR57=.9$5>,>"1G(DN@KK7S6
MTF?7N&+C&VWTUD<$;*?:/_1D'..$ML("\QH#(X.)G$"N+3-11*EH,3&U2?P_
MU&2<W;*C8Q;..EK:2SI%%X#?LW V5.C:>16;:&,OM$FNFJVFWDX+(*#DMD5"
MRJ*V!0,OD'B;^Z6O*PNG+5O64<)NLG# D1\#R=1X$JTW&SKPI5.L%!)" ?+K
M2S>GX*O)PEE+!X]GX:PCP![OY::3V6 >;IZS5@"J4AS6B0?(=!US!;4ADRTY
MY,B]$]VZ(=.GWGJQZ;OEE_J+QWZ;!L3FDN\QLG\-XHJ%76"L8Q1T)T+_+_KC
M1_X6*EA6XA;RZW&#7H;#P2<-6C$O(FTJ!30#+B7326=E0@#>K4W!8:AQQ5'<
MOQ;7$5O/VON5)'5^<;YHU\)=C%DF9C5@+0\0#$ X!DIIXUWF//6W'W_QZ-V=
MN%L)?]R'Y'H^3G^%3[> I%*\R#PRSST="%QIYFTF(*:8[%(R5G:J#.NFPMN/
M_@I5N+'D6O:X>J#-5S(EV2(MXUJI>HL:64@ELARDUI)'8U7C%L+'W,5QF[!,
MW]K;4:'O<D.P+A"_=W'L1<$;=.';1#M[ZN+HL[$N.\V,SZ&6QFH6:@]EPTL&
M%(C@=M<MYFOIXMB:/^LH95]='&41.D'23#F"I]&0#(3P+-/W4H$T7+1)Z_IZ
MNSBNI=9-NCBNHY/671R?P?2T_O_%ORZ&'^&LPH51OG75_&Q\_F$\JE^-RZ._
M?%FMLDF]3Q,<6Y4$M9?,4M40% A*(FI$2]N3CD(99U X'HPGHWO0!-%V>]"[
M=(KYX@S?E.5LFIL\FU?7E\DNJ6Q-G;^<0R3BZSHPS" 3(<;BO*U3F9ML1FO!
MW'9?KE(?E&!]\9S<G<(+T[IV@=4\,YZSXS%:B*)-PY;Z]-WOJ^UXL+S#KBW=
M!E4PO])+]OE7F/R!LY\O1GGZ9/8,)I//M,-?%NED,-+E$IC-R3/M-&WP: T+
M*@N/A:-5;0KD'@%VS+SH4R<-C+5*6W*5EW;D99 .":.)FEE7@ 00[&7T$T10
M20,O(;;)E.X$[YCIT[]^&A1PK!;"EYFMSZZR_[PMP6B)S/)<>_F%PGSTG)6<
M--;<5<_;3"E9$^@Q$ZNESAI$M;K"?7V38VK %NXM9];*3-*QB@'*Q(05X+D%
MLE_;=)=:'^MWHFVLN0:%'*_&HY/W.#F_Y90,DM<^U&2,$GW--[4D 4FN,J V
M(A0?#;;I$G0/F&-FR[:R[[O6X1YW]=WI>#*K&.L=Q#UPM1?H14G,)R_)HJLS
MJ+63S%B=7<E>2M<M9VG]9Q\C,W:AA@8E!ET$<WD?Y:S (#0PA9G7:TW%0M":
M.5-BX=99:=H4>76&N*L2@=UM,VVT<R@I_E?MAVO#GBD]KW[D90^WVA922L4*
M<EJ+1TXO1W3,*Y 1P<32:M[%_8#V=9?<2/O+,?<>M-# XW\_@=&TX*1>H;_#
MR<=A[5/]IMR#=OJ>/G)Z_X\671X[K*7I17*?J]G3C7,?-!D?F(X/G;<RJ9@]
M9 :2_ IMDB"3LB K9!P$Y24/MDV'G\/GZV,7W(=.UW54VX"FO[][/YG?L7Y^
M.CP[NSE/%C.$(QTDT2CF7)C?$#@&*=? '1B.'HT7;?S(AW'MWG'8G\['S136
MX$IGGNWV%-(?F.] 4UF!LJ4PYVM;*HN6U;>,83 &H@]>QC8Y% ^ ^H:)U)>J
M6MSRC">U=G^&3\>CN^!2!%UH@V;<\UI4!H5!D<@T<(XIQ2A=&[?@05C?,)/Z
M4U>#RYYWXX\XP>')Z,OP[16XP)W56M<Q,,K67N&I5N@'EATMW*G"DVV42O$0
MK&^82_VIJ\&MSJ\7(Q+,!SBK1%]@ HPJY)Q9$%PS0D&69$S(G"C.%2-(?8VR
M%.Y!\PTS9VOE]'@U,P\"/SFIV9"WT20?0.IZK"8KF):R,(_>U\)H6WP.X' I
M=+HBU'[GH[]!O?<@XY6W+[O*"GUR7CL0_2_F9^/I;#:^3GMMF #ZR"/;YGJN
ML][EM$ZR/%TI D0.6B-"R&B=]L%&+E#!XVF=CSQ\EQF<,LID702FBB&;2 C!
M0G*6"05.@M/:Z#:#TG::P;G\B*6^<;?5,:]W&A15]P%C6'1D+VJ/M V@\HSS
M$J41$#7 3E(@'D-ZZ!>7Z_#KL02(7K76(N3P,-Z4+L[K8$W,OTS&T^GOHPG"
M65W +R3VIUC&$WP/GP8A8'3%6P8\9CJ!"'] 3L<&EXY#<4";S3ZHUPW^-\S'
M!OIM$-'8=!&U9>'-(DQ(-FJMZ$W30(N(@8$JD5G#%=ID(7:KHMX92;^ _YVD
M?>IWCWFQ X]2<D,T"3;70(X1]%H%QT3DL@BEM-3[38C]EJC6BY8:!$NZ9RT4
M2=YX29)Y'\EE4U*RR*L!$:5&3O^/V";S]2O/*-J&16VT<^@915'8VM2_,&.P
M#IK5O$J,%E2"2Z((H64;IGVU&45K:;]C1M$Z6CCTS(PN:_F>4;111M%:-&F9
MHK&)C@^=MT9I@YYK5K#0>^UB8E[0FIQS1FCPP$6;!J:'S]<-,XH.AJ[KJ+9I
M1M'=M *KLLA 9@K4*1"H,P.P@9'@N++>:M-H/LAJ3%_YQ<E:NEZ92;25HG:<
M1622CU K1C,J@F:T(8,D.::M!9&\Y*[1QG6\643;D*@O5>T\BTAF+P"E8F@5
M+5H+RT*I?8QY4E4$$:!-+.V8LXBV85)_ZMIY%I'B1<>H ^.IMMDLJ%G(I'R1
M<TDQ6U]RFXRT8\XBVH9+_:EK5UE$(2L/T2=6H"8K6)58,!#H[)7U;[3%W*;1
MS1%F$6W#G*V5TSZ+B-BK(43-$K&6MD+2:?2@F=4^"E6$=''IY/I&LH@VT7L/
M,NZQAGLAEINLE;KJN7L9I+-&.,N,X*X>@$ 'H$)FC?<N29U]:7/&W,5RW%'+
M+67?P/CX$M$S,I%.QI/A_\X')B]VJ X(FX8A'\>XG^#BMMI\D!R]J:*!]],!
M*0JA,LC,+*_'&I"73V=9)A/;N>0!E>=MBKOV199'(GN[Y\HZ&FC D>N>%+>R
M)*^0>:Q-,[ED*@ MW//,0G2*Z8A*%)W(5&[30FTUIMU;)WUK<-E+Z4?\/0;@
MYM;0/=U)KE!EC<7J4&J?W1H6)(O8H]-,5>,J&6%=Q_%6*Q]Q-#KN49(K7_Q=
M9:G?D[.$]5>N,ZC+>')MD95+BVPWW8S[0=8VY[V!])92XQ7$S),SQ6FAT9+?
MHK('XS!($17OD!K?#\9=9M K[YP59->76BPRS^?T-AER^*P+Q=,.Z=IT1-AI
M!OW#D]:?C4>SX>AB?+&DNM_&EZ/Z7N%T6D=A"_DK_>;I=. "EU:36X3!FEH<
MKEA,2C$GN>9&^(BVC0_9[SH./;MO'6XNVP1[U'B#B[Q^5W,KC;;^VB#X (C*
M,<%+#<9EDG,(AKF8=8[&%UKT5T#GI65]9_<N^-# F]IN<8M%O9E4J[&:B,KR
M$$FP7-5I3RIR<@&T9:ATMJD405(_0'8OK^,[G9MHO$&8L=_5++^<64:?4%JF
M<VU-%[)FX%1@G@<;M=?U6/H*Z/Q]L]X#'QI<PCZ\N/N7-/ J8*P-3*26I9:.
M219J!_L@2W)!D=MEV@1,-T'[[5*S!^TU:-.]">;EER8Z[U("RQ1@KC><@D&A
M8R(G2*IPA\#;>+T]@/_.Q_YTV^#*N?OE*E@;LB!XW)5(0+EC7M*W1IN2-'?2
MX_Z:%QQPN=8V!&NCG8,OU[(@3"R&16MI+;$@"QXD QN,5UX[U>B\_6K+M=;2
M?M=RK36T<.AE+UW6\KU<:[-RK75HTK1<:P,='SIOD\J0HQ LRD#&@0<Z.Z!8
M%CCG"63AAK?IC'/X?-VT7.M0Z+J.:G=;KL53B2Z[6&\+\F7SO,!C8NBT(>\)
MDC!MKHN.MEQK+5UW+]=:1U$[+M<"%P+P[!F743*-+K&H5&; E=7*8'#8QF,]
MWG*M;4C4EZI:)*,]6+/!BY"H(M39M+7)&.'R]:L((NLDDQ:-9L$><XG--DSJ
M3UT-KC(>KB7SN1:QZL*"+?/!\9R674?()UJ\$(C&8!,N'7/IWS9<ZD]=/=X4
MK*@,*2FCC-PPS;-B.I3$0H3(.*U1&"^4@J68Q#=2?;,) 7J0<8-(_?TU8#IX
M$U-D<9Z1Z[QFH.F(M :33R8)S&UZ%QQA@=XV>\76RME[T^<7I6":#3_BKS"K
M.]WGY[3S3<?E\03+%BFTFZ-IFS;;DY264F6+#!J4K&6;1AN; (EO9.K2M\I9
M5QY/E=T<UR[38X-!+'4&<:S=[C7WR$ J8((GJ7+F8-T1-IC^LA7BE8+HNW\.
M9Z?#T9L1_C?"Y#JG>2"\(";HQ+(.M&M@<@P,#\R+H$EX])/2Q@[<#O>A7Z2N
MP[WUFEOVJM&^RV:Z0G]29CBY0G[5^O7/<?UF>K,.JY*+*F568C1US@F2 20C
M,TJ&PETQF3^Z\_<-ZAAIMU?%]1A#67\="^A7"R$2X=)23.0A*C3,DW'%M,R&
M 1<DWDRF6DX:; K]<_!17-]IV+_Z>HS ;+"4:_"7B_EY?#%96HMV(MBL!*O_
MK0U;.*OM;9GG#J))L635<6Y.O\"^<[&! GL/X:RSEFOL5TLA.W]I*0)4=EX@
M*\DKDBE7+*J8&90,#HR5>7ET2Q]<?!37=RKVK[X&H:7.S=MY0A)*(N\!TKSQ
M@&2@4F$2,1HI(^?B>XO]_7@A&VIIKSF;&6("I0PS8(CVA1L6A.%,Y 3:&!1Y
MN7+_>\[FMBQJHYU#S]DTL?AL+)#=Z3+3D63G/?W!C1  /"K=J*G,5YNSN9;V
M.^9LKJ.%0\]]Z[*6[SF;&^5LKD63ICW+-]#QH?-62A!)!\70SWN\&,T@F<+H
M0 '(F#.&-B;<X?-UPYS-@Z'K.JK=;<ZF% 1):,%$+*7>A#H6T3J6$ %E#ER'
M-NW1CS9G<RU==\_97$=1#7(V'^FVC3I(F^N:BV7:<C* #7)FO!+>0^)@9!,6
M'7.&U#9$ZD]=#;:C!Y-*LT]!.*Q5;H*@B<ABB8X57H=ZQQQMH[[6QYO_NPV/
M^E+5SEOL1XA*.E>'&=)2=8R<*.XC:=])K;GT3K1)OSKF_-]MF-2?NG;58A],
M5!#!U*8JP+3TLK9Q!,9UXG4$L(NN30>2(\S@VX8Y6RNG?8O]B%I80,^"KI-K
M)'D;(+1AI81"O/;9+0_T^$:2?#?1>P\R;IVS^=MD_ $GL\^_G<%H!J-<L_\^
MU'6O_,'F&9D;/VNK?,M^5KB43>G!)Q&,@)RSACKJ*0H93#8A.W0\#39^ZG;;
M_Q>?_N36I]\$]J-&L (54^1Z,6WHJSK8@<BH1919EM*HH/9Q;-L>?BN?,._R
M.O#*!F,4;:T!R5D@1X'VW*B9#4$5PZ/1C2RIAW'M?F/LF27+QUR/:FA1LWG3
M?>8Y?I@@;?=5VO3U&<[%/LI/SL>3V54G[)6+&7AO$Z@@F$0IR6N()!TZS)DH
M%C1(+6E+:./@];2"HR/>7E3;(*RP$MAKG W(7$0!/+!DH!:K9F ^AE1G50;!
M4R+L.][%"-714:DW%;2(%UQ?L*Y$>76_JD/A\V5#O<-79*X&*0++D;Q0R[7,
MNDV:?U>$NTI]:$R6)@HYE'2'E4MZ^OEZ6(RB33$$)QD'U'2DTUL1I4 F;+88
M$:..;6K4.X#;?QI$GZ3HNDUMJ)Q='F85X)5SW05BTT2'#B#WD[_0NX*[$FA+
M[>R)2*4DGSED%I*/M(NG2.^2C82W6 (H9%K.E__:"?1(0L$A\&<=I33@S2L8
MY<5UH0*$9"U+6G"F9?$,-.V\/B!9=,9RQ#9W<C<8#LA2WE1%XU[DV\"U?WHQ
M/,O#T<D5&I%=2$D;)FW6=01(9AYM8([06(B)V^6"A9ZT_26.X]/X%G)N\'XO
MT+P\_S 9?YP;OXM(NQ-9>6,"\PK(/4NVWJV8Q)P3 6GQB3=*_EZ-Z7C9L*7\
M&SC*KQ"F>#H^R_= LQI$DCZ0EU=,O:?5+" ) )+2P>O,5:,^ 0^ .CYN]*6!
MODOC_@Z3_"=,L-X,CLNL?KFXC@41#+?S 3J":9\=H=+ $CCD5B30>BF-<,4%
MZ,I''(^6>Q1E@XJSZU5>P4GH)?W?,,M3K5 G,P60Z!>2@^*# !O;Q.N7@!R/
M_ON0=(/BL)\O)B31BSDE?QY^JE]=MTOREI-5JLA*D;6CFC(,"L],.JNX4!&=
M:W/YN1K3\=&A)_G?98;M-?5A?C9=M2B:;I+/\.4';)6D\ "6I<P#$7/-/"#/
M'*T6T0:54G3*6H%<!A2#+S]J6P-J.D6<?^)SG*;)\,/5HJZ"YDDDSYWSS(&I
MW<<*'>9@!9-@!)WJ!1)ODW/_"+#M#<?Z\6_H+8$96;;SY[P:0AR>#6>??Q_E
MX32-+T8SS"\^)?K5)^?UNX' &- HRQPI@ZS=ZOB*J!@O0>7B#4AH,Y5Q([B[
MWW?Z9--=0[.UQAK$*[Z$^^+3!QQ-<8#6@0LYLB)YG9926Y=8F5E,(M(>:2)O
M-*OV7CC'19/M)=X@@/$EJ-_@\]Q+&G"EA$-#IV^6OM;)" 91"^:4\AFT,RC;
M-!"_'\\Q$V$CF??=.^A>;KX>7^]B;R;S&H:W6(V'.E-KH"P4)P3YS;G:V1D$
MF6N&Y!%USFB\XKYT\E77?O1QD&$'8F^0XK_BD*/#3%ATN3 N$V>:&\MBY)Q%
MA%Q3BDMNU#AE!:#CX$B?4F\0Y'C0[EEL:\\O<, +U]($\N!BJ-$VVMY"@,0R
MMSDJS'6 QNZ-TUL(CXLN3?32(%;2%>=K<D/?_XEG'_%RN.V )Y4%R%+3=H$\
M>1M9B+40,X8@8M)&QI:NW_J(OTU^;:6WE1&8O@ZO?^+PY)2<LB<?Z6]/\/F5
ME_869O@;3E)-Q95&)1XP,N\4U I?8-$XS0HA!0/*J=BFJ\ZZ2(^+7TWU=)=7
MKBFOWF*5Y^*'[W%R+@9&6P5&%T9B(+PFUE[)13,KN8O&@E/(=\^K>Y!^0[S:
M5D]W>>5[],C>5JQORN]3G#L$SV R^4P_FW=7?%->GG^ X8264G\VB-SY(D S
M, J9)G>+10&*#GDCLTP05<<VUAM#. [:[% -=\D3^MV4+J'-L\YK&92.GG.K
M(\L(9/B%4!A82=Y#BG5:+1W2C>HX'D)U'*SI7?[W!/UZ#OY>(ARE\3D.A([
M<W"D.'(D:?\C_E83+15I@\B%.]LF:VDEI&.FQ::2OX<3VZ>JWKOJRS*!H&L?
M:2T8)D<K!J&85Q&9CZ8V450FRS8&RP.@=E6_T]Z3VE[FAU:O\^XB_@^FV?OQ
MF\GM/IQ?DG^>_UU,K",N+5/1A9K_'1F(E)DQOGBNE5"Y#;/6AKJO6I[>.+(B
M>[Z-KAK68'0"O$@EZ0!Y)\4]:X#>;[%/(SIL0[XM='D@-,1@<O*&[#V0BFDD
MZ-%K.BA,1I6*R(&W:8)T,/3K6"ITN.Q;1X5]SQAZ-[Z8G<;Q9'QQ<OHK3*>0
M3B_(Q;S.9O8$#HIT+.LDF"[!L% '24O00,Y$$!"ZW<4^\J#]I0LVT]2XD9@;
M9.R\Q=H7*M71&Z.39^-I39^DO\/)Q\LWPF*V4FG/="Y(\!P9 [6%A+/9\! Q
M9VBSR3P"[-@,IS[UT*#PI";2OBE?@+QZ,;H :]O2?16T_9@\O2IRN?%UKUIH
MT71])4 !#H/7BD&=K**1OHJZJ-J7PM88N."\' ,]'C%)]L..=83?@!7/QJ/9
M!.B@Q<GY<#3O5+2HJ["T)V:AF?6>=LQ:<ND+'8-1>Q>1!]2B3<W:2DA[:.K8
MC]KN=)GN0^8K#8Z>*A9^&8_SG\.SLV>G,#K!*4GP%+^X_QB7Q:]LWJ5Q_8=L
M5?FPY9J6JB.T"JXF:7( T F=%TY@ +(S%' K^&#]QVWW,B\^["96:6/DM$?5
M$6R.+%@I.1$*.1,A(%J#M)VU:<IT!\JV&]7B ]^.S\[($?@3)GE@/7CM?*+-
MV,_G'3H&60 +2@M3> ;+V]1 W -F]YO3=MI>WI2VE6\#_V<!:<!+K3LRB2E7
M*R=*D"PF0\Y8=B"ULN3YMTDG7"#8GW(W5L<*]:XERP;VQ@+'&]H*)R]':7+I
MK5W^=^"4TT*$PH*0M$(C(PN@#$N!:S3D<JO<I@KA05C'H_WMI=[ ?UV HX76
M1O?/+B:3VL1ZWE#[;&X=_4(RFU^C%^^(OCJP)%(@^\@4YD.LNYP'ZQ*MH[2I
MJNZ.\7C(TK,^&A0G7&]J166E2DR,<U^+)'AD,1?+>*&MSI08:6/;X0&Q_DIN
M^O<M/O$R;,6%\%K47@:J3CY%1P+.*M&)+DO6/#LGV[CF*P#MZ@Z^7]NF#^D>
MRHW[TPOR(VI1:?K7Q7!Z*?P:G7#*&\GGM2 Z,ZU+8A%,C5ISI)<#M%5M"CE7
M -I_)\PM='VGZ=#V,F_2B^HNK/KE!!<W(UT -@T /PIQ/X'@7A3:@23;:V,O
MM,DY%^U$82*97"]++/.I3CNCTS0KC++H-L5]>Z++(X'A_;!E'27T?O]\ ?17
MS\9_>37+?[F*31:T67DH+*7:8"F(P*).EMFH!62;M!?=>E7=\^&[-YI[EO^X
M1^&U#NR^K*-@3H9T*,[SUJ=74PHP+_]@\[#NNH_8*JB[U7J60[K.!P7D)%D=
MJR,<+?VA%.W)Y,MX$P;K/FSKZ>_#&;X:?KS[^3>6L<J0@I:9>26(6QD% W3(
MG"TZD)\7>6KC%'=!MW5[K=7/N!KPDF3*8( 9G2+9=8DSB":PS$,.'D ET:9D
M[S%DN]_3>F?+G5Y;?2JC0<#X 7RWIK7<GLHR",4%84-FTMI0N[% '8\FF799
M63K7D[-M(@?K8_VV"-6'PAH8S\LP7^/LY2B=7=2>M-?A*!$U1Y<],\C)=%!*
ML^BX8=X*75PA:U&TB=IT07>$-.I=*0VBW \(H4[Y(4Y["XHS8\ QS<F7"-%*
MIJR341<#T*C@YF%<1TB6'A71(*1]$[YZ .=E1*N@$AR<9"#KD-#L)3FB'EDQ
M/%OG3>*J]<"EQS#N*ES<G#2-U'(H0>4'%O7T\Z_P/^/)LS,@9[E&/=!:+E7P
M3(AZUX*%!)J"8ZA"B 6=RJ;-9?P:(/<??.Z7)MVWL*W4U<!>>@#J#=#7<'Z=
MR]\!;M.(]9J ]Q._;D: [D3K37L'0#H1DC40$U-J[E/4TB*G'5,8$:2.28F=
M.X&[(]LCT>]#Y=HZ2FO L>?#Z6PRC!=5_O,N(8NB(7)#R94@=><0.--"EMH0
M1).9 28X(83F;?*F5R$Z*!M^>U6.&^BA02SJ.7[$L_$'S.\QG8[&9^.3SU_
M0TEN9]:9Q5!39[@'YKVIW1^$,R(EZV*;XJU'@!TY6WK42M^7;L\NIK/Q.4X6
MY0'3>?W)9<;5]'3X88%1%,E+37:BI4JFM4(B-B=?-=(/ZN6%,4O,67$1U_&!
MQ\F(9B)O$#MZ6:>'UT[RM1R)/OF48%XQ^=8@%*UJ8V!G6%1(AZ_-EGE$RPIX
M79)VR>E64<<.\(Z31>TTU""V]'I<&P]]P!D^.9G@%^.QN"I"%0*5@R5DB=?B
M^FR8C]5-%=8;WJ8+U&I,QTV8GG31H,GS^PED/(?)'PL\LH#-/I,A);2N%0-T
M)EKEF-4EAA*R]*Y-G'$9R7$S8BNY-VC6?%4KL+3J*XI&'0@;9Y"0U@G9,0"P
M+"G,6N:2)+:) 3X ZKC9T9<V&G19?CFZ$G;'( &I-AHK%<N65QL[.!:XJ8E5
MN6BA<BRFS7ZR)M C#R*W5%L3&_A!N/>^<%T@-PTF;P!Z/P'EIF18CWB]:;))
M]L?ZT,%&H269<R74W&"(A@5A(T,99;;(@9<V@9Z#(=\C >9#Y]XZ"FS"N2ZN
M98D28RJ9C E5G8;D6<A*$2U\M(0Y1F@S(>- G?_FBMXH +".EG:=!OX:)K6U
MVD?<8DCIHY_9:Z+WPXB7,KN5*Y:L) @<E"[)A&0L)%,'PDKNC+F;1+;\Z3M(
MY3;6!56\8S%JLN=4'6<-29#+)PR7(+S -D5\NTCEOFF)_J8L/^3%I^5T/2S<
M!JX*;>NUK8[@E@5/?G 4J *MPL7E<I.^-K1U8!Z4T[D9C^[L9,W4U."6[2&P
M-T? 69767>Q21:Y3%"RZN91J>T<=-2-7&G,Q@6O>IG1@&]3?&.-Z56+#8LIG
MX_-XU<OK9GCCRTQK&I8AW,IJG]>89;(.%@.TACBEGUV<WY7N/.;S_A1&-SG,
M(7O%=6:&@V<Z:,/ ",V*LY$,"$-_W693W.DRCY#BATN3W::ZKZSJ4"%*J9&%
M^06K)=/;&P_,VB@]&6D*S,X-GZ^K#&<;=C96V'[3Y+GG!E4N#'6.3$N;&"0=
MF<F61U<X9&A3'OF5ILEO0Z1&:CF4-/E5C0!T-B: +\Q$26Z](6D%YPI3'H0P
M(C@R0YH>RP?7>Z5?]7=LQ[*.&O;25Z,+P._M6#94Z-H--C;1QEYH$Z1,9,-9
M)C.7M<M:9%"<8Q!DD5X$CWEWK9T.MQU+6[:LHX1=M&.)/$'B/C$TP1(>!/)[
MA2(;GW/OG>%IN7#]ZV['LI;\'VO'LH[P>HQ:S?&\&+T[A0_XRWG\^Y,XG:>=
M#HS+43G%6>"@Z30,DD'M%J.Y!9=M<,6E3LJ\Y\./2IG;"F^WQ49WKBZ#D18Y
MU\PJ28XYTI8;,]E602GDSH"RV"9%][AJ)[<Q'ENI:[=QE'OO+[O _5X[V8P
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
M,Q&WKC%\=PH3/!V?T4=/7_SK8CC[_"3G^>?!V<M1&4_.+^_@YW>BF]PVK_>
MK6Z8MUC+TJVR34AOJ)7<&M3&R.!XLB';DK21X.)@O4=M=]OU[ RFTS?EW6R<
M_KBYR!$QAR1M9-Y:K"Y"8)&L3V:U=2[2;I/$0W.A-K_FNA=.#T7P!2<3S/./
MG4MW^N1B=CJ>U&K*@8_D\Z@2F1$9JZ5=R+&J425E8O"21%':9.D^C&OW-\';
M<^&>.O>^)-_@IO=+=+_!A.RQ&IS.\ZXTO]$>6P$/HBNB[I[,%*0=-3I= X[
M0 JK"[AB?9L<_V[XCH\GO6BB03[=L_'Y^7AT/Y6E$:8 41ET+#7A2Q&+%5GP
M 2SR( K/#PWMVF+'7 WJ&)C1E\P;Y&#?@K:2L:B+3\8(YG5PM6+4D_571WMX
M&P"$ ]6H/KX#N".C1R\ZZ',L537=_S&>X8O1;#@[P_SS>/("TND5Y KMS<5L
M6MVYX>ADD!0$6["PI'(=80!U;A:!CD;+$$SD0D GUZCS([]F_3<4;H^CK1;K
MGB_X+7ZXF*13F"*YB"<3.+_9R9Z<CR]&,S$@FM8>,(:5:'4=*DR^8LGT>GM7
MI% >E&Y3T=\1X-?,F):ZZ'&<U@J8^?G%A(A,>]IPG"\/P@%F*8S*-8! ?-9>
MD.%,CB2SWI 5K7,L[J%A6[VQY1YL1TB4;370Y\RNRZ#@8_!>CV?_C;-W.*O[
MXT $[C.7BF5;C25>1Z-BK*VLC"AD/$>O1*?S9<T'?\U4:"[H'B>!=:'MW"ZB
MG2T5Z2"P7 SM;"78>J4,3.D8T"00L=N=2Z_[QAS:U\R5-O+O<=;8/2;S\^''
M8<91GBYLY>>8SN@_>8"0@U$^,@-%U:Z#BGE(P")FH;)#'W*C & '=,= D]ZU
ML'*LV1;Q,?@\+\I^4ZXA#M#2 2<(DHB:R,L]F45D6C-M)==2<8FN32W-/6".
M@0?;ROB>,-?6<='[3>2W6$54:W6N;>6;WUE8S3KKB+79 B&M#3,+LBAC9 E2
MSB%P#- FWK$YYF-@T8XT=@_9^@RJWMD(G\'T]#<8YH&."H1-AF&NC3R2U,PG
M*<G$ G+1"HB4VNPZ7= = X%ZU\(]5-DZX#I'\[0:5;7U*8ZFE^7[DPF,3N85
M!4\_W_S*U<;ZY$^8Y,M+U%MM1N8ID>]/8?3FP_SN_!?ZB-GTY>C23/LG#D].
M9YB??,0)G.#\A\]AAM<#"P9*U)%<I3"9Z[A8U,""R\!$]B"$ %-DFS+ @Q'!
M,9#^8(2Y%I_N>;,VCE&WE\0_<$HK7TABD+SF1JE(>T:H2<Q6,B]#8H8GDUQQ
M'E2;N]1=K?#[>]&(#??0?ONX_+T+'02,Z&L;&%2J6MU1L1!M9LF0]'+P/L5&
M@=5[\1POI=:2]#T$V#K*_J(43+/K]NGOX=-;VI=K.X]1&IX-+WD_^QGI<7!6
M[Q8OZ/,^?_'+ Z53<B0-%EVM1Q.!_'.?:AHFBI)]P1#;I _U /X8J+5K'=[#
MPXTC^3WX;UR)D.NM)KTMM1S2U=YVW#*?BRHZ"U+J+N\,___VOFRYC239\GW^
MQ?O&OKR,F9:J,LW4HI%4]]H\P6+QD-!-$74!4%V:KQ\/+"1%@F0"F9$ (56W
M4:06Y GWDQ'N'K[L[W$?(*WT"?/5!6YH]/+KBE3KLAE+YT8F)P5"KDFVH@0(
M*7DHC$<F(M.I4;+6(Z#&ZL_18-L>2-+'[LEQP]E-[?EM4:V*+V(B\6BK()=(
MKY$C4?F #HKPQ;ML13%M\K<>A'2LJK3!='XO1C6$[%ND]=W"LTG5[X*H:1?-
M^YB.TS]S(*7=C38-(_%QN*"MU5;P A@8(9,YT4[*%7!CA>&2<R,[M>DX60X\
MT3!S- KL(^BVV;W7A=(\%A22=&/+^N0,O""A<A*E5U*9-G[@/2C'M=,/T<_#
M\>4#A-L@]W_ED-Y/ UO586;.N>,<M(T6E+(2HE$2K&*A\(CTM6&,:B>FL[,%
MAI%^@Z3NW<BVI=0=L#4U"QY#=R0#82!-=B)(#S4T.# >QRB595%+T(8[4"G1
M9IF9@F@=9JY+DJ[A#=&H%'G*?C@&0_:0_M"%[_<P_9&6,SKQ!.-N<_;E.M9"
M$1XZ!!EMG36E)Q9#AA,/VO)8FZ!URL5\^EGC6P[#*6;63JI#5\'?@_<;??8G
M4AC;ENCS2*9QK-U[4@;E X$C&9#!K%100J5BNI5W//6DLU5X'XDV+W1?64=W
MKS<VTW^'KGD_]%G]RM\'6>'=2OB<;,K"!$;F?J1?M7$8M6>Q,.64FAS\U"-=
MA]]$71%K'F\4Y!N3GZ1LE.!DLB \1_)[T.6[Y5S'ONC^=:AR^X,1_'Y57VSR
M-=:%GE](D=73^'DV7Z5,3#2/3HOH@;G: 0V](F\Q,= Q"!.+L,RWR0)KM:(C
M[=7C,7NPS((AJ=$JFG#(NE9?:E;$=8T GV2-=1X:DCL=!*A<[_9(L&#0\L2S
M<*Q57=> J_A![;$H,+3_0J?K=+X"OT:SB?VL,WC>7H3+"<,<O;("R'8S9-,%
M#[YX!LQKIZ1C)4C?R99]\E'?#8L:2'[H?JO;+?B7^>SJKT6=XC&]_(D,UME7
MQ+>SOZ[6<_HF)02EO2[@N$VU9,%"S$I ,5RX(M"H8CN1H]OSOB^&--#!T!T/
M?J*-['-MPD!G<\'I\HI\PYKK.IO_>?EEE?ZWR06DWWF/E]/9_+=P&=:2F[#L
MH^ LT+F]NE%*M6E#,) M+[47M'4\=]M9>J#XOB@UFKX&[*NP-_ 7%Q>_SR[O
MP<_9D]7((MA0A59B L>\ &>3<RZC#*);M^_^6'Z0KJ'N!NS/L(+_YC+-D<3R
M&M>_OKG<$9YX?84?9N_PRY3$]\!Z%Q,5+9-.U[YGJ=Z"6@=!1P.L1(Y6YF3#
MDP&A82%]7T0\CB8'[ 716X@'5JRHX&SAN4 R09.)836X0E_J:$L6BL]%G9B3
M^ESJG)ZK'SL"D09LE[%N[;&*)G58[.*AU?[T-\Y3W1?>7"[GT\O%-*U7I8UW
M@FL/= [1JEAA$!.3D&.MWK:.S/-N+G(SB-\-L4](TP-V\[A958]W=5V.=?,N
MU@9Y/B@/FKO:@7[5)(]EL(E%;3,R(;OY[@,#^PZY>B2M-N@BLHU/;+JA[UX=
M6?AKNW^UD,6'V3)<W/[S5[/%<MUF:3-K^?]M>L5NUCR1&+WRPH"W*M5TP@3>
M*0D\<*9LXE$W:K0YRO*^FQ?@=$G3HM%*LU6NC2]R46Y-)N>34J++NO9+3LR"
MDJ[4^8JBSAN)F4<9>6B3DS;N.G^\+*=#HQ8=8UY<K/X.YMT+W3CM$^-B2%);
MDF.IL4D1P0N90&)R3GJL(W6:L+T;ON^.I0W4UJ+)3*>7Z4/X^R5>DLZ6Z\GV
M]Y<1BS=<$#FP1$5N+7WG@M# LL#H$LN\M*DG' ;_=\?.(ZA]R$8NZZAZES7<
MW=WKOK]X%?Z:TGEPT_]XP@H/GM.NKJ7C=2$2HG06F(U9(7(68NEV-3(<J.^&
ME$?5YGB-5H[1:8E,>M3&%N!,T@MJ&9G\*3H0F<23$C/\[M2Y8\>MGW_GKN<:
MT3XJ^5JTNQFML9-4+&;F)111&Z-[%\#IHJ $D81RM1-VHS:@9]OFZVQ?HA[4
M:=**9W>G*N63X*@*$<](4 (].!<0R-I3+M%;3;;=B(S^P;_]U;*#+?V[[=\4
M2#\EG\5# EJ74QNG>,[!0?(8ZPQ7 9YS!0$SLP83+]BH*_]02QBKS=&QF7@4
ME1^[@U(=;?NNKFM=N(O*NEBG5$>G:^V=)OG5#$ 62TS28,1.L;5.8[NO'WL"
M71#&U/BLK^0'GN*^ K$IONP"8Y]."-V),'R5Z]/-#GJHX*X2>\BOH3IM,6@8
M9D!$ \ID5H=41TB)SE$=A,FJT^%S&FI\H"'!\%K<1VP#:^\WDM3GJ\_;6N@D
MA<R$06L10#F)$&3@$((K11@C).N4C==)?]\\>MSAZ@<+?S:$Y 8L'%P!"7_?
M A)3*HZ[ J@#6;*I:(C11)#.)+2RB-*MV50W%=Y^]#-4X<&2:] &9GV\TU]>
M;2M"(4KG/!2K'&TK(H+C*0"K,^%RC!A9F_CB-S"^3TNIOT9:-90Z2! WR[C,
MM?KO]_ 9-UTUNJRI?2.J@5=UG 96/<BR;XAL+$VWZG4U]-JX$-[3ZNHUE (E
MF8&(Q9!3SF*4W*2HCA0E/AGV/M%;Z\3)NX^"&Y#V^@;U)N=O8S(85EP*(H$M
M=+ H[>AT<4D!TO%BA!.<I<;9HG<AG6! M[G&'TK!Z*6N!MT]WN)\U5_H<G,+
MO]B:KSXYFY(A);,"]/+%.KVB^I&*S!-F>;*L"8L> /2#0X.HJL%.] X7R_DT
M+3?YQW^27A;OWO^YI7=-0U;!@TN9?-#ZQ4EK(3*2@$Y",-VFP_2CL'ZP:4"U
M/>A8C-& [DYBPHO%XNKS^N[U3_H'T\M-3>OT\N-UJL)B=KOWR#K1 7.CIG5#
MXVO7Z*ZI).\TQ^,B%64UVF*9"CG[VE1!(P\"36(I/]X<;VBD1V^H)ZQ >JT8
M:&0>E(@9@@L1DB%Q",.9RXWFW/3&?K2TG6O5WE+_N^GB7S_/$=^0<NE\7*[F
M'V6C CK!0)A<9\2$ B[6S&NN!"IM7':-+I];+^T$3[%AN3Y8HDX3LIQ2K[U=
M"ZR[93W?MT-O5PLD%]IY723(;&P=2TAG>E$1LO,))4/2Q8E-=^VZM!]OPU')
M<HS W"$+_,]9;21V,5U^72W1)V9M<@:<"+R620:(BM991%!&USZ;+7O9MUW<
MCS?BR(1I=>42GUYBW&>)'W#^F4^"5;D4%: DF]<9W$Z["$$QZ] QJ;AN]RHT
M6=/W^08<GQX#-EX<_OK5A<*5,X68F&DA19"-EVH])AUILG@64JL>Q-]A-FHO
M,A]%Y<?.1MU]_Q53HD4D#\R:.A'"%0C( K@@G67>!QO:;,YGEGNQ%Q,>S;W8
M1R//Y=:ZRYI^Y%X<D'NQ%UG&N+X^1-//A<6F&(XY"(@:%2@N4VT6'8$[;8/5
MRDI^I#K8DV'O7KD7)T?>?13<_L9S.Z++VY!X4&!#("D)09:.PD3FCI %<RK<
MM(DD[(1S@IY/<TT_?L-Y@)H:1'@?3@2Q*$V*'B')4K.UE82HM "A7&8V&NER
MXPY69YJWTX=#PZCKJ"/:WE]]_ASF7V?ESONP7LV+M)Q^F2Z_-KK^WNOA[>ZV
M#Y?!G8OKX+PQ3&*1KB@;E%=,Z:0,;1R&*8Z/7USO!:.%8;7.&WIQM?PTF]<6
M*G_2TN9W!K%<=X-]2PAQ5=)PX\Z;J+G4P8-!1>Z\Y60%V.A HDZ.1X.!CWE3
MW7<]I]MTXKJEW;O9Q<7/LWG]1Q/+N$\L&&#,TT[&5CTV2%P%A679&9%.;?#>
M0>L\E7-GU+=EO*84O:EU2A??W5>[GB]4=5*$CA)4B Q4/;Q#G>\N$5.F+9Q[
MVR8A<;0EGLKK<QI<'?^U.H!HIW1YOF=GJ(G4.4MM(D2)M,G520>.;")@Z(RG
M%1NCTS-[H;Y=X8_WZ2CO4P^:':/4<:@>42$EGQ59"B8C;1NZ9/"2?N1!^X3(
M-;+G=CX]V_9BY_0Z]:!9B]O\9NO<S*ZZM51'[KKE2M/)FVO&3ERW\X:D$#$Z
M9W-HTZYXQ$7^>*F.\E+U(]N 4R/'-V^%<X+5YB*JN (JFPP!:2MQD7,AF$DN
MG5C-0C\_ZB1U\61;UF]>(8[&ZYKU$$JM-)46?,':D<2@CEQ+KYYM]&@?09S*
M7GGNX:5FY'Q6WG)W<4QJ_5LT+$!6KN8FD2"BIWU5UATU9U&8;)B >^35G\I;
M^4Q>@1-\G??B[[-ZA_?MA<Y94E:0_JRPMC8K(4U:LI)R"MXAFE+<<_,XSK<1
M_W?U-K=D\C..NCTM"*TB&JDEF.S(_\PADZ<3.>B(SJ: (77K(GI"K_2>(OCQ
M2I_F*]V2R<\Q\G=%3E6'C2WEH&-MABIB J4,?9<<F2Z"&\8,9\(^MUNK?=;_
MXV4^S9>Y&8>?9ZSQ:1E(#%(;YT%)H4'QS, KEX!99VSR*;+GFQ*UYUL\?$UE
MIPC5RZ_W8U3K6BMR!F7)7 &3LHZ[41)<\0A8F$J2I9R[=>X>O-"RW[J.6WUY
MW*CAZ1#F-,LTE7*E*)&!RWJJ^% [9F@#P980LY#,VM*$\L^B3'-,>CQ:N[F/
MFIY+U5N7-?VHW9SN7[NY%UG&*'\[1-//A<7%J>"0+%GNZ^@2;A0$QA0DQH1+
MDI;9:E38LV'O7K6;)T?>?10\6NTFMTG9F E4KE-SBD_5BU#@5#8258XLMF'=
M.==N[J7I3K6;^ZCIP2*%46KN'OO#5J5V'9[9L,)NWQ7?*:Q+27"G3/),!56L
M\[X4;X0Q3N:0HWNBL*[#TP>JVWUL8OF+B]4'T7=_E)W3RV^\,%%8U$9+R#+2
MRU'0@L\Y@<M)%54=LD9E* ,OI+?[M'X2O><[@6Q4.&'H=4+.0,IH:"_AG-Y\
M;B *:93@3 O39JA!-WSC[]C'Y.,]WVIX';:LO'],8A_"WR_QDO2W_)E$OFL5
MP>IL7-)@D.<:=73@#2^0>6#:BQ28;#Q>HQ?^[YNI1^# @#9L-0BZ+6&G"%^%
MOZ;+<%%_]\7GV=7E<F+HOQP\A\@D Z5X(@NM2&"%8Y*8E)#E*9MD:%#?)T&/
MJMH6B1O7D<!AI+L. $;A4.HZ$5U:4:^NR?Y'6IX311AABR&[L?&%PH#+&>L>
MX13X?3J\.)5[@S>7Y%B1XT)V4_VX7S?K7 5MT"=AR6LFQS8&4%I'\%8BR%#J
M9%\?4FISJ?D(J./?*1R-,;,VFFL0W7H VB8@TP5<TQN"1^$=)]0_F#*[D:2'
M)D:GBT1?I!<":ILL4+XV26,L0Q%)F-KMB&&;$,41:/)$3/TX+-E' 4.[&6_G
MLWR5EG7+K!OI%[R\VDZV9DY[9I0EM14R+;'0WAF= VZ*S=EHYI3OY#4\_(SQ
MG8 !-3$;7HP-PB'O<('T@9]>7.;7A.MB]E==]\;#W4X?)TI;J1T432^J,MZ
M]]F#"^3B*B6X\6UB'1W G0-%6NEBZ,W@/5[0[W_\!2]Q'BX(Y8O\F<2]6,Y)
M E^V"(U'EUS1P)4V=5:]!8>T&YI@(R8OO'*FT[[0Z7'GH/]&PFT]D'$MB _A
M;UR\R'GU0>'BS>5J..E*(JL+E\4A-UQ=/[K71=9!^._<5TGR%()7&&)MHZ%H
MLU;T(@;'14!N=9ET?4B_79P^_]4<Z>-?A?G\:UGG-M^XZBBLM$4'R)XC$$0'
M0:L(CCQXBZM+V#9%^H_CZA< +05KITR\EG"=RU-]O<LTO9BNA/O;].-\]<VL
MO$C_?36=UP*));UH]"^OP@6=RN2!+K].N$X,G9!07R&@351#)'L- D_,><$4
M>8?= J##@1I_8QN01-_&,X^DJ0;6TI^7\^M@PLW]P&)B../"6PY87$W!5PEB
MG5(?H^!UKJE/I<T+]@"@LR#/D$)OYC57-G_#Y)]G<YQ^O/R&ZZ^G] K,R5B8
MAHL)S]$R+PUH)+M-N<2)PEE <;HPS,J5U&8LP8& SXI+8RAMP'N4U?[Y&@G'
M?,7]%XL%+A<;M/3S^^6<W,JK.;[Z5%.T)J5P8U-,@)J3=Z!HHXR9[%"37$87
M4,J./GGW9YX%/5K*><#BR;LP?YV&6$<23G%1A7*U7)#?\+]F<?$B+7^YF,5J
M:2X)\#1>X*^S?]/?63-\XI.AD[)PJ%,[0&5/)ZBF+W5\F\ZY!,7XOCPY%,Q9
M$F@4S30HYENC^'6V6*R3'FCWN[PBM_0/,K]6.^7B)9+ \)9;0XXO+I;3-%$^
MH@W2@Z1W 91!!D'R#$PP6E IEC5J6=D#]%F0;VSEW>>=/@+O-KOSA 06A=4(
M=6P;(:<U1!X92$=NN(XZ>G$RM-M@_MY9=XCJ[I/.]$X%[."8OEC^C+E&Y&K
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
MQ;):"1NHOC"5I+/@1!8$U67P##EXSH/)7$1T:4\>='GNV7!A<"$WW-PW6&_
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
MX=%-JI]>&G@!=7C"'1%L7>,.P)H&.1Z$=IQ0QJ"*G+74PJ@TT<&S)*0$+64
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
MD2TV"AK7U>(/-J?K:/5W6#"Q752!!:HT7CVFK/_HL*&*63#/_]S8BIQRK'G
M[?:\-\M=SYYJY/^P4AISI:-[AR#3%/8GQ+MI\.<BIR7$7@)V$+;\A[?'V,S(
M$,,VJW$T(M)PKU!@DU3X]KUNYVV5VE,^9 >Z'>:F+JD1VW\CI5!S@BMK ,NN
M3R\0F)ZKJ2"SU*AC;2P4EHD)YLAJ30V?4_9<5K  GROR'Q"@ 7&CUGB9>0PS
M8FUY#EFLF==LA)[$PN(.S*DC+"]"I4>7<,_0ID""3UNLXLN44PY7Q27GV@Q.
M9^VX*Y)[8LU)GQR*5\'9,^7[4<GGG7HQMRP/-(SCS!F>VN;+PM@17[=++0FG
MOVS[F"=BL>6RK<"%;)&'FY/3N4Y(Y4K%A&,@[36NU*H+%,APN@F2@B%"-V&+
M4$6X'B'#4GE>[_K%*#^]>R^*9D8,\TSEOB?]''N4^K693KJ/V$<)G@:9[EA(
M%\YG&9S> %**8D ZB:O3EJ6I1V ^_%WBS3FR7!T323";&OC,QK+7KA.Z2;=1
M7X)T?FUE/^0](-.^8Y,(FXGM_AQC)""/=2AS3XPU<JX]@"[]HJT4/_HR(RCP
M]]J'KIC2(Y]]8NYL +$'A,?)-*K!E#J[C/>23"-XS]HNI]3JK6:'ME^O":"D
M*6TSB[1J)BJ)>(GD;C*3?CUWQ#]Q)-Z27I;^-P465^=$3H.=9F3: [(T&+B*
MHKIW,SPQQSPQG<&1TF_0Y]JB2,WA>BVW;3[X^UC(W/S5"\0=M 8UL"PY!#9,
MP-DFW8AKPWX38%OB\"ID_!T6&T3R-Q*QQ&/X\_J'+(X5+F34 %: 4%T_%RQW
M)PQUFD55M;6U:(HK8\T4SLSN;/\,N^S34W02%N!?LTS7&02#PY/1C<2>#2!I
MP@Q<JN <?\L<[),;_V5?L7 JQJ__=%W;@\J5V=;T!?F+<O3!PV]F(S"6FX:%
MJTYB!VS[0,@4*8&_.);<\RRMUZL9!"5#3W3/S-;Q,,-7D8X$^DQNJ_@]GUTT
MJ?!DC\QJB607!6D1(YX\8FE]2XV8AMFA)6\:EN+0BVG:7,$ZU [2@R5/4V<"
MS/P(FPE7/EY:H.RJN9 3]I;[YK/O=;?STB91;X0_RKAFP]/7J%M^K\:K;H=R
M:"C*R"J-Q<Q. :L7+'=B)7]0*IYU"K;9O8^47#IQ/&!+LUK,O9\F5XFW,;0D
MR]V(I<CX"2I@F(.D\5]>M1#A8<P347\F-KXQ/&7=\?%$ 4I9PRSK'8*&]=.7
MNLY=LFHK./#E?I[C';[U(]9X=;"S!\UT1D,Z\EPI:B]&XH]! H9TD85)L52;
M"GJJASO#I!XR:98W%AI^N6^*8I-GJS:C^7&NZI2R3[/-/J0$I6";"?\\*6Y$
M-T@M1<1)*4$BELS=?CZ[)/@KV'5S)"J'%/?,E'IM%0G9J:_>"B$K"WO?"*^$
MROYUXP1PD>Z<^!#C3[[52NAU^CP$BTG1T!EY <WAT2 ]%;\YD'*B,D):_QM'
MP]<_FV'%9^F6JUAW2Z)G][H6+*+(N<"-Y;61:?=*17D5Y, <Z:D%>.]XE*>?
MY+'UB>/)[U5"_^BDJFW:=>9DQ+:@S<('WGZ+MQQ  A?!^_R<F$ "\P0:TB+U
M&%"N>AUNY9467*4*3#DFLDO"%O>>EZQ<K0DYOO)J-N$8L.Z7_E<9%HE 0I,/
M:5,&D.8&<-/RX"*EU3.&[-1LB8;BA?@E_=Z?V7DWGGZ<U6ABM1EXR=\4%XE
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
M(T$16NT==S5NE<^ =WM\@<[J).T(NY3\89P2^[235NZXU3KW4^V]:[*?D91
MRM?/E+8<SNY6],^7Q%&0/T:YDR#1KES!-8>BZ)Z8(\-7'11J&N.4[1OM]&IJ
M9YWK>F4"-I5IQP/\_+)_<Q$;)R+&4UW!+#V9!P>^Q6/V@;1!U-]CA=F8I80@
M\OKUCSI_CL";QR!3ECJ#RI7ZCAW#JTQZ>%8FXOPK8E)ZSHX_=9MRS/B0X$HQ
MU5'VL-5!T^WN9V_*P^@@1?K_=*)U7]8,F<D8F.GNQ$I'J>R\R$KZ6K0SN;!&
MX=V-]J%@BR&_NK<]O;6TEDC5S2XFM/@ _K_GD;B10M3L\S)%7IT*^(7_ "JU
M\T?/AB=2DI^M?9P*C%0+ZE!MR5>]VEQZ4=3"*>M]V%(BWM/GL ?F]TW.3CP5
M?.'*E3U"6WE*;>CO_2+>1SE17F$?S""(>7Y3.3P^<W6OO>3<G3;?+(7]FC^?
MF'SWWO.-K(FA/=L F/Y1.1E&M:ZSX5SIQ=Z"\\<G7 Z^'^K";O6\MQS](*\H
M:M%_0( WJ6]I9=_SYN%VKM,XUX03ALAJ@ D<C*C]@=\/'6(=Z2K<%&NJ8.\?
MI?!VD]TTKE!N-6%?!?WN%4M?#6=A]D6.'E>!2>5N;6/+,JF=)9%].=4!9%&N
MK(:KTI3;7SV]DC*+I'>Q4P(V+9B];U4:L'WRR]$<1YPK[]4&$ S*XT<PTL2=
M;2Q4#N[8FI2[147!B%:$2M,#G]_9"K><'\)+WJ_ DP2F8SBT2RN33&ND,JTQ
MJ69P;<54)\L(I\Y "T#/IDYD^+B:50?Z'(F2\%[194UW<6P'ZA6E8DYBWTYT
M.WJ-=F.DN1AB$$%#"=\6&!'9$C>6[>LW1),$P&M8 $9!WNQ82)FV&@^+-V6K
MJ'>6RK_X:#@YZ_CP2'#8[:K^*A'1/YJ-L$8,?]<&(&>I&DP5QT4\J?B6P?"4
M6SSV:>DK4,,F;6G<]TCXJ<\U=%9(M<[3JQ<.*0JHBE0\1-&]::Y]0QF8%^CE
MFV5<?PA;TT1,[U"$>MZ&JYD>;0F^7F3Z,%_ETEV!7+,-0-JN^Q48@1;K4(/
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
M 300C41#)6[EX;KEF/;;$R*MMJWV&4!JW[G2LXRAKO"M.(-FWLT.">@*5BK
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
M!7B_#_6/-T<9&7O8)9LYS+Y_^O#@=0=,-@_@E:UAO@\T:@,C>X>H?V+]$$.
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
M<YNO48S_ZWBUNB>1+)VH@D]05XJ,BMRYWOZE1[$YUX1[&J5M^N-6EY^^^BU
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
M4_A?&  LN%Y=PW34#B^AP&S]161R#1-7C73CP!01:W2>8CDMB'?6\$?NC?,
M\_N_QYPO@"UJ"6&*"VY,2B0!=)SP8-S+KG9DX9(FM[S^6IUC>O]6^]#03SWN
MN^:5Y%,;GWE^F]B\2,@A@#Y&L.RN=H(RU9]?$!A'Y+9D>$ J3%+8[DG%^G?Q
M=P=K_C%]@M6)-VJCW+6N($KGQ2__'A7@F0Q/$6!U%)SKS$(740F]HJ-!2/DA
M^9,;__M6>]BR@AG1 P_][W+)TB*L)+B&T=[*'D-:[^BM89RV5OP:I3ZA0,8;
M4R%??$J+U1JF&5L(S%RNX:FX"A $8#E-1)2_B$IA5RQ@KUF/@'3.X?Y *R'&
M*;R)(MF4FDPX^]Z6Q_4(VM89^:OGK=M[?I-A:D X_IL@1X5-79#U5SX+I8A)
M%T)81UVUOP;D^7\*4KJA&2O=6J&J_X(=PMVZ")5&L,J/"I(4)/R,Z'T4??X7
MR&"C/%OAV=7ZNA03.@9VZI^OKALN/^E%S=XTYISVT;>+^73B&\9)&8.0 <:'
M-<QK/8!F"3!>D*T@9^;"IA'(MM5,LTU]W<8<SW.&?R=:19#/LJ6<EL;-PA^
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
M]PM_*OE]+)#[M0<GS*X*Q\TMUTW8OT%F3D[L[WW](4$G7GMQ0HF6,44QFGG
M--5_%RQR#E)5MMM3Y#^F3-A'A 1U(^U&=9H)L#85Z2,=>+K$C/!$*DFSW3.Y
M-FD?AS8>N:<7I;,X6=$3K\94!,8N#P2\(#MGW??58FB_CYK6Q*CM50G=MY*U
M+<JQJ2V60-5@.^OG_4X6B",!Z/TW__U+.?YW_._XW_&_XW_'_X[_'?\[_F_'
M11,CA I2GOGD^'&&>KC_T^5 [0WJJ%_./( .[0Y2F9%<=W<H]1'2F;P6M4HW
M*'2<B.Q*#T\:O:$>?4CR<2K?\IOSWQ17,L[YT)%CE##J4\9KJ =F5(/:!=RF
MW7&OL6X/@1#:0X]OUC*LCL4=.E0Z]'9)Z I^2[B1TZ0T5FPT6!C<BZM0H8LL
M4Z&,!JVG(J:,(D-^>T06C-^QTX\09Z&QZNV[X9%[,BUI:+7OYH>0DG#AQU5[
M6YZ'E=EVRXFSD1D8*3AHJ,\&72W0,I46="1.""6+B,;C>Q>8@A3?5L;C[>,S
M7QR*ES_F7,EF*GG<.6%\JNNC?E=!-P]W#+NP^F"?%LL$HYLD V"1Z#)H%+H$
M*>(V30JV)7\N)JH^\_%Q(_PJ)L5N*<\<NE,IX><I+'SM)[*M6]!KHWVJISTA
M%%=FBZ^%QV X&E01Z#8YR?H)]?(U0<]>I]%:#<&&N][G7/4UWXKI'SCV%#XU
MWQP72) =;C2 $89BF;QU9-I"H)RHN8%P4]GP\\:A4#$.<<B15[] ' A);*RA
MQ.XB?;(I^+FS4OV0OC+9K 4W4OEGK8Y</-SR]/9&1JQ(^>$*"7G'=]PRAS6/
M'CS@SBE"/03 "#VCJDP^/\HT<S^:G(OWF^+3B$B%\OO#A$<?>1&+;:2*YP8^
MDW(/P@1*RD)[NJ6,_1^\J"LU#D5@":Z3=)$UIF 3>:N=!3IPSKN.CV8%'%XV
MZ@^(D/%Y/]0W],OT;A=Z]E.:N'@\MU[Z-FCA,;,> 6MV%B-+A'OKBTWY\B_N
MG([+LU?^G):[:./AZ^.V!U0H:G%Y3ULTB,,*!")6X4:#J=<9&+0W]L4?I"PC
M%R4]BDB[H)/H;-^N57K>SR50Z+!JD4.DW>'R3,W'G2)%(2UN>T,YR#"ZK!^1
MY.7,]K?_ K1D#>]SVMRE'7W0\,A"@QP9&_[IR[#.G%3K6*F&O]VABLOWH]VN
MOA1XLD:7<&/R:A.EH%.3"7N0 L"-6P&8 Z@?]H8)'TW4%-0/Y_EXW!FJR<F>
MUH]R7HD75/]V< KR4^/9)-D<-Q(SY=M:@';G6:%;3\,@(XL_\CV<3P.9TTX7
M6X)2T^[A!7S=E.E]?$:W'/PB%0WG)GXD._]92'H??XG_TXGO>/F$*R *]!>.
M6@($L%W!KJ')-&IS-<7GE;1@$7FBWV%8^^PJ*+HINWP?<&6D^;5RO#_ZHDB0
M[7P:73J/I@_@'<L9[]CU1X&A/IG1G84KXVX)+DK@;@T6,E7J5ZBOK4J=-?9/
M)2ZT@8O?*(;RTH[M=JPOI.UA5ZR>P./.)I1:O[X0UI/TT6N2=P,665.?]CR
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
MJ2A)^ME!YE$@U!QNGW[C;K)O0^VC]:OSF=%/88]^H<2&D"Z,,J@K>"1\FGF
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
MZ]&-E@] :C[?/1(]@D++2U2$M6@@'5&QX JU9A<K[U<3BJ#%QQYHLN5%X].
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
MUNFPV*SOW:*_!P<6D^(]]YD>U&Q&9 J*U(*WC/ :C@N1>N(S!_A(@CB1FZ0
M8_5>TV^H&]M-C'^,)3=]5^G,N<]%8_FM1/7D2FO(?$0AJ6KD WP&0J%U(:KZ
M,*/WQ.W BC&#HE(<7/,]@]V32O)>UJ3GCD,? [DIHTBL@<Z,S)KAF(?0O=VW
M'@%VYC71H3%?[&IVHADY!4'WU1-VW>-T4&ZGL\0'E+YS=@#; L/^^LL3K/-<
M:)S3?A8JA+@7#$6QV;Z>;&+T_R5'70+[GJ]_!ZLO\F%C?W)@L\NXP4'@Y%Z?
MAHZ7_31HB'%C;4'N[:\\*V=E'4TSL3Q#1$O3GDF;K8]E"K(<M&V.3<:;$=R!
M00TWJR7FNIFU[4Q]9+0+!FGN31%_23SYSB>HU",: *+<#."E!$)A6+&B-Q$4
MGZXE7&J6A'>#Q=RF]H*>7S79N4I+Y0>9Y6/SJ[(&)D7^6VFA<B*J(C;)1T7S
MC58_P?_B4..U?!(3->7JYYGG7LB*V.VU'UJB\@XD8W2]?9\$0Y_5H^\V,><J
MLR]&UOHP)N+86RW2W8IN8"FF!2RD0I*,-4$.[V8UZ;0LW;C9ZSTJD$3-!9+3
M]G^9K"$^[CR1Y81C:(/0@A=S0*P5#W7HUA=8"?F%&\SX#:CMI=F%#FM.S7I#
MQGXC'@#@%7=*R5H+"*L*G85V=-A,5H@#"2Z0.(]B'\Z@PTH&3B),F!R<C7S>
M3CAJ?Q 99ODIYXEXA05\C96, ]]O)5"UQ3GZQ-QK]+FWKPM)R#M6)SW#KE;B
MMBA7?Q!UM7\Z3=Q2\\KOO3/^@;#+Y>+1J)1^^UOS"BM=-Z'W_K*-Q.16?C.2
MTU^0G!W(N@%G5F;W#M[?TA[+[E&MOV/NH(8*-KRX\PUX,> *WTT=#J(_I=V*
MB5P6R,)QY1FS\KWA)1]%Z=]UBY<5TQW4EUL);)NZ?]KDA%'IL%+$CCGN*>4J
M&K?W$@MIUV8^5;IU3D"EA*$V?>#"HTW/R)0PM]7ORS<]N\/95DP#&MJN!>'2
MSS&]PM7MY8 KKE)=3.FW,1121NEKN)L3%0N\UV%-8L) MK=M,O8SGB->0"&V
M JC1'41%(V$SCP'/\K]&Q3^-CD'J9P!X.HITS3&]A7(?V]4.O&;B/=OB.\>>
ME/C++&\@]*A\5R/[]=<V$I!GF9/>S)"TIL>0)WOU9YJGP_JH^<]Z^(C!YI/?
MC(NCD<;:CFE^4L3_&2PP74KY+X<;0R"]=\XC;.:7,?_'OU1<6+![8$FXBFX?
MZ+7%5/];H'CK$$-$(?N'18201D''O9UZOD:M_!=YI@6/919Z''M1__),4]\Q
M&-!?_GV2[UY$VH3I92/YRELWE-2'J.<FX=X'^-CQ2NU3K^#BF5[JEOH$:DG@
MZV&P_JX(0QOHLC(/ 0<QK06]U5#%>10^O)R2M?BJ]#1+N9(T#P^X+9#Z%CFM
M2/,QR=K27[\BD2\)7YEN*9^+YI@9-%8NIVO=3 1!4PT-<H8=8%M]QNM^_)DY
MWI+&5!5P^LJ_2LI#A7L4U9)_L=@[*X>HY*\]VN/D=,VIL7&G9 RV[J?MG@:/
M\3?'SK8S4QC'24[*R05SU'A+&9>7HO&O[%:BJ@>:!3YZEQB>TQC;\L89X#>G
MV)<\UI\K<NXUN970A9\Y-I70&2EY[*JI'LJXZ_%\;GS9^';U_.'?4_!_%%#+
M35?]K: L3\\],_3EGAH^XU'*6V=@13Z$N!Z8 S<[-",?A-2T\2W]#DZ")@ZE
M91SK8#XE8=/J*W(F<XP<:BI0 TM8N:AZ!F&FQ#1BVFY#%(SP^##VY.1<K357
MY?P[<#L-B>KZ=\\&HVE&P&NKQV> "S-5@M^O_\=# ?^U PNEX9^MKF IJ@A,
MI%RJ;SO_]27*A5IPGAX6U7$& !"*]%P$-"<^PN6^O.-]<(+<W=T,J",:#Q@M
MW:-O6WW9M[G*:.A3KYI>=,.3^'[A>.<G0J5PDO.R@D&FH:9%47%FT_[QOR2&
M[K\FQ7BI2H!0]S]'C/][I+P'T9,,%Q'AR2\=1CF(?87J#J_"2"&,L 7Y7;\;
ME)PF5 ?T"QX,E(IZIF>IB=:9%NO9H,S"RL#Z787<X$4@8.N?[_9JRCF%"YIB
MI-;CXVT)+1#:J@/Y" R 9?D;X\QE^]P=%>^V#!N6FPU8]6CHQE".R MO*_UG
MGK D%'O#=>.6*X3_)CWD/K'O6NDGU<V.>F4KF;>RP]M@'#SL I_O->Q+3,1;
MEFDBL;=\3J,B%O[=BN/@+"0 #A&Z+'MZ#>;P*/Q]XQ\1">NFP7S*!1VT!AH4
MFR6+S0W1F7P\]CUJQWZWQS2>*^1HB-@\&9(8P./^CK6S2P0'%,VZ4=);<6=%
MT\KSA;'EO+R!,5%PL[B-\4'"O'-)60$RL5[Z)%"(>^@_@A=W7_ ."W9+KQ6E
M[?&J"S$CUG<OL+#^J,-# 1S5((!8M%_@+:^Q'I';9422#S)B>Y&>W01BL'=<
MGVB__7@\\4$A-XQ$57GW0&T (]'?=I7DJ!>Q9P=%OA'_'X?/+S +214;&X01
M*]G\56XMY,0R) )K5M,I;#Y&\.'R=^@QF?Z5L:$8!=MZ3IJG=5[GL 4#HH<:
M_9'<W@/-6:!.@]*I6(?/YKIY#@;(X\J5<'+3:%5/9NJ[QZEOHQ7<*F"IZTV6
M%+6"S3JOH ^*T78=(%L>.Y?.PC^49ZNU\SH8FI9B66%%_0#7-H)8EA'9E6;+
M@B:\B<9?#>?+I8>9=V'6KQ\<6[;UD42QBA&^2EJJIA)%:]NVE,6I)QXZ69P!
MEOI1(TB1/(Q7;(;A)6,>]-1PGI*U\+[7RCKY9%BGZ9O#8>UV SS,]<54AGY"
MTB88RXB42"K'(5J&;UM2/QW_^2ZH9(_T1PF;5WYJ+%3@_P*7A9"-?^UQM^D@
M-&(\HQ3?=\O]$&$V K,#AYNYBR9_6[#ZUL/"PJH7^)FYCLS1ILR%W0XT"L\V
MF[G^*N4VK<[8$3A:%GT\ HRR+)_#RRGH;+\>7:TV.&%Z2-KL^\OLT$H 'CM+
M%M[;G\4AEV/AAZA0,)._M6 =7+V^#=;7F2?T0BG0O88"F,SQ!N-=L0OQM'.$
MK(V]W;K$J)TOP#^;*/T3XUQ=R.M6D%K@!7248Q=F#%<3?5)4*5CH];(R_0#^
MT/QG:EL,)F.(36?ZR1AZ1@&,)/VV%@_Z8//RBYLW@!5@*0/X3@"I\UY>/?@'
M66H@,]7X)L)3XFT"?8,ECM?P %K"%!;]W4Q.UBPJI$R(6'"5(Q<LO%8KG)],
MCCS'@.\H&K"S"Z>)PZUH8$<5#CJF*.;GRO[\1MDC K=_8"Z@CZ1)=5Z,:HZ@
M_4]+U$1GLMAUZ%CLI"K. ,J&Y8FU^L/UZX$^QA%R@3$^G-G>*:+/$\?$$?GO
M[.JB3]+&11P]FR3(&23IWZV3RARU?AQ-W^7G&</G/$"Z)^S[A?J=2%J/U;+&
M"'.[0:L[:[TUD)<&4;%NW?@-JS, !OH%?L.?E8-R:X][?>:U51&LL(.>E!KT
M.U.\ WE967F#A1T:3M+-VRI]U*Y9E<S31_UA@68!\G8]8.L$%DNZW'L098Q'
M73.@#/5_/\D1M)):$]\3)(D=)1A5^P\G#@V7#=XM?@(R[A1WTE@?'<];"2"#
M>G+ :-1G_VNXRW-/H7X^+H%%J<ZVC2X+*T <<,SK0AWB7W(.P4 (Q?JUHVZ\
M0U9_,%VI*8T^[O*Y\2QIK8KTX0S@[7:X8:G3!IGAES48;N*1F6 U.>)[ 21_
MH,XGMN&XMGH7D9P/IHWL:YS:A<'ZG5TJIKF%!N;\,\?6L+5(/-3RM1/'*N?#
M%Y6@XI7W^ 34-%'K*# 6HO_WGV9O_YU%8O]E.L5:YO7F6S8-9;4Q]KF6PWT,
M84;<WV,J[\*T6ET++\D]S/_E]+8^9]G,8?K?"RRK![B0SHG1S7UOZU;C8S&'
M&]9UZ3O7%_R.=2G=&[ONLTRS)%]"_CFXS8=X/WU2VT$>@VU(_%B]$@M]"_WK
M/F><9&\E3A##JG:.8O)WKB[MR+:=^I?5_$6/<>XUQBE"/T0_]KE@&[BN^&T'
MO@IDE$O^3%+#;%JQ8:T3B@Q@.X8\Z<O!A!^[6S:5!4G%-2.-<]^.3#T4JWGZ
M!++>ED4)=:%7'40.71J9%B:/MKT@UY%V\(K6M+58P[_WZ6YDY--,=?O!ZD].
MC7/R@Z1,_JIQ'CO^NO^K^CF ._% YS-L\0^LW'Q>XR=)$-L5T6"MD'$MDNN^
MF1GP>+G6QO8,T'05CP 30L\ E^X3!C"S5T45V= !LJT]PHL#G*OX%?#\M^&;
M-K!1";6W>Q D%O&)#?K)Y[DKJ[]L:<;OU=7)J@+B@+\#U&:)5<S'J([D=;H2
MBIG9K>*NKHR8;I'5]E'U7(8VYJ+<-\\ 7RCW";)8=TW*!.'+DM=HF]!]\\HM
MJ0,BGU,2]'E0T%S$"7@)O+/S>ZM,*X?$.K);X:=L3-31K9&P5%<RI!)B66H@
M1F ;);HP9X N&*,%D-I;OYU;;B(OV65^H,E&'37B5Z@> <JI40YN+$<C2;>,
M,8C8AOHSP(PD9LP*- J_1))='%VUD("CDW959O)+:6/R)Y!/6I9O)1A:!-BC
M-QJA#VLKR3-N#?.G,CG O9RV3K>+KP6TQ'-$M57R?MB>IW^CGM$GEW$!(7R(
MLF]LA[( H1PG@6K.HH\X[EAX,/%.1LV!J>5;'XQA0.06KPJU:'_@2\DHX_78
M[2$BB_?315C8]T8<4_=8@['BHTVSBHNYKG'R87/<1@]&W4XR]EUEL@_AY7O;
MD40E2A]>[S$6BIZORO1PNQ)Q8)@XX]>7V"WGDWNW*HYJIL8BJ+D9H5$PL+7\
M30N8V&H1B2G4FSN H;4[Z2WOI$-]--:34I5!2O%)O-(9/JBV%YDG/ W+(PG+
MISVY2<,1XPW_L5C#QGK_OT0@_O\#_[,&JO]58>_,11M0Q0^(_4^V69M.<--C
M?R9BQ-0Z3B%A4ELNYL815XY<]!9ZI6H;U:D_&SD YGFBU-'4MUC\K-FD<_XS
M3\TPX9))C+$46H]<RI!G-?Q2X.7-^Q#O59-^W[#LE#BNJ^I[8TJ="K?1"M6V
MRGLW7%==.N1S[[/YR^>+H=1+RN+7DTF7/$<4N?DP%CFA$H6K;-$O3-1L\;FG
MJB)%L+"=W'29<X60C<+J(6X$]BD8G &N49CG9AUA-^\MKKS@"W^FRJEU?WWD
MZ_MOH+>P9"K*A>$S@,,>0<BNXYKX#NBJORH!7F3>W<$<</G:SR=MP=3F/R6N
M[OS%U U-"5"NXG#4^#%<%)Q%60SBR+QPG65/)K]HKKMSRP+N)J'&4*719^??
M)2=/+9:)+.&^CK4+5>8B&+6U<-/\%:MH%'A>;2(J*KITE5/P(=7)/_LT-?CB
M(;5OY9$7";I/Y%\P7+ON*>D[FF846=4S8U2M+I;</A?;*K$-CU$T;]>2[7SS
MZY6KG^XGCH9$"C^" _5[80^M*;#DA6<A,85T(*7P2.Y=IMK+*T>?=*QDOS[H
M<APG&)X!+HZ1*\\ ]CH11D8P%L4'B'5/B2!R/@;&I#ZB>%/ \.6NE=H:;<;U
M+,V/ZN38[ ;-)H75P_5>N>MTM+<<\NXRSR -RT8'I.<EY_,6973T*N[&=DTB
M&$?=$N)>S'/O0%S8 ]+D$!_!Y<=MH.E\=".\#1AJ1CL]94XW.DAPV'O+<SG+
MKGEA)Z810&5P"7!C(F*-I(;3:@YD\@PQQC'>L=V"7K9Q#;ABL4AV@WRT(VE\
M[!L[X-QB87?4KC4HDN:H/G>W,70/[-E7-C62<YW_<F+.Q01KIFPMF[AIKDM,
M*^S'.RH_.^K$Z;P=36,=H'Q7P'N)/>"4$K !80?WU!+.G)92"=B].34;-#JW
M4DJ81"L^/DS&(N^FYX<5Z;,H%:O2%9T!(M[1!Y:^5\Z_UBK?>=O*[25D 99=
M3]P. *IX,\<2U?R?COY)"RIOTAT;@E8BI7@"P^HR0?B<X;>M3@NLM1^/_4R-
M'A^UN71MF2_#-,"TDNFJ/X5-?)03'7I@RW_7@D]Z&#ZC1;> OX+3*%N0^'(2
MT""[(;8=57E1JPYXA>!?NN,6. 4Z;H63T[$EPGL=(":*X)QT@C'+\><N.A<[
M-I,$6 4+-?>.!:?*8=*B,Y+^2#$I\WG;S4/=/.9LU#L'$:3)$_O):ZVFT28'
M&/8\[GU?,FIU^%Q^C!?/L(G=LTY\RB3&$0:(R8DX$:'0PLX#@E!)SE?D.P,P
M4Y@=W+J6YIDG4ZQ?(F<]>R679<DRNG"Q6$B-M[!^00U6H ,1/BBM+C7P9'3E
M4OZ?9&]J<@Z;',A*Q+H-7A$>79'Y9RL)?YKPM-!C?_E<FB18'^B;8^U&%C@Y
MVAE_K9T$^%<SL.!SA%JZ?L6YA;XPJM:\M9LY8A??P<WZJJ;\;E&P>[2OOB6[
M7N2&8*->G-_#$ZE1>](&.>P\??- ]+ W199/T<@OI-O@+XK2=_L4?:4[<)5P
MK=KY+]>?=Q/H!M<_4[MV"VN](^J@NTC,"/Q#7%BWXNLSP%50*+_<+9G\7'+V
MS8"TZ=PW2KVTPP0X]AH>0/Y>R8%D)&D3I)P]ZC>>5Z=E91R8#_#E_PXMGA.-
M\DO6TUAMX,4 2;>L\2\F/L631,BY_H]_=$_;5$]^@%:K H\?1]_F\8OKVH),
M(;IBL^T^>P36Q_;_^(0P%!#R,^G<G=VO.MJ=%^S9'1]:<Q:G(O/4,-SXX_,F
M3!SX8O-FW+@JT7)?>OV7AEA2^!R<#N8(FVY;HNZ@:8-$+["/E_#SJ%E#BU3O
M:2C1Q+6K@YE*3I%,%.DS0(N\L@R)O8);$&OWI2*6S>RIS%/OMQJAVZS+\L'/
MC#;!*ZGO%7 337'DC\C%8F-?CX'\9L0LC7Z<T!TWEY_>O8=,WE.N=YJ&>$>'
MP/C1^DE/WN :\\]EJ:L9-.EZ_1OZ%#ZA%PR%EX9GZ%##G1*;\1OK*]S\JS77
M)^0AK"O[S8;P%GDAX?<!"#&6>+T$7YDZ2J3N\^J:ZOIJK2+3$9.\1[@>CLO&
M>A)7>(.O[.D@^M(<X&7\:76T(JFX_ [$96].*?:P;(%ZW8[$$N[G9X#*:1@#
M@7U-]!_,O=07Y)>]^1)N\,P5C%N$:9*(LCCSMHQP"9] L&0>;9_W 22Y]X50
M 5)(BA2K%Z:5AK$GFGVP64(A\V'?-J2,F>R(CTCB=<W)9FD7_+3M!"B]=.YP
MAG.PTS+9&8S&4M;ZXYZ1=W/^!+$J?:7O\\O*K-U8LPN4\G:(6ZZ4!.T(&R9X
MA@I_S=20K3!@:$1YV1?/JD\"O[XE1#W)V[;E.'+(;;)3P6DMW8M?E$M_/EIE
MN?D;*<IV\GI(U1^VKJ13;7;R$!]"_J5X%5L\"2'48NJ_["$D)O#,!7=K$Q^O
MV?C0_I)O>5.4)9EV,#0SBA\:5KYRM4$,/1EKA/-HA7KGO1^>VF6[]<(]KIVK
M13+NBO5'U5TG_+TS0+"C=S5^>@2*M(?-0#MG\)GYCB.P]M3BZTY>!1]=1]\:
MV,9011=<. B)$HY>H*'VENP J[-_(*#:9RHE!MDC=8!AH>/.AA06QO$3L_&)
M!*@@:JKS_KMLPJ 8[A[\^NHM=,SU/,ZW3G8[ N+HEUJ!7A]JD^:^3&N4>*[L
M*N>KG3^_GC*P0-VQ%]9$14B&-%GI+9DU5%4:@K>SV8+)/LI'F4LZ!'&U#KHG
M(^J!('^JOQ6%*6_D*UVLG!:SB+H\/228PBFP#895@4_E/)TEY[_&1-MQP2HJ
M]^N;D';J2,V=0RA! $8Z=Q,Z=^*8#BO9]JT6-G<&@$*T/_"]GG49*^'8"!8A
MBH??AZMF4?4M!7>_-\OX=E0!]ZDU;(!G)*2>R(B+G3ZQ.[+ U1:S.^S9E#2*
M:<RN\ 4Z>8?@SZD\^'/@!'MN%B=V+;K!M, GGT85*Y.%%2ZD,#-'<"63\5!W
M_;9_8\6Z#\!+FW!N#]@EY9A3NG+'FOKQOYL2)["'BFZ=EM4%E_ZL:,RXQ7^$
MO2$)Y'N+/!G)&5:DL\Z;GFH'NSOD=G"Z\739Q (\UT6TA_F><D:PF;Q.B H6
MF2M>LAL7(IL+]A:\_'Z88(:4\LWO_0'RL7Q8"!U;S5MT=ALY[?1(FVPW)DHT
M)M@.E]C)/U0RS/!<#W2G=($J;4 <)'E.K^HB.\P\FRXB^_.V)."1>4K7#[DY
MFGGKF%#W8^-6\!<\\F8%3'@G3NG%^*/Z3VX-'PX8?;DIX=BAY:&= >S3#O ?
MG1U_?RULGT=,=&'_3'6HC:&R7OO E]]3-WY%:3(-^E=%99DU=1*NXK[Y.RP6
M4R]!@OGO%Q_>C?([]I&\/2M=?S@XT;U,UVOXD2H(@8:S*2H5'[[%]"K"6F\F
MOF >L&DL9MTZ,HNK7]:RB5_%Z^3E/7$QNY6\16%Q:^*-P582C#^SQT"#ZE9A
M^Z?75,"RU6"_SNSY/'R T7AEIL"3<B>RG6[8!-,6W_XET M?N"-N[U;@:-K
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
MOV^'P284#HJX $R[!J]9*6Z9:#D;QQ.^%:8A'[18GX]Y3;4:P_S9-<2B3G\
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
M8=T,]=-0*'FOI*WVG'@>20,]9[2"UN9!J(UH2TQ2'%L(]I$M4I^''=I[[5)
M;M$STWYZY=/9OT=./#QYJI56C)N+!7XPY\'8[Z!J\I27!&9_5O/U4^1Z,Z=6
M,T>]#B O9OGF@?7J4R97<[NJA!(*O'Y;A*&)LB'PPG(M,=0U9)L&@USF@JFO
ME4_2Q"GZ-34CVF?7^28R'6/B_[$QEQOU%;<D&F)Y\!BV7G(1_;R_<G,X5NGJ
M&TJX:6@J.65-X-,K>_Z-P'#:C9<N"*6TX=Z=0\1KW'[MV)UPYT-,C\2STO4&
MO;1/:SMK5Y??PL.\KG2,C3\L>_55*5OQ\]F=(RM#9>8.MUPN]BAO#FX:*;RV
M]5Q[93UAO99>[%0XJ0L_YL2%/>;(J_^.$5 '==EK?K5)\CK_FTW-CAV]HG?C
M'V5(80M0"O<<Z1;P>\4>Z)]?SO'ZV)<2$,X2@?6KHX.$E=5M.*G^5NA4V@5&
MD#L1.WZV'M @?F=7-:[B5W60K*!2KO )3UZ(]'G5OABE\$[BU.<?^JN=O*1)
M\(N?'MC!VVT+DE];OC<#:%V9:=K,%\+!=O1/[HX[?EWW<3]H(^$]$"B;'W)Z
M7($&!OBQD%.:G/F4:P3?W)H&J_BB3C='$$U@X7:>5*.(<VY^BIGMQ(<XX%NU
MIU7QI331I0O3\,#9K4.4AU':59X\TTPC!4.)&D/WE)T;NCQWA?ZS^[>!<R $
M&!TTO8TOVL2$D+4B>N986J1^(C2S2-%  6=,DS%1\>N[!L)LC&A?@EK%M.:3
M,J572$&;%]JVW><$'HB&]$<C"8:024PGJJ9_BXW  -9<$7+!%G8#FM+SQ4U:
M1,Z;0"<:";>9_3F]'NU5+R?9^"CX^Z"XP"\^ ^"<^0WT>\S\%PC!L#^2$6*A
MD,DP&D]1HLJ!IA;>AY58+7\TN$9 <[@0QG.Q]W*(F$]3:=2K(\Q+>LR/92/T
M:%@&3I^;0M%.&I(#  P)^J>0KGM#4>QF]982]E"'<GMHFPZJ*A@NNYRRZK$O
MG*8S.UT%/</'&5]E?:#OLK/*1(JGL7@%D U[R*<!)STJ&A'DAT]^,<51BY=E
M[F@YWUAI +X3?LUAY/(#E.>E9^CC3;HPP8!S/0\ZDU>2*:(]:-HTC(D.<BH7
M7Y#"RD];=(B!";G5Q!-SV-",)Q3IH@OIE;;]+D%7>[1V'ZM\WQ0:R=-O/A?P
M.F*5IS>B$:$.O)H')X@='=*^2+E,C,[!<W)XC7'-KDZ-I?I7VCG8?55,T5LW
MN*\/!*"_]0.:^S3S&S@D64Y(GY:EX@FB6@&AV_)/_#4D'G^?TOKBZI1B]KII
M?$7^3\/?+J"8;(ILN]O"CVP[S0!S\K&'W<^K^NS,D&<HH<3D*'3F^-T8@R06
M.0N#FKJ_M/+,1#R63<3 _ ^/WV]Y4+O:CT4?2$WQ4Y^6(W?OC..1%&ZY]=]X
M3HKH;_+=X.3.4\X-@Q3>LH)4H\>69^L'-A]T#QT%D=YQ!C#47[P:A"3<A#-X
M(8U5D'P*=7H2D#<BYN0^)^;A[%?BMO?8Y3NN:@W<KXW+J.PEA0'YNK?J$DH5
MLD.R1A1K1\ $"QAP"8Y%33 P3EIQQ%SNR?3^#J9[ YO"N+2JQ1<!83-Z5TB7
M6T__=5-5C>-=M,+-^=,&:%D&TBGT\?X$F8\&"[DT7'=@H2B3.DA(P&"W\RL#
M#E1R=F'$,?/H.2Y-ES)&,*C!?(Z)V?,JSAS[Y3$5X*H.<:S)'1N&&$C>U_K(
MM!=#LF2LX^Y,Q"#R\X^GQ#E2'K!//+]!2@+B<>H(0[5.+WG1=2MH!,\(_!R_
M:@V);VRXVP<.]UK6%ZRUIM2K&M:=;N5@F"0#/A]7_D<!)3;J6X3N?/_4U6ON
M+8H(8:(,8(<WFW2R'CN\)??94\SVR9>WB.)7H]=AJK-6EI8NYJ3]Y[O7Y$\!
M^D:$V<RXFJF(G./5#4777W65O N[STHQ9BPW0,6X3YS&AB4C@V7T'F1JSJJ/
M%P6G_H(_[^1_A3V0V'FZ:0**P _^Z?3Y--@..K0+F9[#\Q64>7+97<\]-A3T
MIT'*?F*WEEFUNR>J6K[+CMUTN7V:)$ML'GEH2NSVX^VKF7RM<*3+[CV3^(:#
M*#BN18)B2RW3A%ZCG!Y7CN]-YO0H]+FPW1N"XXI]=NW*_;CDNB>&3&==6]P2
M*N]M2^"R3:]=; _WXCY9Q&I8_?U7ZJ3J@<7C)=MO/XL+?P7,7\01!>HLT-H&
M:J5;5)_%<.8%U)35Q?TU&E/E;&AXR]H5[8\Y9J.82X3D.+"(<J+06C58.#C.
M:YJTYB/,<J&[8O$8^!ZGT< 8QFU[JK;KR=3:E$E&].7I&(]/E.D/VE].6!XR
M4.!32_B?T[VJ.05D:"+%K<S^6LY0(:JH6[ ?F6L(AMA74]:B"/$=,.XO"MU
M3)+_1P=BN[F')$W&@6N/NC@UG'OYL'CEK94YL[%,44A -L8437#XBSC''3'2
M(E/OQ_R<HN;H^H3H]_':3R7.P^5<:PLZZ"B\P-T#4@-)U%1[4#/%_UQ94 YT
ML"?K,/KI$TO/V:>O8Q]E/Q)09Y+80^=KJI&9*:"!FAQC7/>+ZF?->Z+W/ID-
M<5Z&(G&89Y@3%,FJ55AE^EOAHIE,>VWI?#!!0TUM U:[*,8-P+'*"R(GH+I&
MUXS,2:F8B-#L'8?8_ 8)1"=B7*5CQ*_4P9>JD9E,8Q+67_':=^N"@FOFMFSP
M_'Q"L&2)2'"]3\'JV+K^L+<NQC9A UDKE8P9L4<8-B4>QCLW&R2/WV>#O5.U
M+>_*XIS<W3YB!A=8?5EREA)EPF"#<F@ZZ&;4-G6W^I U+J["5D2V)B)<EWP^
M8KQ%_;791X#9\DUJZ@5TR:W(,-KA;:31:A4,N(#9XBV>7^<7 P\_79?;DWH
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
MQ=Y[1S7U=>VB04"D&3I2HQ11$5"D*"5144 18P6I40%#$?)308*$A"*]!%#
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
M6;B>;T_K(F>0E(T"AL*GCN+U7Y*/UJ2*:Z7?C#\7D,<[6O/G7<:S<:/%&P-
M;T*K,:LEN@4C$ZC63(C\F]=31&BLD?SULRS[K<6@\-LE@]R8Y/V2,**=:) "
M>)' [8/S>Z!I$P?*YB6ASS;P"#N\!DR.DJ0FB+;B#TY<2!@HO""W1RVS]>Y"
M*R=G[X3<!]Q&5I68\ [UG1EHIOYZ#C<Y+)+!\#>)N@HE:[Q>D1RX6XMFJ-J^
M!^_&R'8 :'^#>XXBL7]X0X=U\4%^AW\:_];Z'X-Y&&&J1#1$W,Y%"50P'(B@
M9_]U:E^%3?#9KK>1NY/V/V;,='DF+1P/^OQ/:4K=T,+"^T^QJ/I-V<X2!#)7
MGY<*(?%]5,B"Y@PO4YB(7$_8#7H #,[6%L#L9MOF/I7"[5SY.*VBER^.)!P(
M_F6J<>%Z;(^V\1Z_?M094OL.D0PU$W4^G99"J9=*V/)RE!2DX^X.Q3FYWO7H
M9N[;]2]<O,:/)C\[7"I,&RF^GI+P ^,-@[W>)/[H$?R]&;@%+5!C]C*!DQ1%
M_#>>BY"*5/0"96=Z.X!%CKWNN^ES)K]E \O4AM]5'^WG#3O8.FG7J 7T/WWS
M3W_JBE,O38O@!QAU_OF-BX6BPKVWS?#JVPN//^%SF4<:Y!3OV'?W%_5?R2W:
MHWVJ\1OFMNDWS  )-)2")B*+"?CB)K5$,A&L:,/TUU;T[<"WSLCJ)YM'?SOK
M#[N?>9&8K+3#Y4FY*=+-.DHB^\K?EOV(ATP 5R!0->,]@'SZ"=YAQKH+P?#J
M^+L^[@K;#.%0$EBH _R^7W+C,N+2)ZY=KFWK$$[JVJWX:PUG+CA]SUSSY<<L
MLT12<.G)6*3M )2\8;FT"_\#+]/6%K1/B]!\D0SD?@'39D(;,)?F230,8BK_
M1DNCL0"I1W-C8E4==:(!H02&Q7@.60[V:S)D^YRN.AW<ZGU#-P\@"Y3-1!MZ
M^>BU'=VKL$!2&D8GG#SYK:/-(GD&G7I^K&W+#\VR]NT+GAY#/V?9]]X'-@R9
MW&V;O/JH^5CQ5:7,.@GQ9?.VG6!O((H%R<EFX<-6XZAMPOMV^E0)L)@3<N0H
MM<OG^-!Y)D ^]Z;LZW#17:G)L!,<=W1M%]%C(N:T2,:)OYWXD=98,,^.X=N+
M!A&-VA1)A,\UJ50"VH_UZQG3^\?\3?L2.;/0S*HEQS]GZO(D':>Z*/$$18@/
M0]RM_7B;!FCL"EX!YD0;]X!%C[YK6MZ\[ND(\8YU' ;CW91Z\&&5*W-Q?F=A
M,!6Y$U)S.@]7;MKMBRHC(*M;AR^;:AW/=34ZE.3,N184=C&3L<D1GJ=X3\+0
M<>27GY16 6H':<TLG%48@2B$]#9N;I#I@>_LI0 )!.0+E#E"'@SL"_C:T0L:
MC1J,/IF)MZM[OWXO91PEDE;E'R5V,:2Z5V$IQ#7<2<639Y)[4+J@72!1#HSC
MPH\W'V"GS&1=3[/TP%5-/;8V[[9(>QXK? CS_D(>)=6LS']A#T[ >9Z U/Q;
MME?.E2 666;BAVMT4XCOH/9^='@G_Y?+UZ/,!>= \2%C[HQH Q38QI"^)?$4
MTE=A+J[$%^#7P5[/Y$2SG2)-//G(D&7O8?[ZXJKOM;-6V8VL<V]QJ@-U[V1^
MPJ1O223DKA\&X/.0-)+P%5:B_ 8G.SGDA6\ED'T/M&IQ=$)F5/N'P.'](T0)
M[\.7Q*=D$]624 I1V7?>;$OL+_;3:9^4@]GB0&B<;/?TMMW0UU1$MB"ZW>KJ
M)XQGH)MF?_;!DOS&X08O6_ZMN)&=:D--@O5K)T8TMYD"M P:*YTB9B8PLL/)
MER5BJYO/V)6.OOK=OR=)AWPGBY@!/V@\+W0Z/OP[!AECY%:3-#LVJY;TE<'9
MS!W06O<\HS+[W8'-">WKVS:O'71<0*F/%"@G=_ON!@8%RF6\9""1TH'9-'=J
MSHHFA]R&/_7K)+GCQLU8::WCS?6M\8Y-A&U62PEQFAS7[HE8) J, JZO=)"
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
M2$$T,5\=7.<I=8">T6I=;IE$+?V2H)K&%OMT/S8TU_@I[@[L$_US@4"-QD,
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
M8_/UR'[^1$W+TEL[R2;TSZ^OE$72-7S(6]L/HEAQ%,76:+[I%+%/M M<X=N
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
M"WDCI:BFOS<;!PVV1UA3KJ7HY1Y0\GGSO/^U@M@OA$"QC_.UG#LIVGA2V"3
M<*W\S%+"9;UH\OA0HWTAH5KH44ZMM (J0B-TP7LF?DC-KL:(3F/]1"4@5=8$
M@L0UKE%7YJ6.K2,B73SMT.BR2VUQ?^JW5^3C.6>;%P(7I8T_W#[E>$9Q4#3!
M!%S1D\J\?6M+21.D]DLTUCV,7*AH<SO'R[$:' :23'RU9 >.2NMG[?NY\_.=
MY[A6!XDOTM.FY]W7G<W+LZ5.5K '%R!Q(MD,HA\1>ZU0M61RFQ1AQXC ]<(S
M@B>WH'N?Q63HT6CC(X?FG@3E6T5&FAD,':VI>7&_+VVW^KJ#US](Q:_M4!<9
MXG_-N LTC=BD-)IJE5$S5ZV&A8)-!4?2H\RG^G'UOZUWHMWR2'@T:5?A[[]K
MASQ7 :B$UMUK_$!8:&$BWJEFE?^/0!<8G7?[,+GM[,O[KO%16''$G*Z'?PZE
M''O)R(#^G@3XKL(FT+P<X2,4ZR[$4]KM4.>9XXON7/1DT8?*^KX^A-+W>V$%
M1>-!])/.C?.X1?;#3X;/ Y_EF(=F*['*/?]JB:0OTNK5DU 7S9*@4=."2!/%
M/F HAYH\+?ZQ=5_Y@6<AS8Y%H>4NV,#\@2LAIO>C_R'4;G'7"TB-N[T-7M\
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
M2S/PW":AGKB'9KWRII<B0;K$+H'EXCE8OA%U@V>!84T+3Z?N?&IBP^N&IKR
MNN>^E^M2\1/)80L^F+^BR%J.@$0F"^D49=B;-SVG!290-*$\!EU]R7EMW;4T
M;K2I:KBI< _2IRV0_8S/M_P0R!15^;MOWZ-8P ^?1%$EZT%RY; --!AL>O4
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
MV+__',53A(@"[Y#*?776>N#O8$)U'=ZPH%1B.V&?N$OIA0V/+\6Y!5P^1<A
MO:4ML&82-7YC@/UE(1W%A+H=]4?S0GE:]L/.;3.E615FNYVX9WUBM'!WZKS+
MWCU02'X2@H";6R#T;GL!AAH0N@!I[Z(^)^\$6;"BOCWO3ULLT5.MH) M#&;#
MM3F^)U1'S'/?S9GE*<]M+CK5UK$39VCOOB=@C@6Z$J$MA)47JJLU!F!\.?3O
MES>8UXX7G31<:&.E4&0:E!M&D^9=VV\&Y(@YRF:YOS^Z?>T6R1VL?;@CHYP_
ML ;'_.8RYBR SE<5#E; LT_<&J%L)+5UJ-RO_"'[H*;ZXMK9N: \W,7-3C-5
M!4J&9P*NF7CBV254T",3,D:9;Y]S4BM.N44)-H3RV>,)CB=$^=?J0/??^E?:
M U3XMP@&RG7-]IE?4HX$FE]CQU)1P\D2IBYC B<\1O#0M@RJ8-]9/(ZB!_OU
M9W-GIE22#3?5Q?AZN)25>'UJ/W+U^(6Y17^,S\$0YBZRS#51U-3C\%+5F2C'
M7V.I!7JV_:JNU<2"+=0G7N]FXD"FK]TJ^3T,?55:&L#^"HQI=0*UXK"\.1>;
M:*W^P^2L]48PMJ,D]7+OW@DIA\NU1D[O-J?E I4.%]\]DG__HC"'</7C/BTQ
M%_%I.UBM7^ &Z?/1:8D[ &$9:H>JQ HV0:<,68EDYQ*#^/>U6R\8C&1XEG<;
M!B;)I"D[*,J[3/WVI^^RUD75@/Z/Q: Q4]V%U0 ["U\S_UA@ 36VK^OC4L7K
MDJ:&R<8OYR_.I@=]B!,S>#]^8?-C_&NOJYE!8!3*@ Q8F2A7YJ@('P-$0H*_
M2O^G<TU#%%GRUH>1C7?_;<^8/MY4P.Q_]^N;E/?AG,7KUT)6.4/Z7>VB/#M$
M(E_@3MX.*97U/H.HK2RI)76BK$W)?BVI ,-4/Z?0;R(5);L.-AXH:GC:;GL[
M^GEC%PH.A@C)_BH\%BQGSJ$G5DL]*UA@,!=N7HZ-T'O[WMRXU(^U[=7L$957
MYK"4V1\B@W9M&2-MO0HVJH&LP.FVR:.I$3IA"2WU,<^7)(JO9'.__0Q-=;AD
M.6#1;5"I'*WQJ4)[M)4J1F>GX:NIL$(,/X%'[<!"V@MS-AS\.C(>2B 96^X'
M [@E"48UACJMWR/&K=(['@Z9V%:;;'Z,8%[,Z1W\)/*K!%9"9^1#%7<!VBO*
MWY+#N2%-/G@Y7[TW9%RT*=3#Y^'2^_<0@JLJ8W?/9<V=0,GD#2R4W,A7PR^M
MKE_&]/\9_F,^2T,5;YK*H<[MX>+'6?PG4!FVG9Z.Z/1K]6\>+3,UGNW5;5/;
MN8M7'.H1;M G'=@=G.M=E'O X=W"^4E=@3_ 6 ^<Q3%+$<G]X PB:4JM&TVP
MM'A!UB5-@<X)IR$MJ]Y'-;[)Q3LFWC%_-K>]K3(E:E/L-ZY*7O_MVG9TGF??
M8&$YYZY[&I:NG 7A'AO"282QPFJLK*7CES$'@]OH_T+K:"M5RUX!#!,@!("V
M.<_2PP5Z9PDU"PF6,AS!ZW/&ENY1 6 N]]^,:W/ME9SM53-ZM;6SB&^T;> M
MU67,J*P]S08R%NRDC!%6TT]/J/!/#N##G$4F23EMUANJ/IIB-?S(&@UR72A6
M,\SZ5J'V;<OKUL[)T^^SOAX]M:D> ^$0Z6?+F-M^Y'W+F$H!"N-^Y!Q\@:YM
M9TVV0GF"LX^TM*;*[9<QM<STV)482B_T8?>33Z*?5B3Q=IS8''#.2H&+NP[O
MYZXW&_L]UJ+<\Y0U_A,;+M-H&67C\="R,A?\JK9FS]'U%\-^+6,0F1XH0.##
M0OKQ-7\Z"&..4U&)EZ/G*#L<2\(0&1XKJ:1E()+4._)8VUS*L)KG''I);B=F
MZKV=@[>/Y8U(S&\ZM*>'DT-:0"7RGY-=%5!4$#8]DI \NBO+X=SKN[ZVS[]G
M=VEEO2LZ\JO%&;,>&^"%;.*5/P=+$:Q3-5[92)/EQ*.VW;W,$G4F7>G<'"OZ
MU:M["AL=%JW:Y;TAHYB^WWHE[-#<TOL9A:F/+J_*J#\T^.&/AZA%(<Y/R%8#
MEGL>=9>$:$J\BD6BQC;=#RVN;[CML#'FN9]\Y<YMVQ(Z 5B)B*S]!38BDJ%$
M#C99S;.]UXU#[5A('/T1 _[B)EX_6^47NJA=NK/#U#:G[^;AU,W7OO?7&[P4
MM2\7&0$8P9>IZV8(H / M.[KD)*K=8[7W%2PR=BYNN.40>TR)O-!UA1+"1R%
MY4;Y#M!^P4& 44,1$]Y&<6%C8[-%*UVQ9GR&(+/S7?\)'\?(<B>=_"V-=TYM
M2+\8%]*S*F.+"R/W0,D/X"85=*9!>E%S%6 B=BP5D507G":M(2;^^D\VS3LE
MK<:K_$.OTM/8<;:W?"?\_29[-&X?LPP9*'LIV?>NM+,H9<EX? J1F,;-!0J4
M?U KIM_04PA@"0=$*AZ=@-S\/UX&K*H5!R).%8R%/_8^S71[F^ZRH'XE_L..
M?;ALEH+ER@&@QA5V>=D>#N7@4FKIU?C9I\63MN' D["W'=6^>\[(%1FKY^4[
M21-.6V(-R_^X:4='VOQ#&<;J4.@K"J&848C, D05'"+C,SBF> U8L7:T^AE-
MUJ"?<27WUQ-[D8U[DR3?R._$ZE0C>U<V;$!7VK@Q_TJ#, T?1F1.<1X4B(UJ
MU=;P:*E-,N#/^;[VO<(T$^UT>3NKV=HK\N\#7!9?''XA=2[YXJX_N#H[6"&_
M U=-F\6BM'=6^*#%- 0O <O@$\+)9I%;1J\'C1J=&IAK^?!J/TKKPCTVV(GG
M]FY^[TU(3S.777<)D9E'+6P[TL?B;S%'[GSV? N 027PO;Q.EL!8A?HOHI*&
MHA=V'K["KF,!TBV9?8Z2S#%]=*6N/I3,4SD(QI;Z0(3C%:!TPY8O+I:_CG1?
M/%IX.8?]3DE2V^NX>EW._;^%?#W4)%?#1X5)]!!C]<_DK6@S"2KH8>/3F_Q;
M-@];8W^T*-?&?5L,S"%?J?SY<L'@/$9YC_6'5\WMA[4N8KHQ?U,1B1B.\]@E
M;A*L8L[G"N\ YY8Q(J%7:6E+?<E1:BB'^U[37;#'Z-SFUXVAFU/7-7[R^>SU
M[L7.(Z%:(C?,_FGQ8A")?M0H[T*[[YMW]J7@*XEQ(PL.O'7W0CF]AZ:=8O*?
M+5GD?S]9F?+)Q"2:%JF]Z< R1DZ\-JP='3N-"A+MKN-7(J_65V>.*_ IT-)S
MLAHT5FBW"J<2JOR!=_8T9G53]M^='0;F._2..]YEG;<]'GCRF=LE/F8%3B$#
M@ 2R[3NA&@LKYB&2&MP%)K:]0"8X[XVFQE#1?4/LOL80IM8SU:*LEE&25M3Q
M>\-'3GVZUEMS6_2WY/]BO>C_OU_2"RHD?"M!UG)'+)NJ2?(].O([_-A8V9*5
MEF=EQK>1>675D*\I^XX=U'KQ:N-H+W4M2K3PJ_%G%A1_%N@(;[1H0SWLX8*Z
M*Q%+5#'H"H*:NC3+3U;D]H^&-+>R*EE%A2!^^PW7AX5*2UL41=;<DUFJS2<2
M7Q ,>]^?W_SY<Y&U5^X^3+!$3K5"3IWN^DXGY_^^?JS(==[./FX"NG[,AU/6
MD9+V#=3PQ_D6"PHA@ZRQKCX+=AQW@I5Q]TX8A[BR;2_'^L_Y&S_RT97S&YGC
M6JW6EOV4;5"*85C'O\BN-O54J6?SP_.JS2]_/&\XJ/IYE_O4+7)IVLGIWYO_
MUTMP_^_KO[A>_%&KO1,*A#\]\?,*[X0_4;"E.F=;MS4C[U/1U]HXB:Y]T:7_
MA6"=<DDG77Z]?R:U>O4GZ8K=HC\=,+&A__-"PO_/7Q[-(Z;IN[XQ^UR'P\N^
M-=_N"%;\]<)T<;6!J\B>(*;$F^XWNC48[_\KP.Z^3D)Q6.2=(RF/[XE>%'DK
MEFD3_Q=W./*_CF9RCYGP/3P85%L[%&D1$VVLLQBN=3_P4('3T]J-NM_"7W2)
M/MAJ]:+C_X4H*C]Z"F(,F3#N-X;<__)':F]G^<$K7Q.Q1\/>?H#BM3E-N)%?
M?@?UCC5DFGYY4KX0&#4\)NR$R$9:*F[9:1L*^(>G76W/T\%^0 :8_HF"-Q$9
MW'_9(.?!MGW2^.\7DE#$5+&,,6D48'<O8Z@*@GL3KG[&L"FAC?#W7],RYHV-
MW7_=^*^Z;4?:/N"GVY%O4<<]I98Q,BK@*$*AX4'9_O^F(7>I#?MOPZF576K@
M/?[5K\R_//SKA\-*K:AKLH7-T#N7]L%BIL!_U6CW ]N0)%4 5L?]PLY:3B%D
MY_G@R/]F6)&:BCS_K"FK39'-<E]"U [M.^-4HD53FOGR()I!=DC[5^Q^]QC-
MXX/?JP=G9LNBSO ]"=%]-WLN26^QOCKT5*F&63&-J\F;C6$3F#-OZOSE><;M
MA)O^\O2P]1L'8 <4\ZTK>3P9NKCKROLG Y=3@MP^C&7;6DEF$1+1H=@ D&%=
M%_U3"?]Q'M\07:;NP"=XGLG6ZN0#/)G?A'7(-I+ M8#KJ-\3\_?WH);?9XNZ
M3SH% _;Y1AZ39R86"P\/"V5'IZ@,.J1-;Z5"^@18-NDPY,85#2N"9O9!R;PU
M DY7FG:J83$!IWQV+/'8HRJ?OIICQ]=_S\;XF]+*=F>.4E4ANX.\A<2()EVN
M ND<S=T#F!4>C=GS2G7[N%EC4?*[#/?$0W8';"DKP28&^&!U>SR*$IEEZ(-6
M<>G)LY0-\.F* 5BTB$3E?FN.#2[TV74O_-G=W/6T];J:@1^/?-"VV.S>9]S8
M1F=/L"!]XXYPA2ZU)%B.B$@Z\YNEIG3;0L\,P"H S5$P$30P<4E(U;[!]>;>
M%$]TL:^O98C=GC >Q8-',O]:&8]'(3TC#Y<QSS[D[<,%CW*F8>4V1,J8Y\A?
M*<S:05X_2A9KJ(#PH'%[5L@R1G%):DM ,/!\1OGQPCDJL<=TY)^OG>G9: >?
MHR)*_Y8$IY!!:PEA.A#8IX$, ;(?YO09FNJOA[[48FMH.K;MRL^ Z:)!T_,T
MP3%#2@R,:E[<'JAOJ@^65>@ 1*UU0[C+F*FNM*^-4&/YA"H &&=$K*<5?!)]
M8)[=Y:@1=WGI$7:HS/CX8&3OSG&??AJGH:KINFYU0]TMRTL'?ZX_X77^W7XQ
M.<::EKWH#_-7SB1;;P(8IBO'@EJV"A]1L#[[)G?2A\(M\1S?GM+(7 WK^=G:
MB#%5I4N*KN^^OY2\)W;JNE_\%U2)PISG4$A<BZ)4<1OH$G?.KV\*%V\NQ=$(
MU2'W;$D+;71Z$/_6+?SFSFCCX$VT<CS[,>M572L H9AQ-HM+'].:4ORC?)]X
MLVPJ1L._6]0OU/-C??;D_';2Z6R]=U_$#WRWEW;"D$<%9BMU?98Q <XK^T:T
M&Q1#<ACTF*?%I;8;*Y(N]GDW0[W&'<(KZH+4_+ORIRZ<'AE-5JK&U"\6'MPF
MNS$<ZGZ*PL-12$;@A[S'@<<ST^FK\2%49EXG0=E2-QRL:LMC248N8]0($@NG
M!I[2AUSGYC6.2T0$W-?UO)N^^"SYPP1#Y9=*&V$]GOV:"H8%WW3C_.EP7F/<
MP1KKC91O".]Q,/VW]]#"+4/BJNH&TWD'8?N[?A4CCSW "&X,#VWI@I5B^)M7
M$L.0COWBCLZ",R70N-W@XVH>,=%L?/>3D>IGWF-94N5D@=NFT]F'.G923F8<
MOH;]@(,L]& 785;-2I")/#UP@4G@3E\W(D=Q90C.O!/4I!:#L L^DV*[+MIN
M?A/Q_GSEO6)<H[O8;C&-TLR/W0 [%2>^"?PX8(H;=^/3!FIL,\]1ME0*GYKQ
MFPYUFI_+C:K3_=1Z_%] "KR,(MGX(?J78\*[]%G2"/#;GTJH'Q*![O&F$4G1
ME9SOZ/?1RY@P0 +2Y;.A_F>4C_0JXTRBFH9*Y[^6/'E2O*UDS_2A7P=%<K\I
M1=[JVGJY/DU!+B'^)5#M+X>.LBF68V7<Y2\U,K=DA?,9?$0?B-3?(]H1%6X:
MIGVL$-OT,NTE]KPM)0P5\X2F.-B'BIF=;JW%6]=(5)@D!7>IK2M\TGC]M9'F
MS&R:Y^>VR.W_@IH)B$PMCY8,HXN#F#TD40XU1)]IB#\P5/WI_FD'Y=JK'4M/
M7TV_BEM[C;_JFE4?(KE'X-,AD$4ZD+W")^=^+V/F9"XY#G24Q%='.BV\"*N+
MJ&V(?/+HZY\)Q[4;S]SX?(%!N[&R844='^<:STD(C$DS?&MA4>3<@2DNP,A4
MG;![+A-Q>K3*:]+/R7C!4:-7VSPU6B%R;<L!WBW]27H(JG&)DZC(Z\AFPCME
M2<PF&8%Y* B[0!F%WQ*)\I^3#>$]IY<Q$]G: O_'\0PIN3F""/*I$-F0OXP1
M-R7I\ENKEC')A%8",T*EDI<6_P6E4-_L'PVMSQ3N;!*L>S+7W3Z_&D.9'_U:
M-_<'E9"9L' 9<Y8 ;=V5B<['$?3.P?"^S-:]BYVC!#7*#IN0/#?2Z8[-\GWA
MI],7I1+2IVRV?@TJV'V[\]T\_;D9S <8)5?+%CJ<(7W:G"NOL2LBB&?]N.BG
MR0GG/>_S:69?[T_E].VTU:3$7<.[SN'9\3C0V??A:BW>MQR>;D>+WB)]@+*9
ME#.E>S-PM*2^RUR':S%T/ >_2^L@^BAK),2_"+%\2%A(9Z.^%SQ&EP885D $
M+L-GN@-[#:<4D.)\@Z4(AUW4&;4TU^K]$IN-+(C.7;#=<3#;P?I,1DB0=&F+
MW+^_A"0 C&'=N!S3-T9E$S*+$_#5IBR-L[G* U/?9#^/:6>+S/J,&+]U$9_?
M0B+"BG7\NF;A#>#D0@JNICR' ]6<L&%05+)G' ;GS:/=_-_^6/TJ+U3\G8+C
M>K+LE34,\?LL80(<RB4FXRJ,&:R;!68%#I$/ 4YP4HV&OW?&B?F2P?"OMROF
M':N"ZI8Q(?1K!!G@+'#=VA!EY=M_R,1R,M5"S-6.5A$5\[47@PX\G3JGD;VI
MK3#@:Z ;\QK>DLZ^RP*=6&-_$,E- @54P%QA ^IC1Z<([804-0+_6R&MCX?S
M>%7]43O;#C?&#"]_&"FVRS'BW>F3J?7VV2=?W(H/8YO/Y@O<*)U4T)LE N.'
M48LDWJ3*(>)AA+66;I?8&KI=S%\_S?TUATZ]'ACY-N"8IS[O8F>@([%ER[!T
M5F;]AV7,@P)M2 [5%Y3WQ_LU19="T_S+]!SN]"SGPK/F"=@XT'#R;I9"_):E
ME^'3H>86!^(OR2WZW?B\&/ .]P(/.CA#1L&S=FC_J_6U%>!T4DXK7@6V*':R
MZHIK.K3Y_OQ:W,GZO*.-DM:#(JWB3*U;X<=X"<QVT<]T(G%\AM,U:U$"F_<O
M"?(MZ(KP<:CD$<F\51-W/[;R1,W\T_#5$V]%ORW.S7W-/O!IG-Y]8/\M3_HH
MAP!ON"?0(9L. NP7^ KC=E^"'/0^C*!DO=THCZMA@RC$[G,("%M3^OBE1'&6
M'O)^L?=K6ZEO]#GMV+^?13TG -"5QO1DL, #SI .+0TQ@; =UJ:\W.9G8:YC
MI&VX%+RLF;.\HU%-E&J&J;E:0GN58;6K;\_%DW;NQ&U'PD.E7,0G3-'^DGAV
M%J*V4@_HS (6:N/7"1\CQF%4M28W3DRLFQ>4_Y1\;+AZ)EWJ^.N$(/UB'Y_/
M=H&A8O+6G[A>N[;O\]NA/9H-,$3H[")"-2NC!4\^@YJH(S(Y:6J]%2H$=R$S
M ESGH)X"%&]?U^CKH'D)CDC?4E54,IUM\9ANJ&YQC5)\S#[.B[G+0'2K6*FL
MW<>,.W_S!:)DFR& W823I1A1!EC*,,!-)5ZC2/.6NN):%&%SL"35N-HWUH_9
MH3BJ-E)B>.-C+VDQ]::TBVG!09OSG^8MVPH%$I1N%NA&_92'2';Q1#E7$I[/
MM&P2ID7V*K*@0U.=_I9J3<S5/^+6^#HZUSAO^1T3(=/NJZIZ7Z/\_1G,+>Q]
M9 .\:1!9V;ID,XGQILYJ4)7/JWK(]M*S-Y/&O,#YJ@L1OT*S)5QUFW(=Q (_
MUF=>&9IT/_#,'5<[##%XJ5V(..2.KGAD']@!RN-.X/>#2)+ JB_F9=C>&B8C
M/)BHF7^QSR![C^0+3+?VZ !E-:3.BT(D&P5.7I3/E\BA$ O,X0.5 \?&&9KK
MP*X.IZBV/P3YO"M?1^;GPLL#U,+C-ZT22P]HJ#^@DU5X[.8^O(T>K1> C%AS
M8;A9B944"U<@N^?P/EY? B)+FN*^O.K<05/_X:\]%&&6'RNO_:M@Z*RS0=[S
M:96@:*V<.4VGZF1U:6Y#N@U?'2), ?*PM/ EP,ZC5P>G1%@J%<-'!HTMB9P%
M&?+)H4C".E*^[>=6AZ(X[J*74T=3\58)OQVN>I%!$M6BOU>]QF<L8]1;U)%>
MZAI+5YY@2ORF@B/8%?_;,=W3M^5"CD:3WHDXFN>E]!?QN4'NZ[4]O0FW #":
M,"?"!3 K>_ED%8$%Z>BB_1GH*4]YK9G[H3?U%17)Y=*Z,Y='G)<QY[Z+SN A
MG:<E[;CQ'$:#,:PXRB_K+[#H4ZGZ25UCC?-K$>!$H=@_AD_?=?W1&9I_;$VN
M*U+QFO8ZO5@X2?OEV4%+O\^"E500J;HI'+2%T(Y/+] "B8R^>/_5F9[#L ;'
M6,ZYR)]\8/B$P1E2>439Y!ZD6YZ _=SYT_D6X>%XH1 /N8,"6\@1I+<!DDWF
MDETEI.!]50/GM&S?>(4_LG<1^;1Z/^$.'CR1"6WLF\,*#E ^\H&5H$L=7'LT
M;,:C'ZJM"P\X5#M,K_HV<J;VILWJX8<C!SHN;SI^O?#VRV.=*5*;I+=@EC+'
M 63M>#1HQP_[S_D42)O8!2335R.;OD]J-#;7?#1UOKGW(9+))1CI1-7<_X!$
M#^R9L#%PZZK(/N2QY\OHX#*F4KQM 0NOU,N.("N!79E&-=&&"]9RI"#?Y&JZ
M[.2/4=2+C7G\/74IU-1MJW;V^2G=^W"),!Y@S^!1J")JK5TR"_SGG+A2*0G?
MWG#F1V#,E(" [0ZU:CPO=C\WOUJVB#P9^XRY_]BKDWFT<5JB.;#.&%&'*'_8
MLPVF!7)YMC5$*7H2F3;[JT0U;W89$[0(1'V)]MUU[N^5J0VGK^&E42QRTU\1
MRN$U(E*^@F/(![PZZN_[TBF&()[1'-"NK"D#\JMX^800E_TTL]OR1X[Q?*XX
MDMYQNH_Y58@E:/TV0:02T$>,0E4>EG?FAPQ& FNALS@%LBNO=_P'0<92_^*'
M'Z9OGW^;]%N]:7(M^>UUVTU?LKUN*4E_H$JBZM:RC%E\19_[BZ+PI&3ZTK;[
M32Q$*O2E/QR >I)G]"!<?(%Y@&Y2M88S0\['RQ%YX6I4M66H2^-]>NTNJ_:S
M%B[BW_-F5^(V2<.4[>0]@Y25@"'_%A/2^)1Q!U[6^^E\%6>F;[W_#T0-;,]^
M%G JH/C'+QOB3<;:@<I:_K%WBFIL@/V2#AXQSL"OII_")?OKH^(ZA@S@Y&!1
MJ[H;"P14]%+Y'7D^G5FT'P=TS+.\NYXUM]\/G,[>4#C61 EB&4?X[44>N@6F
M[)D*"4H_H7&X8?O;DU?C+#Z*X\$DM#.83]8%Z6EP+\HQ$8W*9A:U^=N;[.!E
MC.8+/,ZXQ>03>=/(.)_4;]JXH-87D3NI<>)B;*Y'G8)]EE1CFFR?3/V5>M+'
MA:Q39YP?YC:DZSH,_-8P&K?Y^'L\1E]?_W+<AP\#2AEZFVTELY[HB;@?QRAB
M,!C)BGVX6SC0!8#,:=PP6(27-'>)386V1<V)OB23P,[X**X<5^92QP]B,>&S
M[\%?S<W-92\OU.:KG]NZ-B/(Z^(:5<E_^8C,3^$K:SSE,QX\O(P1(5\0/@W,
M_=.Q:L9E((@G]O%&^$5UB[PXBTX,QB]A<2)I,ELE0DK6<A19MTY8C&<7X];A
M PFJD"C_D# ATE@>,CD^L*6*-]KNBY<;[XT,*^S6-)8?/WH]?6 AX6EZ^2MR
MPB1'9'SS/RHL&\/_*[R+)^(^*;0Q\V8[P!>XI%J*B#UL4@KO39SJ=5H3<OJ0
M;<8Q46?IFZVV]ZX%!^C #:\?8257,COK$Z&M=;"*^I3SK*%@/WQ@U,!:#18'
MRU*A,(Y_%E?JH1%.F77DE=EDR;-\;ZW<Q=UJI &+*P%KY0]]=3!\C2=*O48M
M(HM:9S=;0T,ZF"UU)23B5%2'&&C7CHM?*)_P_['W87-[[O>&AT_+VC,,RLO>
MCQFOZ2!WEN]HC,H%&&VX5[DUG&7,N#BG;NXKJI5LB/&,=(E?/SP_5=T/BW+>
MOA]MV5E3DWHF[S%FJ_SX.-8HZG7'RU?;VMNMAW,S83D<?QY:>4UG*FPV:M$"
M&'8U4KUX_BLH-C2RB(R'B&4_[)SZ+:U"-\08%PV4G;ERZV=&MY;?O>Y[+B+R
M-[GAUW#H>L&P:]HA"*3TJU$3\ '&8Z+<YC^MWRT]PV*>H\Z07C)F6G=U76;$
MQ\Y<#_%MRLBB-Y@M[J;H,5B_J39X<0&1=$,?^[3P%9V=A5]CC (+X#]QJH1.
MC0!W4/'53\U=_4W!Y<)BQYE#=SP<K]>=,]]1N#O4L'QS9$A/[:);&,+W;*."
M!!R.5-@.5.13&%0QTXYA1)\RH)9",F?X; Q8]*DJ:B@HM!;9P1SWD9#._FUC
M$#VS3[/T_TQMV?S;F4E#)/+9F9 >MD,JC" S?M9_#=6;1^EM978Z:IE&+19?
M;)7E#^Z-<Y"HTRYP[@3 P^,H8)/J#N,IK&3(.?<92IGAS!:8-8#3#/R-V@+=
MYL'J7@6GVH/&SX[DNMGR2W_XN"2&2BF&%'U2.BRV9 QM57D3J\5'&6G\!8H6
MI9<@00O,[6/@5ZNTT2/&*A8.%EO$]"1BV.O3!M^^N7!/]?(S@#U<)M^S$E6T
M@;R)7F,K?S8*T7[]6A\^:B8\(.O<\ND69=6U/2Q(=V'N.L^$[X+^8R5\"/W4
M)L="Z2^AJK:9(EH*$+R@1"IQS5XXKA8P7M;>8-;QOJC[RD:"I:U!0I%$H%[0
MR8#CPNVT-M1RCSZ/YN ABSJ^XW#3]DZ+4KKH]U?^IF1EAX6EF=!+2]=O6@\+
MTO>I$A3-B)HA^'5F$\$<XHVRI07Y\5"3;HY0;?YO^*GFYK7DNT_OT8</$4*"
M&=M>;]R!P?5BF86(S$>()G EZ7M '5,KN8*#.QL7,G.8W='%9_D-_[P@CTY(
MYD=H:/&!.$>+[>QMLP\:EC$O+<:W 6[Z7 )DJ#*W%=78/9"^P!S*=UH))44Z
MKB:E1^J7*7N5-UT(I3&K_VT@KL=:%>>6\?/'/N)NZ?TER%2Z'RL2_4!GCQ+'
M'?E480V>G?_'9WK.\R5KYOY"G&5T#"<5J_0SS7_:JRJ1.1(8_<6RSR#\/'@O
MVDCK6,<#BPT$ICC_6K.P!F WOUK)\&Z]#3XZ2M8'2QDX2><4HR9CCO#JU.$\
M[KHZW;$OOK[Y^<$9H8:;:AY^%>S<6UKSLMCIYRK:?I1$#E!8U,JNN7"!E"\L
M(Z12)&W!'@_(^E8H10\TB H__VSP;\;]E"-LR]9O!^N#=V)W!'J+*JN?@*M6
M4I%>7PE#)4"A@E 4;JTG6F(%;C]\FFN3P:HC'WULGI$F;6^_S3U?M(?T-;XW
MV[EFNVQ1Q,SYGO6>::)AB*2@V M@J)G2;N!JHV95HLI($7]<(?I3R+F#)556
M(^AYJ-[9$/[9?!W/+&VQ*91$#=9T?W^X$KNC3OGO/H$*(FEL/A<]11>'B/R3
MPF38QU*=2[_)O V& 0K?!M/?D4SVUZ59??WMT-H\59W+!P\=AD>E.3GOC.AY
M.- 1.[[0!H N=$AOY#I8A4@%1SX+(52+,WX,]'!P;>D!!T_HMTU[V0_V#17=
MJ-@Y$_%6<[M@XW%F>$ZTJG#H$;:- .FIP.H"@3O23A6!;057D38\>#PS8V]?
M.S7IWQED,V^#M2'/HENG*CPB,:PXQ3[E(=<T>#%(P8!Q6.&7-'(=8*SD^WGJ
MDS37AMK]2W!AKHZW%%Y=YFL_&*E'CHT.7]-S)<\I5.S/S?@$[\WI07J%DA_>
M->F5T2!#[-SJ6)# E^ !;0N8[Y4S5#F*T9@CNOIS@(27KR(B3P2[)\_E]1S;
M-R[F;-A3)9MR2Z/]3!!]=F4'HW.0'H2%M*4)H).52;O'M"L="BX-:4":98E&
M)WR/Q[$G/F_MG%+KN\C9:;ZV7_PLYF\5(N%>Z LP+K7@H'%$4D$0P2+%>X M
M55/I-@<A9_ )JT.E=J]YXF5?EYNZI'/?;IXX*]](OW?!:+'%:Q&NV>2ISB<+
MBRGZ &,KG5TS0@4=\"DX)4M;+FHH!-7?JDOTN*C)'</?AHCPUBO(U73CN9PJ
M1[,JIS!+B0UI[_/G[+4N)\ !B,Q]84N+,L# D\5Y6H@$:F:K%7GE.6!,5XL8
M;WCR:5$F[JQK:&[>E5]=\KV2?A]ZY *SM79JL)V4!DQC6BLV1,&*?_AW(%M!
M%,#HHE=X9 IT2",X91^2I^_'^86F_86,K56-*89G'<=ZJ[\>.-%:.S*@8+J%
M^W5HSS8VAB+TG!:'-XRSFXF</["".!<W%PG&3V';\6+0#&.T0;%6C1;?LODL
M\\S%+NO2X%/:.WW'/Q<9%%ODGKO]X8O;@VE\X=+?E=U <;LX@)V W_#* D(!
MT+'8;=?,\.S)OL0_YE3PR$I ?S6QW3B%8LW+R[ ,Y8PM+,W%= *R9B>.OSO3
M>'N;MKDG5OIP5I>:S,V2K]K9WLG_\OB%D 0'SQ3G6)=Q" JDI ZU(Z5%$^EX
M=S OS4Q#;?Z#Y\WK.WL"+(^\?^I^+;8GZV/<?A +F;,0EQZ!-? I#?^[^.H_
M5@>PJ'^6P,?F+V/VF8KPQ&'U?O##/ #I9+;V,?%<7$?F34U37E>&I945TEP.
MC7+7/7^QL/.$O?)N]NMZTJGC]E.N%2)_';1S3U/F:1ET-HOZU\9\%AWQZ6W+
MF!]'EOB&&(K33[J*&0[2I\+*RQAN":S0Q9WN!.1)P>S1-T09.W-8'Y" <J<.
MU?,FBWPF(G1;ZFM(\]HU"27,37:N[<:,X+Z5E%$X5&OVS0!5?;, 3YR[ ,M[
M3JT<'[NA:?"Q:6ML;"Q[0K_K7^[C)U#NR.X3\QMWU0T>W=BP0URV5^( [9I=
M7S,9Q?G743O8('QNO0D9LD$D:] 6%4J/Y"RD>62UX6^2S0-?2$DL[6$GG/(M
M7?_I9GN?I,'%\7<>6^^@ .F>]B_6)Q5D734/%T^^ @00(<.2-XU]HE#!@&OQ
MV0)S9VSWN9NSN[)*0S,:'TFO\_$2W32)OYB<^PC[B35V-#0"'\A*'.S3MZ!?
MNWPEZDKWZ7./M;.OWE\H-6%<@JQG&$RGOK;NRV.F$J9OU6UBUQ?N"@\*<).X
MUK6HVM3<N(O<>"%CA\]EC.<W<U@I )$L$]B>7<;4X>+H[-25L[\/@YT'6[:3
M^KG !OA@2Y7OLR:Y$DN=K^_/O]KV9W._#R<U3GE7LHMI=F+J[V]T*@XR+_5J
MAF90I=R*#./7MVS>43]B>'E!I?=,SH.:YT2Y,=_-Y=&K+(#/F;:['V&'J"OD
M>!W^=+CY@40@8Q0OVV($,3[N*D7G_R:@L%2:?GB>?/)M@?O0!6;&T>$$A9 W
MW9UA[?@0[)@%OTZ83B=FC@$=. D@S/@F14_X,()BL(M:3K;B%=3_>XEL&"JO
M;ISQW:/@6B\3<^%TJV?ZJ?K[^Z6++95_*=K]"W6O"5<Y-%HV535JFA_VZ<GK
MQ&]ZY6QO)9T4V]RMF)/[+F<I#3>4ZFF)B>Y3#J&A/&/<G-\%/12X PQ"DPHJ
MWY.0$L_7!W1._-TGY<AE9;1L!1\*?,),QM<>K&5:/1V@++ZUUZZ)#KKY\JG1
M<:WB$=8;=*P!] !:,@X\PAIK 5"$!,N/3IEG6JIPC1.C^'4%YF!$Z52OIU\_
MV;.H>Z_-CH;JH?(@SUR3S7MN*1$-#E_Z)A:)$?H_H9NN5)AD_N$2Y]")$A-#
MZ5Y<)N4=4)V4;BWW\SR\G<Y;/4EEC[T<Z@%"$/>OM^MVCC>_#U4<^>-:E#O@
M^S9*OT+K"VTWVNLXT@ZHH;P"E;0=\484O9HU-\H+;D,T&_HCS0:K:8D4_3"I
MB4-N+R:3FH=ITQG>"T6?M]\*/)GN&B7A-^^"'=VK#RX@:Y.B4"N2$#ZQ=%BI
M9:-CO8DR:6U8 5+?9"9CB_S)#H-$-6>5OF!^J6#'J9))OV3;VT8C:]Q,HK-;
ML7EK"29D'P +F_#RD;4KD?S2L+8P U&G#"]C%"QCP<PIUHV2^F$8SS/ND#];
MY3TYU^*>I7'MQ(Q9D=&6M>4!N?:?:D5EL>-J^KPH9!T&2A!<0/KPH!OQT\P1
MR%#@3^H[WM^B2_:M$9BW"N8\-'1M!.X%54_7&@;E.-<Y!-?DS;W(CBV9,WCL
MG;A_+>I0O 'V+0+H"MR@BY*=T6$90RMNX0S4R,6G3JY^E=-.T>J?6Y(P[=5X
M>5(S?,C'_6G3W:I$U;;ZZ_#P':U XKWNC;B:RY[?1F=7"JIN%U8#1 #:J%DJ
M\*7T6$O4CM!#8C36+!Q /E37WM!F3C3QV@R_[-@C=T_F91SOE%;PW8.GO,]C
M,RDCN(JZ!"#8&=I\AEI-G',3.),$;Z@UAB5M'CP]7N=KWNBQNN%IGL]^?NT
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
MO?1'7U)"M?,T:F^X>B]P&+D'1#M7R,=]K!O4 HYSI^%)Q2".(I&)LPSZ(\"
M$8 LZ7OHI4\=&:@O GP'G!W<_-S,U^OO3+^VKM']>-UFYKJ+4ZAU]NO@!)U3
MB]_5N#=JQ(#]EDF8_;?9F&YS."E_#\)7"R=5P1I5]]5JD-;A2I:UF]ZBR)8G
MAWF8G>MH5$*'?:BV_,@X8:-PJ!ZYI"V2Q>-";WV'Z;Z #\3-P>B-H!Q" S&D
M"DQC[H81R.WB#2>0)CUK;E^9HH$W8K>!7V/^^8\1=Y!NVP>M._8@QXL*%1][
M,K;O<_R;-T>?0>]/]JF;A[,/@PMQ#0'G:"++"*;H,$6K=PIV1!</G._0(WE>
MLFCV=?>9?Q-P5:?T7_;D-II:$2IX[)K3;:+B#TQW$ZZ5N(&I1MT#0 3(]93U
M@1F H6#E4.+Y$;\1@K\(=6'ARB\_4&8]NY7[<.<^VYQL&3=37QGR$+2;2H5
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
M_;H<3[[GU GYAX SA73H\M3IRO!J]!=5BE;7W[#C!K]:]B"<;+4[2U*-'\Y
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
MC_)5<C[Z,=/M8K<8?<M?(J[C*_<SD #BZXGK\0R00G?KF*@Q'5@E31IR@YY
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
M*L (>")7+2+_AAJY3[]+'Q47[A.\-%0&I,ILR!1F;_R&.'AQ,$(QW?_!?;0
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
M#Y$AV.D/'%1O9"HLG)LANP6!D=/,,J2?C@3F =A,9;.JW$4MGWZ<[ LWJZN
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
M'Y0E5_59 @;M+]SE<*X3=1EWWE:4:_/^W&Z-UK"-*53+/-(E]$&>(A?,$L#
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
M)D6L^0;*;/*<*=<C%B2H9GK=\#NG9Z57E;?]&K,+(Q8MIC,D'5B\.O^IUUE
M1Z[! 9L\EFQ8UE7 =<J9550)CO,]FER2#77Y:2B"92[EQ0].M/3R9I[+RH8
MPSO]B]QLL9V&1R,;IM<)T%M 0&=]@NZ%D0'Z'U692I?8^)?*J?6AB0Z-1U0F
M)QZ&\-^G\'F?R;Z\XV D.YB)(7Q ^UZ"QH+"SK)+HNO,P6GLG$_17Z&)<L&1
MDD-;.-LUIE/Z*3Z=52)N%<]S$SG7J^Y>R\Y3DH]X>X[ZD;J>9SJ9I38$-V/H
MLK$7ECA_^'TCL)R&(\7OPN#Z>"ECSL+Q(<=1E;&<P&<W'8RFUI:^PPN&2-=(
MWWTV5@]S=&'W,A3 G45"XB7LQ"ZLX> #Q/.JV=FA %)0O+S<I/L."D@1XT>9
MYI[+8'ZPR[LC^Y5G_+C'-WXE4916?^>")*1,Z 8?AI@&BW>Q$NKT91RI$,>U
M0,%WXY/&7*VHN63+K+=SLZM3-5^MLUS=G?ARK9=5ER273@70YWW?5Q.>$MY!
M.O5C!S(]!'8,";@VM\NQ1E@GF+FM/H /R2@>XQ- 24_XE]M3GLP7&=I3%7#P
MC62&IY=GR%V/Q-9E7==/U,6E8^5/NI=QG8.$&H>-7/I=5I^QT'H 713[T;@J
MJ32^]]_]ZI!**XH;][D)S0JMBLTBNJ[6$D.O[D-Q,N^A[2Z?Y8]\Z-(K%[D'
MVHVI1AN7*3J@JF$9L-E-$Z2.@<EO,/KXKI^D7"HJ;D_:G]]5"JX&"[3&6=;
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
M*'JU*1LM &O5 -5&#T#6BO28+2XTI<7T,)Z!QI@/P(XZH-$'?*\U^F$&6J5
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
MO%H\BUH]9]$\36#.,1J8J3I1M0/6% ?MJE9OQ'6)GD7Y(I<HCE23:(VF6B<
MTJ"9UV@N\ZYKB;,B0Z;XG*P<=/8FXY4#,M5GI\:/\47]/,^?2;;4+2D^+A57
M/^1EII^?C[(9RI\G(DRC($J@%)%.EQ8$XL17JV4_\CTJA)]X7H\:I:='-7KN
MQR]"J@76VW-\([+.5W@H\@=1:&]'YZ94=<B7CO)[L&_4<\889IZE VS'868M
M:-M(1\/Z9A?61EYWOJ(9+$Z]PC-#CNK_F:F_[^D97M6/>A2C-2T07Y.B>&J7
M:N^SI;BNQ'TY#U-!4YYRB$2BG+K(BR%)6 B35/I28)PP26R6MZ>'FYI7I[V5
MMD'DMKS@=RTQJ$6V/.TY [<9N;@#<6!RN0@_:W(Q@\4IN9P9<E1R,5-_GUP,
MK^I'+GKYV<3T+!;Y5Z+4*)L 55$\BO+U'2ENE=>0ZV*(ZO.W307;.?+2U$<^
M@7[$!$0ATS6W9 H)\2FC7HR3Q.K(NY<44Z.B5LQ_^@<_]OZYRMMZL=K-:06V
MW%7K9QHS?AH<\(%IZ^;M:]#5UI@!/X >GH&U4F"C59=94.LU U><9VT 9:,D
M: VU;2=W?'<1S$YIL)\DH[+C16#MD^9E-^O'I>VIQZM\N5(O^^MNTTTRQA,?
M01IZBBL93B%-E(&BB.,T2A.&F=7QP\%1IL:%UPKP95U99;L LQW_'8;3C-\N
M!FE@_NI.DUL!9^T!@<-DI9,(.*66PR.-2ATGE=VGAM-?[IE(LZ*E^/M*W>CM
MH_KGB[K+FUS72)U[ ==9HR&,=3-/E' &<9#$,$UC*83T4I];O?Y'1YH:!6P$
M!;6D0(L*?F^$M2UP=Q1>,SIP MK0+DT_O.S3.LYAX389X^AHXZ90G%/Z6>+#
MV0OZ$<5[49:B"6]^(TI69 ]-RY=N>R&(?)R$"84LC#R( D47:1*$4*1>1$(_
MI)[T;.CBS'A3(XU&W%D7D+\E\@4[.N<P-^,0AT@.S"27@FA-*8;0."66<V..
M2B^& .R3C.EE_:CFLU#,M1)M7XMZ+;3DW3%9^\<K6M8Q"8;O@,TM)_1"M)*!
M+;GK]?[ZE+;[PN^=\ Y?CCZ8.7U3K 08];7I \W^.]3K'CW7]_=Y467_39K#
MG>MEI9ZQC"Y$<\PS]Z4(*$X1# 5F$*41@S3"!,8L\:F?!J&'K1H1G!YN:C/W
MMK3Z7#);R]O&/U@N_D]C;;@+X S!H;<#]L#;B.K\?-<,$[<;!*>'''>GP$C]
M9UL&9E==6K2_K@NR8M5*)XBT>Y6OGO3:XZ/4.Y6;VL(D(6%,"8'("Z3Z1V\O
MQC2 B!&9$,0C@NR*:MC+,#4"VB[@OJ-$M_VO"RW4:VK='5=ITK?&OKF5##<G
MAL5^Z&T+6]@'[2=^ 98#U<,WE^.%*M]; W6\QKW]K?HQYJM5J=9(9?DZOZ=M
M-<%-][YKKD\>9$;6_'S%_K[*E#>XU=\\$V5=F$+GJ.R2>1TV^.6.+'_.<_XU
M6RSF8<A#+!"!&,<>1!'R88IP CW,D=#A?7Z(;;AV5.FGQM+7E[F%XUK>C+\G
M:\^!F;_3&VPI/MONF[NM>Q=2WFE?K[^W$[M; &;/?=]9&X=>*1A AX.[*>-%
MS.=TLAE7@U&GJ1<QSOX$]S)"]%Q,Z"8 G\6#>LGO2"D^%?EM0>[7_1JO5M5=
M7FBY-]]I&MOZ\XBE5)* 0:XG.^23!*:>K^8Y/_9]2@6+F54@:7]1IC9IU9J
MC9B@U66VU>YTH\[V%VTZA#LPH>&"8Q3##+WN&,HF]FN.B^%TN_3H+\ZX*Y"+
M87NV$+G\COU(]]?EIK/\%_+ME5@*F55EEQ>O"\"N%KJVU3N%PJ<BRXNFT*OZ
M[J<V6:"<(Y3$!/,41E0'BL@@4 L.(6#"HU0J9D:!C&SHUX504R/BGPN=6T1J
MHY7-+G.KC:X@L=K2N$Z\HZW.:JD!""AJA?55^F]=ED:I?OM#+/7U#QH$\%"C
M8+DN<?($F+'WV'8=F,>WU:ES3SN%9IMBWVN5@*814"O55037EZSU<D?J+E%V
M2N].!!N5Z%U"N4_Y3N_=M[7B7N+IEM/_051S'@>8IC&'B"8Z22L6,)4,P8AQ
M2;S42Z(0V?2,.#.>%66/T.3A0%[Y#"@Y9]9YY:: F]&H0Q@'9LAC"+KLMFB$
MA>.6BZ?''+GOHA$ SYLOFEW6,]Q@664\6ZQT&/V-+AM7W_?M-]T,0'!-:+HF
M\ZIJ3R7?DD)[N;J'0%V2N7%MYQQYB1_'.H(PBB#BF$(2IHJ#N)]PY5L&S*Z1
MMQ.IIN97WFRU3BQU2M!ZL4B4NK#35R<SW.?+IM.B93R#$V,:ACV,;:*AHR.V
M] $;A4"G4>,5;NFD??Q.*^TG-O7U9\Y7_DZ!=AMRX42R<2,S7(+Y+(##Z<U=
M5*K_362W=Y7@5X_JT]NZ I0>0U?$5Z/J[*DY2JG A ;02V@"D1]&D%"*(48R
MP"CR!(ZM LIL!9@:2^_5M9^!KZT*@#0ZZ)(CM1*@T/V?OG]H]/CADM+W!G8R
M8^4AT1^8@)\5RN^D!ZWXH)._;D%2=^MB3K/9^H(W8&E] R%>L.*^.42G"_%;
MW.?2Z+?KI<ZTR8NG-B6O#A/:!%-%TD\#$6 819&.>Y,>I*%$B@U1%,A8?1C9
M'4\9#CPU%NRDS6SK"1@C;1NVY@Z_$6/5UD*O<V]'"DPS0VN@:+0S@[]0")H9
M),?CS@RO[YM&4PIUT5V=5O H%GE=L*RM&-!V38X3$7D>]V"4)HJ;L AAJHL-
MIU1'_:,@]9C5(MM@S*G14B?R#/"-Q+.FRMOR-EL*40>%BEZE4$QL8,9:CI$=
MF+ Z:=MLI;6\7:62 ?I96P#D.$OI_+@C)R<9 _$\)\G\4B?U!LIU'E^*I* 8
M8QB'.@G)2Q$D6"10N4B()AY"G%H%JQX;:&KTLY\]7YKD\ME!:^@6.0!L:#>H
M#U:7UAEX!L2090;*E\EG/*?RF2(#S[]_67A\'8C8'')>?<O*N4BYCQ.>0H8\
M#R(_1I#ZJ0\%39.$8!R0P*J;RY%QID8-ZSCE+3G5$Z\DM62&8[B:$8,#M ;F
MA3Y ]0ZW/@+#(('1^V.]2 CS$86/!1L?^WKOID]-)Y8V"*YZ^J >A(85HMCS
MPQA#[$D,42QBB)-8P)!)(E(4>S2V6KL<'VIJQ+#I. 36LLZ EK87/9S V(PA
MW" W,$GT!ZU/SZ8S>+ANT71LN+$[,IU1^T #IG-7]%QFG&O_7![K_US_HS/_
MU!KHDWJ M$!MR2[$(UZ7R0]2G< L PIIFJ908.SS2'(F?&&U1!E R*E1U5LU
M&51/34_XOC74AK"EX9KHA2TT='Q";96ARK4-B)W;)=@0@HZ[?!L0ZF=+OR''
MZD?VO^2/]<C7RYN*++D:Y5.1\Q6K?B-:K.JI+IQ)%I^W&A<SE*BE8\H@\8AR
M'E.UI$QQ**&'XDB@.(XHM3J4ZR'#U*BZ4T%G%'1*@%8+T*D!6CTNZDO=QV!F
MA#VP&0;FXT$L8$W<%V#HE)?[R#$J[5X U#ZK7G(K.]+D(IN_5\_ XM-=OA0?
M5O41%&<R$3Q%D"61A @Q":D0$H8>]D7(4<H2HZH\AVX^-9JKY0.U@*"1T(R\
M#@)WFI4NA6-@NK% PIA$3JE\@!U*P7Z\S1]_4I?5Q/!WI'^$S8\U&QR\X2BO
M^2E5NO?WY'<N;=AV0[H8@;*J/:MYD"*$2!!#1D.DJV=YD*) 0!*'/$F#A"*Z
M[M9FYK><&,WH2=WMTC;X43U9U.EVM[JSF(YG)TU,3+:1NF]#MN=@FWD<EP+X
M(JW8;L@FEN@<;A<T8CN*R$!=V)Z/]T(MV(XJ?KS_VO%++@U/O'HDV4('%BG'
M08^R"2/7Q4"6+%MD]1IN+YC.3ZG@Q ]AB$,?*I;Q8.KA"%(NI.\AX4?8:GO]
M4H&FYD?<K.[O2?%4MS+L%((R+V#]<IF\6</8S7!G:T1K#,QMV\&1NY:HIX>M
MO)M=A48*F[P,WX'"*7L*]4)AEI=!>#S\\L+[#G0T<6S_[&.3Y??VFRA85FJ1
MVD4(Q4$L"94P35,=.L432!)?0J:6;G%,@XB9=4<?3,*I4?>6@+,FQ<Z6I)W;
MT-%YQ)"6&9K&M>"0:LG!MG9@2SU=DG7[>ZV*S?'2#+1:SL".@5TM;0<WPKBG
M&M923NM(HR_(UN<9O0>RFQX.]X+?J[KW^DY+E:D)Z=M-6[!6S,,PB5*2)) '
M*='E^T-(,*:0!AYE+) Q\XUZFO:68&KTOE^J56^GJ\=N*5C-)U^SZ@ZP6@_]
M%UU3J:O^>[R#IB-;G:;Y42PP,(T?+/JQ7QJU;F+:XJ^_=S,6_CQG*_T&UR_Y
MR]IA1Y0_G3V,9\V+L6QF17V;>JKS@W:BZW_C42:RB_7N)JK+;]0W\G*]@_%Z
MH7@TDYG@KYY>Y\LZU'M%%K\073"]>GI#*K&W"4%%A,- 4DC2.((HBCQ(.290
M)H@C(KP@#!*[V,S^PDQM>GHKI9Z)'@7H9 9:Z-+U3M)%!C1;CXQEEH'GK"TU
MP$8/O=C8TF376H-N'KF U7&$Z04"C1R#>CETSZ-4'=S3CH3+HIHW.<'LJ0[$
M#E,O]'V/P32()41!E$ 2!3$,4,!(@E,<>$8G]/LWGAHY=K)9!;(_0^LT>UV"
MP<!,9*J^,:4<T_44/:AKMJA!_;9/"\]N.LHK?DR5[G4]^O<>"_%?\J5X^H44
M?XCJ>JE7A_7;_XYDQ5_)8E57$UGDI5Y1,"_2[V4((R_%$!$IE,^#)(R0%T8R
MC1B/C'+3[(:=VFM;"P[N:\G5(F(MNL5ZSAQR@T7T($ ._.XW&#9"@RVI@18;
MU'*#C>"#(&NQ/!X$X9'6Q,>>5B UTH\UTGRMP(^.%L'6B)U<^9K?;;SEKK6&
M.VM<^ZO[UD6I2+84O*N5UY;A2#AE48PC&,=<+5D#0B#A:MV:"AQ('G@D2JW*
MV!\>9FK$W4FY*3MYMC*'#:AFR\C+H1J8FGN@U*-^R2D0')<L.3C4R%5*3JG[
MO##)R6_W\/"N6%T/3I_TB^RQ;H*T6.1?B1+^75Z\+@3/*AV9I7X1V>WR[;?F
MQ$#7C[OB_[5JUH-S0F.1R"B$2" !$4O4L@RC!#*.L? B*65@%"3E3J2I$4PK
M+!"MM$V%R^9G&_?0C;T,7,?1K3 P=W7Z@(U",[!62>>/@$8IH+6:@<Y@G6)U
M94RP46UTFUDXI:/;;B2'=30;VGFT3N$^Z>VZ&6D\3]@I,CM>LML[]YDXCP;-
MO1&T:G="==] J::7CTOQ-T&*5T(J<;Y\S?4O&Y=^+B-*" \X%)RJ.=1#')*
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
M C%5SEZ*$X_&:1R&TFB%9S;<U B[S4AK1&YBF]<U^+?$MDWD.XGX:9IVC^/
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
M+F#1*:.K&98E(/?Y:JF/OK3XMI$A?<QE1H[#H3]6;,<:\;4".HRC4V$&:B5
ME8-6#:#UF(&/IPW1(V[C B =!V;TD63DR(L+P'H>6G')S7JW?%MR4O!/1<Y7
MK/J-Z*.1JG5(YQ%E"0Y3#S(6!A#1U(=I%(4P21*>>H$,H\2J),S)T::V?.VD
M Q_I(KNM)R[;+.Z3X)KQFC/(ACYG:^4$K:"@DW2<U:H13*Z[Q)T8<>Q.<>>5
M/] MSN"B'N7-;_)'4?>>?94O>;G>CWN3E6R1EZM"S+W$PTQW@5.>5@Q1[ <0
M)U17FN(X\0+/#VEL7-G\['!3XY6UP(#FIQJ+]$'V-*>XQVMH4EE#50L+MG;H
M-_(Z!="B/KE3($<J3;[W[ &I 7VL >5KN5T5)3<&Z&0]\O-W&:\4N;%&.U7(
MS:_JNPJFU8U@JZ).#;QZ)-E"EPY\EQ<W9"&:_A6K?%7^NBP$6>A*$^_50NY3
M7F;Z87LORO++'5GZP2_JFW?E//*H2.,XAA(3#E%(L"X9*J$?^"FA* E(:N7T
MN15O:FR^H:09T+*"2@D+_ #<U^+:+I"=6M)TY?Q2]AE\24TKL-%L!M:Z09D7
ML%3:S<!&/[!1$&@-0:?BGF%_.6W8'@ON(?!WO!)W*N+(2_0AX'V^=A]DE)Z+
M>G&K?8G/XB$O=.^BS4RS.3%EL2]B/XEAG*84(LDPQ @GT.<1PIPRE"!NM;0_
M/^;4J+L5N0[Q^%GDMP5YN,L8N%XJ=KBWZ']C [OAHM\MF$-[Z2V.:W&WG'/P
M^S#+?7. W"[Z#<8==^EO#L2S#0"+2WN6>7U]]6:./9Q$- I@BO5B/XUTO'XL
M(8X4TP0L09YOUL9LZZ938Y+79$EXIMR#-WJ_MNA;ZU7#=68%WQ.$@1F@UI_,
M6O5=]DK=TM-%H5=]NW$+O6XI\*S0Z_;?>L[T[$[PU4)\E)^*_$$4U9-.!ZFN
MEEQ'Y3[H][ON/SGG(DF#A/CJM8M#B!(60,S5["\HIP'W0H+\Q&JZ-QQX:F]J
M)^VLSIMIYOZUQ&VS3LN@66,;&,[] R [\.M_&:CVD[\E0FX] -/!QW4#+"%Y
MY@O87G\I7>VOD#9KI_?K:L54"B^1(8.2(-UO'6-((ZK7*7$J8^K'B5T'/:O1
MIT9<!IL99I6)'1C&EL@<P_WRVT9#U8#N@]A [&8BP0M1G 4XQWG.YB:]^X(6
M@I2Z+&K]W^NF;.I=OE#W*)NLJ<_*858"?"4%GP>>Q&H])&'"J.[W'*8P%8C!
M!.E,9XQI*BU+5%B-/S7"Z\0'WW<*_*![WFWK\+]!E]NG]0"M(O:-1JW,9$9^
M X(_,/T-@'N?SJ5]T'/=TM1*AK%[G?8!Z$ 3U%ZWL2-$+K+YF_9\^UU6,K+X
MFR#%._5).8]\Z0G"8DBPYT$4ZS!<Q@D4ZB=!$QF%,3,AO1-C3(W8.C%!(R?0
M@H+_G[LW78X<Q]8$7P5FW=:3:>:HX0*2P.U?BBUOW(X,Q41$5EE-_G##JF"5
MRUWEBS)UGWX +KX['8"#%&NL^U9*(9+GG _DAP/@+)6F=L35!6<W.04"J6__
MRQT?:X*Q0*!CFTG?7?''OY#Y$=8_5J31]=Q!B,'"L/;CM[G4M\O@A;7CMI1
MS!%.4U7 @D8$(BF$7M+)&-((Z[^(2%OL=.IT5>+8/OXK6R6>!1NN V_GM02%
M\W4WG7JH]F"-3N#.@M>D#MQ7T!*$TZZ"MC=ZMHT0HCI+I[,OM!0?YV_I4[FF
MLZ:@41(CQ(M80)(I 1&+*:2Q3&":RAQ%>FU5.+:.Z)(V-M+9*0N,ME"[\XV^
MGH6CNK&VXYI@"/;,,[> Y]X/P0:4L#T1.B4.VQ?!QOB3W@A6-WF$L;=%3;=Y
MC'6YT[TF#)_E>IIRPDA6*$AIH=<O7.00HTQ RF-!\Q1CQ8E-!Q5[D4[D,D K
ME6WMX;+.[5W3/VW[J3C@W,TI_:#7^S[S"7!-=VGPTVRG],\3,+=-M'0 U"'0
M/3BP P6[AP'8+>;=":O.N'>[)PT7^^YDV4'\N]N=X9L9FF1),SE,4R&SJ.HS
MG9C^89J<(5%IE<Z8)8@B0B*K4"07H6/S!0^:&:Y.FAB"G[1_(^HPGNJ/U;_^
M'*ZWX78P[+S$T!#WS.DVO0VK$3!Z#]/<\!BEP9H;;@6/IKGA,10NS0U/[O7D
M*?T8O?@U_S$+X&<ZT_/@:KM-4T2*)QE-H) 1A4A) DFJ'<M$1$F6BYQ@Z537
ML%O<*+G)[.-4/^PI[+TQ=@5N2PX*!F+?[',+?NZD8P5+6+KI%CDLT5B9?T(Q
M=G>YD<MJN9Y^XW).E^7BRU(^EXO-:O92!W9+T>S*9 2KB$881I04$$4:79+F
M"G*%.$,FP""W2NNS$38V8MGI"5I%'7>^K"#NII/0P/6^O^Z!F36)N(#112'Z
M.7OTH7\[I@XK08,0AXO)+6TXW>.XR67*."U?IO_GRU3)*(LYR6%*8NUUB"2"
M!"49%")1(LNSC#"KS?'=(\=& /_G_NO[.^V0O__U_NW7N^\?WX(O[^^_?'K_
M?WT#7]]_^>W-)_TO]Q\L-UEVP%W9E?*"H^?/^D8D['=#3HSORM^H+V[2-^I?
M]K(W=H\:9KOC1/7M=L;I7_R6 ??K'W+Y>3$W1V+4)%_5>R-- ZUI3B2/8E%
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
MQDPS)V<0)S214C*D4J>L+1NA8R/*6F=8*0UV6H-*[0FH%0=&<\<81)L!L*/
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
MDES +#;3B\0)Q(5^,XH\2F2D(FE9]=I&V-@FB#U==RQ0=YFN]'5<"'?!;+D
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
MM,?J U72ONL&,-D_5AM1'30M!/^P*M\3]OBVJJY6K9>[)<]P(D1.I"(TF1$
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
M+Z5@FUWE7K7F_D(VXHO0GA:+N@!]L\H^N.)=H6[4Z9@%6<QS)"G'/ ("DPA
MR#F@&#*0I)*CD(0I9WR^K/*TM;J^*;&YL,WH.\7U=WIBH?^-PPWY'I1:R8%W
M;+8C03<]&.:0IFJ5PI@>DX2:1Q(<)R#$.<\(SM,DM!*,&:WK7F&S=RI]9C:D
MC=T3G@>[G3M!;6VU,ZSM#0Y=VFT$GUS7=6SF7FG<)=Y.!TLGAHTZC+J$\GB
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
M)$)A+.)8I$91J8;M38U+:I.# YMG]?:+UJ=L+ ^TZ68L8XI[/\UX0-,SS[@
MTIAN+.$YPS=KP?[VL'KYO^I)%=7\&^J_@OJO%;^8MC$*P5@ZW#*,[6W#)BM?
MQ(M8;L4'96VKVO?/8O/X=KO>K)Y$N2NWRR'*$A[F(&>2 AA2!F@6"Q#%'"69
MI)Q JX,,PW:G1CF-V8'NW9UF:/"GLCQH33<IFWM35YA-<CP [)F%'&%K/>^Q
M1,KI!,BT[5%G0I: '$^);&\?6ER>%W7$TSTI^,?E6_)<;'2=!:UQ64G]S9,\
M3S"2.<A@G"C.TM5J4(8!IHAD@NCB:;E=J?AK34Z-KO86!\_*9% L U8;;5O!
M_2K89JSD%D+/A-1!3UNK:UDV]NIZ8Y66ZM=>+=4!U=%-X7%<Z_QJLR-7+C>%
MX;0.N?&= X,]GM2'5-;%)8]W=-]_9XNMCK?\9;7B?Q:+Q1QB*;D@$* $80")
MU.4;<0I"B6+&TE"$=K)/5JU/C8PZ)QY5[DQ0[+P)V",I'X3E9I!=7Y@1E#>$
M/7/5WFX=S7%RN!3\M#,^:*UW6*=E$&IN(Q2L+!@W9F$(."=1#(,>,G #>RF^
M%4]"2[<7M?AI4S=FW9R8J-5?'"*>@BR.,@"9$%JC- >$<42T]IE:*%IM85]I
M<&I,INP%FT(+9.TM#EJ3+=4TC4$WW-MV"*7OW>W;4+3?WS:$QNT.][5&Q]WC
M-H3@9)?;]+ZAFU"Z>C?;;,NJ>,1Z<[?D6M2S?!%5D&"4Q(+H,"D4Y6HA)W "
ML& Q2$(%ND@2D6;4;O.IM[VIT<V!N<$W]?Q!89C74#;=5W*&G??])%O8!FP=
M&8'A>,NHO\V1MXJ, #C=(C*[;>#\9?,HRGIJ])MR8UMJQ8DYHA03E$H0$J1(
M!(D$H)Q2P#F.$LHDY=0H(J:WE:E11V7D,*F"LR :3D)NA<;WS*-"I0V[VYOH
M<*[1AX#;"<;9EL:=5?0Y>S*5Z+WXAH*4;ZY7NGIS7.EJ)[>E#-H^U66OVFI7
M[XJ7@@O%2UI#.(8XD5&<@1SI%!/$8T#S- $L$5+$>2Q2N^,O[Q9/C8AVE?EX
M8V3PHQ +/J#VH]=^-N.W2?6>9ZYT4*FQ(UW8\7NVK];8NEZ)33NNO#A&-[DO
MJ.C5ZO'K)([1"6?+'X[2\+!!Z\ J/?W=%'4 [[MBS18K'<Z[._*G,,US%%'
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
MDQ 0(B- 1!I'4M*,)ZE=-(5-\U/CFX[U=:'WKOVVX156_6 :<.$+7>\A&#W
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
M\QB^U'H67W9JV?.8IX(@% $D(PZ@8 *0)"&*WR1!F!.>1JAEM6^&.TH.[!I
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
M 4TP E"J,0+%600HS:)<A\VE9MDV5]J9VA"_,S/8VQG\H2VU/-V_A*L9!SM
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
M9GDI4I4S10A,12X@*DBAU_VQ@CCA&"%5\"QRJAMWMK>YO:"=SNC>R%&K^?,
MVZW?O<$6^)5V1FR\0.LY),((LQ[M\64$6<\Y?U*(]>Q#X\CC]_6/INGW*Q,#
MM"(;R^7Z+W-CS^QC?I$F(4#67];+I0XSC,+&@K%(19PQ&-&$0:0PACA"&<1%
MSM,,RS1.K$1:K[!A;D3S]>UKT&?_WH X@1&Y ;U?YOQ@YQG8N]8<,?3.@3^-
M>Z#SSY&AQHRB'6\%'IO ;#;=L#C3X!7 >B7',79,2IE7 /6<2*]IZLITVWTB
M[[[^&LY45.",0XXTF2*"4\A(4D!.22Z+(B(,.U5:.=?9W AS("LVL'9TMOY9
MG"U/6#RA%_I(931PXS-"SR 2)K/S6(<ODZ%YQO63F9;GGAE9%7RU*46YW!KM
MA?TNS]N??+D54KS3YIN@<-MN5GY2?4V1S[)J1=(>CS?0K%\XI3(G*(<\1Q(B
MH?]#,<EA1B3GFI10)B*GPN+A;)T;B0TM?:(E,&*1&7*([0AP)@,7>L]JW)BY
M5TD/CZ;?0NL![9VV5GMXX _*O4_0I2\%#-U.5ZH\13A5,2\@X06%*$<%9"80
M%7I9GQ58*!DY58H_T]?<B/N(RH,Q=F1=^',@VU&O)^@"4^=HU#PH9!S@$5@F
M8]_?"VME'#A^63#C\)&QE=Y[O:\FL>>U7A53_7;2Y2>V+._:*T'K+W*SK5:O
M:?W]DU+Z4XNH2'B1( QS4@B(>)Y!QHE>VL:""96GD8B3Q4K>F0(EWUQ*O8\P
MQNKE(>W+<V!2N!=I(-#7. /NJG5= WIO,D7!NC'=M0S\F*&R(Z=PR$\NA]@X
M8*J\]R[<@+T3IEI.ZP8P?NA_.C\0(TJ^7P&DYV+O8RR9N,S[%6 =%GB_IK&1
M[%G6].ZNDG==U/=%_I"K;2=JD\F<*6YNQ&!9&)4.94YE,TC2I% 1R27&3MG8
MYSJ;6_#UU%8C?M-9.TY)Z"S.E@SG";W01#8:.'>JLD#$+R.=ZW!:XK%P_8!?
M;)ZY4NOGHYZPA:8-(5@"19)RB(HDA43EFD"$_FLD8Q6Y"6T,&Y\;3?2VE;8U
M XXBQF11J"*.-&(DTHM<GD":4PE%6G N\E@HPA>;]88N R.VZV+NB-E1YE@<
M E/DSJP;\-%GZ';,W3!J11^G#K2.N792C^CCZ+"HR5C]G?XL[[?W;R0W@J_R
M_6I7@>QM6[GRC29-'8@MVW_MSV,7.6(X8HA!)//8"#MG$.>B@!S31"F>*95:
M99Q<8\3<^+%S XC.#Y/.4+;5 H>E0(4.#_3"IFK=,1^J.H<<K@",';?S7#+5
M: 3FG'X@>A? ^]6P;&/G!M!^@&]FA;GL/_1ENH%PN',QP8!,=+?BZC?$U]6)
M*R$]>T5B;-O3786XTOLG5QZN;6OBRI2?VOICO^D/;NKWJ\^R*M?"7,7&"4T%
M5+G^#\)<0*9B FFAO](L2E7NEC_IU[RYS7.-=5),5&SR^(C9Q<0O-PZ!9S@/
M920_]74C6R<-R[9N-H&ZV<MXMZZ4+$TM\M,3XG1%),\.R3PJ1AXW\;]'><BS
M\'JK!7F^E[&'8JW@TCLIS ;R\_GGE5Q)56X6:<YQDB,%B2H2B.(BA[B@>O!I
MA$@FLE1FA=,&KU6W<^/NSEK7LRPKA&T/KWSC%ORTJA-6ZRP^MI3XI3/[=*VU
M$6=3+CAY/HRRZGKBTR<7. Z/FYR>OC*UO%7=N%V)\PJ?^@,?UZOJB>#GAW(E
MWV_D?;U@A>**Y<(,DHY)T[S0X6B10930*,\3G"-LI;<9Q+K9T=I W;>3LC%W
M1BX+_9I/#=ULE7_!G\93T+@Z-N_=RY? CE)?;&@#,^^+C.KXI'R?Z(?)XO=B
MX<ND_?L$]^0] :^=7'%W_%;<EZNR[E+(/BD]4S4_O?Y>KFA7 )#E,DEQIL>[
M,%D+,>60B3B%<9+1),M8D1?NU\@M.IX;]3=V@Z>&F]5K;_H-:(P?68'1>C@L
M-R0"@!QZJ\$7ON/NI3N Y?^*NDWGT]]6=X#DZ,5UE^?'D=@'J8E4?GJ0IHO5
MW0>S]]M3ZF.W'U"_T7QK='",YLV[\H=<4,(C'-,<QD5L<BF(D8++4XA4P>+4
ME'M#3BOT45;,C=Z^?9>5;$2FW(AKW!#8L5AP8 -36FN_V0+M/ "-"_O"((\W
MYOR)2?"9EN*FT_@RC@#CB3^&NPI(KW0WSI))N>\JL)X3X76-.29:-,+P_''Q
M^__W<5&D$8GCB$.<,;VLIRR'F%$&>8I)GA!*LBRQ2IP8-#HWSOI=_BPY-><)
M]=HQ[GJ"U85DA9$(A$X^,,ZO;QKG/9R;'//RC/A6__'VS>]_:][Z]H1ZV-PT
M)\Y''-B=(!_[M[&G &PSN*CW3(AO)RJA?W^M%W/EYL.ZKE^W%1L6*2^*" L)
MLR2+($*\@#CB"41I)A0EYEJ>6^[W>%OF]BHWFJ9[7V[ H3SFS5ZI!2@C'=WX
M!(Q3>FW0NN5ZWC!^+&T/(289H> G$V$'9\29Q=6P>C[(&&_/Q*<;5P-W>.1Q
M?9-N5%Q7F\7G:BVV?/.I^BJK'R67K>(A(XC',8.YS/7"+I$*LMPP+<.)7ML5
M$<VMTFM.=3 WTNQL;+:A.S.=%"A. GF>W'S $YBQ1B!C34*7W#_'+/K9 :OH
MWYXSRLG&)Z&)2Z[U[_[%SXT4NQF0Q9OUEFW4=ME54:F_2"[+ICZAT>A2G91=
MEBK."<H@45+'430U24@JAG&DES]$8:1HZB1AXVK!W"BA-Q;LK3TS-5\E/>@^
M6G8Q4] Q",P[8>!WEZ 9"Z%?81EG*Z:5BQD+TH$(S.B&QM'DYZK+,OFZ6?-_
M?*:5YF"SWRZ:L\5>6V818YIAH11,D<S,-K>.A@HF($M9D64D3[#$BQ^R8FM;
M=K3KV.5U''8?,AKH4ZMJ8SAXH%V%A!N3C2K,G?"J!@^R K5QP(T&+4=#(!HQ
M05,H\Y3IT5 (8H$IU.O_HDA5(BERFJG\C\4T$>N)D0"_'!N)TVENUPR%W33D
M'^#@,6^/;6/Q#= V U,^IK&Z4X[4=K?)VOXF&S>@O,XPEEU/.JVXP?%\+G%\
MVKU@Q]O5QIP\;-FRY.^6:[I94)2('!,!J23,7"C/(:94PE1$:2;3(D4HMRW:
M<=#ZW BH-1"T%H+&1/OJ'8?8G:>2JQ$)S!@N8#B5\CCI].AR'H<M3E;2XZ0S
MP[(>IS]TW66#777GCW*SK_W<5-@K5=E6>][)'6<)2IDIM(RE)!!)0B$3100+
M&;,TR^*D2)P$7<<8,;<7_K=&8.M(T?)_&W<WP6E ; \)PL(<_'2@P]9<5&@=
MV%WM.J*R?P,&Q>2?.A=$R_H:=(/<=G RY$7N/HR!ZM1-B%%MC1"8^,/DR:[O
M5N5_2:%?<M;>M*B_K_]:T5J'3&:O4G>U6:]V1O2DH#_>4L*"2HQ$FB001XI#
ME&']DXR)7C++G$<X4T5BI<OOS:*YL>G0IX9+.Z] XY9F5D#!SC.3V[3W[1@'
M.^@?>!G?\WS\(J,6F)S_FP^8@WK%U ,WD92%YP'L'ZBWRV:"7IEY>I>>N#2Q
M$J=5]=CM5-[H#]?E?;FD5=/(LCG/7U?ZS^97WNYE#Y_PI9SA<SC/RFAXZ6@Z
M30V?N#P1V/#:\-@[*6O^CR_R0;\[W\V-[C=;<^VEO;S=['O4BPA1Q3CGD.=Y
M!)%(,DBH1#!-."%I'%.:DQ$:PY=[MJ*&Z06%]S:;MYFO[^\U"]3M_E^SA>HH
M"&<Q!!1SR252L*!*0)3'"!*I?^(TER1/TTQEQ.U<P1/ZDYXIO #P=JM)OV &
M#D\:8\' 6M":NY,(^7H>RA%W?6S1\7S+YV*W$]_OL87A\&:/]9/C)H%/F^^R
M,G(?E?PN5W7Y0[:WZ,V!^;MU)<N[U>LNG?=;15<U;::EVY5H?ENV"TKQG]MZ
M8Z(SO>IL+AXM,IJ9@T\,<4841+*0D."4PX31*"5,*!YSE[VQ,&;.;;W7>0+Z
M!&JPV5L/Z,Y\1ZX+-,249Y)PGD*E3#TKG)NS;JE@EF*JHE@AGF9N$]/+#_(T
MDYGM,-^TZP5E@O]9#+G=E/CRPQAX&FT<!$\\[-5C?C%._GH#^B'N'04#3YLT
MR8&O8._L;B?WVYD1=YZ%PPZ(UYD[D*F3SO9AX7X>(03N[0JY ]/>AYWF28:S
MG!/$8,IXIB."6$ 2BQ@F*%>94#B)"J?;.(==S&TVWUEXA>[,$2!MUR77P!-\
M'>*$S#B)@:/.AZEW_^%E5%1.NWFRLOWA)\>]X.?K.G<UV0J9*)7C'-)4AXDH
M+P@D2B00<45(EN6*9=CEE;?I='8D<*PRND4U]%$%\JQ&Q8X_?&,=FE$"P>Q,
M/2ZX>24CJXXGI2<7*)X3EM.S8PN^M-K6>XWKU^M5<S#^]W+S_;4.B'045>W4
M Q917%!%)8,LSDR!!!W*T$QI-A,I942@ N',K2:,4_]S([9='DK5U48R+Q;O
MK 9"/JSKTG6GPG5([*@L(-"!6:VW'/S2V_ZK2:'OS0=_:?M![\! Y\1G/991
MV'DNV>)FP\15748!=%CX95PSXZCOK5*2;W9+1;W>^Z+CPR_2^*S;;^OTT9]?
MY6:S;,+&?B6Y0"Q").$Y)!QQB/3*#3*&*)0%0:(H<,Z9E<[)U9;,C0YWC@QU
MA(TOX*DS-\T_[/W9;149:9&*.XLJC!]*._*<9( "T^@$8^-,K%?CZI5BQULS
M*=E>#=ISVKV^P9<I=/)INZDW.N J5W=_U^9\WTAQ^T-6]$Z^_:F_J64M/U<E
M?W(;&*D$Y1%)8:&,^%Z>8,B0*8N29;',<HZ5VXG<]"[,C?)]5NL8H'$#>CQ
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
M_I(5LJ^ _\HZV7;XN17+OM#F"U;,MO/V?-ELRS;&A;]-D8E!=:J/ZU6G ;#
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
M8?^$(6)[/=O7\NKR0_<3^04$7"X__ -02P,$%     @ X(!15 !N<L1BZ
MNLP* !4   !C9VYX+3(P,C$Q,C,Q7W!R92YX;6SLO5EW6SF2+OK>OR)OG=>+
M2LQ#K^X^2YZJM(XSY6L[J\ZY+UP8 A*[*-)%4DZK?_T-D-0\;9(;W%#VK=6M
ME&69B.%#("(0B/BW__GC?/+3=Y@OQK/IO_^)_9G^Z2>8QED:3T___4^_??U
M[)_^YW_\R[_\V_]%R/]^\_GC3^]F\>(<ILN?WL[!+R']]/MX>?;3WQ,L_O%3
MGL_.?_K[;/Z/\7=/R'^L_M';V;?+^?CT;/D3IYS?_]OYOTIKK&?<$1<L)=(+
M2[R@@O @)%@?-1/L_S[]U\Q-H$D&0CW7Y=<R<49)HJ50FKNL?8#5AT[&TW_\
M:_D2_ )^0N:FB]4?__U/9\OEMW_]^>???__]SS_"?/+GV?ST9TZI^/GJM_^T
M^?4?#W[_=['Z;>:<^WGUM]>_NA@_]HOXL>SG__W+QR_Q#,X]&4\72S^-98'%
M^%\7JQ]^G$6_7,G\1;I^>O(WRI_(U:^1\B/".!'LSS\6Z4__\2\__;06QWPV
M@<^0?RK__>WS\?62<78ZA1]_CK/SG\M?_?QVAD#XY$\+H:M_N+S\!O_^I\7X
M_-OD^F=G<\C__J=X.OV!"W+&^'JY_W'SCW^^6?G;'!8(EA6G'_$'F\\HJVU+
M!?Q8PC3!FJ^KSY_,XIU?FA2ISN97_W*"J)BL?CI*,!ZM/ODH+)9S'Y<CG8Q0
MWF02)0,BA37$N9"(M3&*(%4P7MUENA"\0(I72EA _//I[/O/^,$_%T'\4Y9O
MR?K;E40>++F6S&ZT7^V[K_B[HV1D2HQZ$GR21$HG"#(BB,C>F PT61WV)OWV
MBG<IOZW5HWG\:39/,$?C<;6DG\<[&GX(W,UO_/S-S_&#2#P;3]+5ORY6I ^=
M+6<]2&^M&B3W3S\AUQGF<T@?UYIYDKD59TLTJ;#ZS3ZT?C2=7OC)9_@VFR]'
M*0DP(!+QP40BF0[$692)M,K;:+C-*O6F_=LK=T(!;Q\%.TNS$31\@OEXEMY/
MTSL\@4<Y^VARH,3@64FD$0P98(IH[U+(ULJ4^X/#G:4[X4&TCX?=Y=D((+[.
M_70Q+H+?@-IQFW3QJH1'GT"B+T40QPAJ4%P U\IQUM\!<6_U3K"0[<-B+ZD.
MC(SWT^5X>?EA/(%?+\X#S$<Z,\.5LB0I:M"!3IQXE30)RE!)-3@OW-Z(N+]J
M)R2H=I&PEQ2;0,!G.!T7(4R7O_IS&"DJ1/(Y$PR9&)$J1^*2MB0[(XT.ABJ_
M_UGQV,J=D*!;1\(>TFP"#<<8V<_1E*T$_P7E#V]G%]/E_/+M+,&(!\USM(KD
ME!#<%FV<U^@F*YN]])9' [PG<#Q+2">LF-:QTI^LFX#.5__C.*'XQGF\3EQL
M+*+D!J00%(]#BR>AT1&-8=:$IRRTTS13MG\4_2P)G>!B6X=+'_)M BA'*:$*
M%IO_?!Q/@8TBBRQK88B1VB$G!F,LZ1W1W*"E!.,IRSV!Y)'E.P'$M0Z0?>7:
M$CC>XK<G\Z^SWZ<CGY%([AG),<6U4*S4BM"@@XZ,.AI%O]"X6;Q;5HN^$F3L
M*-26<+$Z)D_FG^:S[^-IA%$ FV/6@5#).9$:6; \XU&I3-2<"\]Z2&T\1T$W
MA#2<^.Q-O"W!Y--LL?23_W?\;>5*Z2 R.".0=HM&, &"G:)G!3PF%:WFMC>W
M];'UNT&DX:QH3Z(=&"#%^AW-P:_H%M$!<T%C.!8ED6 EL7@P$K#.^2RBE#TX
MI;=7[ :"AE.A.XMO8+67:]3)I[/9]"I# ]ZI$(,BQF2$K%"*N,@#27CN<<@.
MC-S?G[B_:C?U-YSRW$N, T/@"\2+.<*7\?!UO)S 2()PV3J,D7*YT1',$F\M
M)3Z'K"WWP5"]-P3NK]H- @WG.O<2X\ 0^#KWI6#ER^5YF$U&@EI MCEQ ;](
MDQFQ B6@@K.)XIDE8?]H\\Z2W93?<'IS=P$VLOG?_XAG?GH*J[QLY-ID/+;0
MKT702D49@E8+ GAZ<>FT<"[V9@!NK]P-!PVG+O<69Q-APM]A,OE?4PR$OX!?
MX)F6CA>+BY)+DS'1XL0Z)0*10>E2:Y:)INC>"$.]3_N7S3Q+0C> -)^L[$/
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
M36=76VIDI0X)?"*)&K2^&3PZCKB1@K88_$HFHJR36WB.JH$Z)%8]$_M20@.
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
M4T2X&[W=0/S?Z!:MOM9;MKI7WM G?[ERA5RVBOOD" W>$4E-)C:"( #4\<S
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
MBU5Y_9J[D74@?% !MY\O_5[PU/<QY#)Y5 */C#I1)R+L1-ZP#\YJ(;!WQ32
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
M5.-IFH9U\P^%I#UU,72,>/4$YJ]^GLKU"$KJZJ9DPXTV$I)UGG#G!<8L(I+
MN"/.<HGV7$MO[]U5/5D;]L)2PSKIM0!30<P-F*)KZ5R1GQW$6&[X@S=(?KGF
M=[S,QW4N9HK'/*WS:/P>(</VPZMM=/:1>A/C(#Y<S*?CTNH6A?-A_*-\=V4U
M4_1..XQ$DBTWL@JQ;SGZB9Q:EZ5G-%:*Z)ZF:=C6=K7!U),N!C1&B_ER]-E/
M3]?A14S6)HL2B%PG(K/R:#R9)$$;+Z3!F,-T*OC"3[T%'OS3?>#<67;@ 1\U
M@_W=Q=L")C90]M%"ELD120.:2)$T,HZZC#HG",RSI#H]J.B.BB'CJ#U4=E_I
M.\AO8+7_,IZ6+/R&<,F",T EB2*)8AJ1>6<I,4+8*&A(T75J,=))\7>6'ECU
MNRANUH<4AU;_^A)F0[A*@=FD M$!,I'&"H)G%X;VVF0E'<^!][?O[RP]S(G0
MF_IWEF(#4<F3A^#'\12.EW"^&%%-HTJ)$LL #T*F-7'))I(8V!@<C3'4Z3ST
M,FW#QK_#WAOLIJ"6(??; O+%Y.,XPR@Y!]FR1!R5ED@+&*8IH"2I:&30/D5:
MYRE"!^(:S??NB(>N<-M1.:^UKNU^!\-U<5?%&4]/+7B0>K9.W!Z@EDT+M(<:
M@W&K\02..1'\)A)C/<;/"02/=79]Q1%VUV?$K1Z8]\6]/B5XIL('GXAWK'2/
MHXI8Z9![#9Q&R$*D.A-_NM/8;FG;%LAYNBBD5Q4U<-(^P\^;RU_\?\[F;R=^
ML5A%OAJRSAY]%$=!$ZF=(MY@%)."H%RQTLHKUTDF=B>RE3*1?G%R/\E826EM
MX_&&L5_]^56N-E#G?6"!,,<8D3ZB2R.U($"YQB@[ZJ3K%(]L2>BPN*P&F.[
MW%M[#8#SW1C/DG&X*&K[/#X]N[Z<+O=#QCI#.#..E&Y>Q&?<S-[:Q'-D.=@Z
M%W5/4=0LW/:'P?T>#GWH9-!KO.N[[ DL(7V%>#:=36:GQ7?9/!]Z(,3-A9*3
M'!CGQ/G25:#X-@[P,!'22*LU-1FZS0;=8?%A;V@. ;"#J&7P2I6+Q7)V7H;-
M3U=><N'M,VSFP)V-OUWQ)+*WW",3@,)#Y]EQ8@/N+<8]%4E0(]F+0>XV"PZ;
MM3L<O"J(OXF2A%]GI=W7-]PY1Z=SN%/(%9DU2EE!A"M/'KGSQ"I?@C%IG.8I
MNTJ/49^F:=CZED.>ECWII0%?;/6^]MS/_W%%O^%!E+M98EB@1*8RTB$X06)0
M/$3T9074*=:\3\FP!2Z'1-->.FBAG&$=\'@-D*4G7I>Z'$&!! B&Z,CQR':X
M&WRG!EFOL\2E2J)B=P&W@(JK.G:? BT1@W2E 42*CJ"%Y"13SR(P'63NE%IX
MC44N6ZGLB2*7;>0W=)7#G?(,1@'/0<$)FBXD'%DF3F1.((5@K>=*^4Z-A%YK
MD<M6BGNRR&4;*0ZM_COE&4Q8*JFQ1 2!AQ@D2YQS>"R"DIE3F6WLL<:IO2*7
MG=6_LQ0;<">?.09O;LT%,PF]&(] IJ'4;2ET;[@E04@I=! 8CM69]=&%NE8*
M78:Z^=A-34U#[U9!!7=4.!\YH9SBIE2!$:?!$3R+N5%9!J?KW/QVH:[9;/..
MF.@,NAT5]%HK7JXF*5:O=+F_T$$J7)[EKGYEBX] 8Y"<<+ (H.Q*VCC;TG[.
MBHQ^.$MU>@G6JVS9#.#\./9A/!DO+V\F(UZNCP(K?%)>"Z)7(UY--G@HI$B\
M\,8QGE(V=3K OD19LU4LVZ#DD<*]_M310J"^#E6U9S1$30R44D9?NN=A?$%,
M%B$QQSQTZR)<(7U3L\*S1TT^GK390JPM8&$3=E K%<V4$NJ $QDD1IT\ H&0
M@.?$7<?ZP%>9M-E&94\D;;:1W]!1^]TW-1)L,")BK+K*8TM96J(G$CP'Y3@7
MW'0JP7BM29NM%/?TRZ0MI#BT^N^D&SR-B:GRALHJ/!=M%L@"3R0&JK1*7 C3
MZ5;QM29M=E;_SE)L(')^YAB\B?R88."3%RB*F##R0]/H!>>$,9\$8AN-8IWY
M)UVH&[R=2_]N1#7E#%TKLV'H*DS\!//Q+(TPL UH%!V)90J'C,P1)VPF2B07
M8D8YB7OP>J(RYM&/;];-W%&%LU[E^5KS*-U^Z^&D]^IYEWT).TB>IE?IU<_K
M.$<UE\80'12Z5#ERXIGEI4=M""DD06F="O5Z>9UWXX4_/9W#Z7KP<=[(>GUF
M"&/038P4R9*E41<ZDWB"H$L1-=>0: 9>)U/]'%7-YG.V0<<CI<_]J*&%^'T5
MP69/F:;E%70L;P]D%.AO^#*'0W'#([<8D/S1<CG]:?'1/,XV(FT!!U>1"%>9
M,4C$TU*]S]#]##ZB&^"8,]&"1<_BCYK'V4IE3W68V4)^0P?R=S(0446;LW4D
M102[I.@)VHS^7V9:VE*6I&BG,L[7FL?92G%/YG&VD>+0ZK^3@1"197#.$2&$
M(1)_E?BL$LD!J$>Z;?YC%]_LK/Z=I=A 'N>)(_ FQO0F<>&D(,*R<GLO$PD<
M,2UM:9T7M3.BSCWA2Y0-F[_IW76HHI"A\S8;XC_YRU6['9B7_B<4S:!9-=\J
M/3[+N)#@$\K*!&,EA #AWC71$UF;1SZ\27=R1]7->I3C:\W6'*7O,%^.%_BC
MU7S!ZEF8IQ8\T-RR#MS6SYHPS6)"7X4D)3EBTWMB/3?$:I89.,/3_0;9S6=-
M;DGV_8]O,%W B-'22]9I K'<VE@\[:UBN#4S]]D+9Y6N\V;I(2W-9DBV0<+]
M<VQ/D;]6BU5>+<_A#/D=?X?C\N(/JANM9]8\B-WJRO,!$KXA!2H!B!*28M!>
M*ITSE"T(3H$7HE8SQ(JF*\:+\XM)F:F[>OG^B+ _SA:;^NZ4)4M2EJFI%!T#
M@7&'RV6TN*%9YRR3-]7&37:FLEESMPUZ'IB[6FIJ($;\@MI9O5<N[0;+5>3Y
MM]FT/%]>I<RHRR%3CF;<\%)]C7PX0Q/1/AGCO<\\5IJ5]QQ9@X.L$AKN=T?K
M334-X.P>#YM7TD 9E\Z&,@D"A1*\)M893\J;@J"#2"#KM#Y[E)R!FYSUI^Y'
M)G'L)_L& -1AVVVR=-8%+F1Y50N >\Y#(#9'2WCD> "8P"14<Q2ZD3@LT'J
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
MW<H5_GV\/'O _.(N]XO/]RY=-MGGU6>-HL5SGM),0EQU/36)>"\#,5()YA,
MN,J-I?IDYP^SA_J ;(?G6(?%S\Z;Z!O,Q[/T9>GGRVH7P#?S949<)0<V9<(<
MRZ7E@"4VFDB2L=KEH&SR=?*SS]/UA_&U*H"[1XTV8.H_^<O-0+!R:8A2Q3_@
M=XLQJGASQ%Y=(8ZG'@4[/3V*R_'W%?\CG:QUCGL")6A#.69D%L'&E,T"M+4Z
MUPDP]B*[D5>$3:+[<'C8'OQN#?XIG):985\;=W>RYRQ!"$0(H$1"LL11Y8CA
MTF)TQZ77E;O\'-S=J5:>W_:>&1X_>[H[[Z?I<(V"4UKE /WD>)IG\_,J51?/
M+E*ER6]GK@Y1&R$%=8)J#(&C-T1&Q(_-RA"?(3,6K FB<MZOZ1:^*:C$J3 D
M!%'>A$8@GN>(WTEAD^0VF<KB^0.W\-T&>_5:^&ZCX@:\\*>N5)5A4C/MB2V#
M9Z1TD00J-5&!!2Z0CQ#KI$S:+H,X+#PZUC]LHZM&(7?W6BX:2Y50Y5J.>60H
M2Q07Q2]29W T>_3L___ZAQT!L'7]PS;:&/K"^_$K>V^BMCXJ8E0I$DD*SPAN
M!,D9A98]($_Q)6_O]=8_;*6_E^L?MA'F@'!8S)>CSV6ZXVJ', \B9P/E 1D0
M67HL^-)54^?D4J#6L&ZS$_!3;UD3_--]2W)GV4:2F8,<6KO+OP70;+!.O8W2
M2T$L"XCU["7QE)>1?#()Y9RGW<H8NL-F2).RA\KN*WT'^0VL]E_&T_'YQ?E5
MQSYJ0D@\$BT]E!H)1KQG&$L((94UB=+8G[VXL_3 JM]%<;,^I#BT^OV/6X3'
MG"U+-!!++9HY*B2Q.B'A*JMD8E2:=[H<ZZ;^VTL/<V3TIOZ=I=A 7-*E.VU4
M.>K,-:%2""*M"<3%'$AR7$I.@]*B\HR&/5M.OX(6E?N$R'WKL"58/M/!UB:E
M33*2*)M<J4&2Q)5) HKFY($!>'.X I=7UW)Z*T#LT')Z&^TT"K@'+8UY9C+Z
M*(DPR(X$A3)CS)*$?^;"<T59G;X!?XR6TUM!8I>6T]OHIR7,]=-I 8113&#
M8J4ADOM  AA.<M(09<#_I%07G =K.5W_XKN-\_S@N&AI4_1;S&B<LS%;8I-=
M]:6E)$2:T"L7S/(4A$]UDNM_Y&+8P\/S,(6O6V"E@0USE0M_.SL/X^FZZ.;Q
M6K*C^;R$N^NCLWQWDD\NEG%V#HMUM<_L]Y&EH*AFHLQ?LD0J%8FC+!.J!4K#
M9(_N8=5;J%[8>/TYZ'XVR'#8^$-MC+^.3\]&UC!K\?@FD6>.SB6+)&0*Q'K!
M00D:*(C&=T;AX_4G3%K;&ENCHX&]<?)MQ=ST]"/*'([/OZ%>"H,?9XO%*' E
M\!#DY;*S]&PSB3CA%*'61J]<SE[6"7.?H^KU!P;]X+8WS36 PAOJ3_(Q:G-Z
M.D:/;2WB]S_BY"(AGW^9S=+OX\ED1+GQ,3$,J52YF^. NTME#/832.F$2"K6
M,<!;D3ELB^QV<%I/MPT ]V1Y!O.O9W[Z%<[+>(OYY=V-^ ["\J;[_-%W/YZ4
M6.3#;/[%EV+N4N0\_B](Q]/W?CY%0907M=''S"7)2I;G=B(0*TIR+*E2R<)8
MU+:.T>V=EV&[?K>S!09&R=!E:2^Q7PJLOL/Z'=_BTVR^>B/R"-._PG**P?NJ
MV>:RY'B9U482'C)*P*A,O.24&"N4%Z!4B-W*VJJ0-VSW\N&AWXCBV^N?^M8O
MSLK_O__GQ?@[[F[DW$_3+3GL\ACGY0_=\_'-EE3W]-BFK(C0O+?P]9,'F@U?
MM3MCU@D$ @CBM&-$:0O,)^6BJ-,HY'FZ]G:&;Z1Z/"U' RY5EEE>WIJY]C@)
MO^$>]I.R>?#O/F^^_8L?3Q?K[?85%?,&U_K'" 38"-&0<@E!)#.K&2:ZS#7Q
M6=-$Q?TY0WWYT ?@;MBT>(^H?>!+MP:-5VA?5]=R=:SLYJ-KV]K'.#B,Q14B
M,N&#(31;3J2(Z!/D\F27IF U<UZI.B_XZEC<S6!"]$VFY>-.\B.B/WHH^O67
MZ_VB(H_*022,T3+?VC+BA-%$2B.4R$Q I)T<T7TI:=KL;0.=>X,C#ZB?!E(*
M7^(9I(L)G.3[@>!-B/A(8[M;_/HD?)2"*).02\TC<<%9@O+/ DPR.M7I;;,O
MY<->UE7 [R J;0K"-UY'\3).I@^VZC6+W'(EH_3$* M$1IN)XT(3QI%;[6T
M6J>(<P=BA[TZ.PA0ZRBN 6P^GVL[FDQFO_MI+']^B\2-5WF*>QSG!)E* 21'
MAAP'QW$W!D>"=DH%DWF$.K'3_K0/>WE6$;D'5FL#0+ZU(]]._&(QSF-(;ZYG
M$%WXR2]^6>1Q^<XO[_M$$F)BT9=11X82F?\_]MYURZU;1Q=](O3A_?+3<>)T
MSG%B#R>KU^E?&KR MO8J2]Z2RHG[Z3>HNEJNDC6E24TJ:W>/99>K*B((? 0!
M$!?TX!S=+SX5%K@WSHLV:7"G4#WMBUI#\)Y-E!?HKC^8_\NGS/^O?_FF\T\3
MW_X8.EH' D[FS;GBM)'9P@/43@SD@)D(,=: O5$\.<545)<8ISW$JK_) ;>&
MH^=D(DFL4Z-+H-/IE2*+J<3"C#5"MWG2/9C$KD,'0_!SC.LU7$@=7/^W;2!K
MX[.[R._--)C:WUX("06W4[%J'ZA$UY*3040,.I96W=.?)FA:9#42_V[Z^0BR
MZ !2?ZS"8DTKUYC:[[CZ/*]=1M^4)W:W_H,^<OWTCVYKO$22,;N0(0B10.G$
MP8E"QK51V4LGF#=M\L?'W,7$]15CP&K9B8P[P/<_?O]CM<U]^/+#_.KJ00'<
M%@W6WKFLCKBVUI<:';804E9@;- ,'6K'V\P=VT_7M!B<#B_+9L([&HJ?<167
M(X%QFYGS0TC_POS-9F2609I2P+I:7U$?7^N9!O1:A^B\$[%-WO4>HJ8-SG<#
MP['$UH$Z?+E<U:2L#?ZP7'R[F12#*G25 '/UU4R% J$(,K\#8Y@2&>"VD=.V
MCZQI(^_=H' \T76 P]^7I%?K&/6O8[BWF_&,W#RE:A-N:>J(RU33$#UD2XRR
MLK!DVO2<V4O6M''T;G XGN@ZP.&OUPMBY*=P50_5W1X"1NESSN Y4T!4DZU=
MHQ"6%VN+YAE+FV8*3U$S;0"\&]2=+*BI$^)?O*_-4!Y3GYP/0E73(1D.2H@"
M#IVKW6Q-<=D'BSL1PF=RB+[YZ&EK,";'S C\[D U'1+&>GV?KV^3S$9'#;21
M" H5@F,:@?L8BW7&(&]T90XA<UJ'XCR!P79RZP"4-5P_*]Z0L\/JG &V];L=
M.,4RL)PMB]&$R-M,VZFK]Q];/E*XN^;^4$YW@(Y?EPO\\FM8_0LWKZY)\;[8
MO RKU1=2_S?-57+0PN;BP>1$>M>J"!Z-!B\S=U@8&MG(L-I/6/]J:1Q,C2F?
M#N#VS!/BSJ8LTIYTK&'!$HAAWMQT=0[<RT3N<?&Q3>7X0>1-&]PXKSH;5U;'
M W"Y"5?CQ'.?9=K7OO'+VRI&9XK72B 8ENN\2D\6:'0,2DX*:_VN:U2 -9#0
M:2,=YP-E2_EUH!\/W=YO#W6V.IC"G&%@C,@U[4)"0'*\N.'!,1,L\V52A/XV
MK-JZ66"D/Y >*<4.</IZN7C_!ZX^/DI<(V==.5\'MY3H:OVY(8Z)I&@?2G-?
M7-38YF'V"6*F#:><#VFGRF'"&_FF:NS;=,C?/RQ7F[JGV@[AB>TIQ]'QDL"E
MFL%K$2$J*T ;E6W)3@A[6$.)X6M/VRVB/:K.(9+1$'>^W.8]TTN;Y##O6Z]U
MKO+!>SU/3G(LY%LX1E"RDLPWS\B[*-E#R$I)HTPIV*8 HF$E\X_7^(H.-YW=
M^B3W0UC\:SU#;J+PB8,/GKPHR1@$QR,@,I^MU5[*<I!2>^+#NTX:'B+@K]34
MJ5SLP(CZ94&?10?O'2:<;YL?SV)V"B/G$'E]YD@,(=@4H115C/(Y8R-C_EM:
MNB[S/08V([&] ^!\KQ'90]>0F37!9$/6G]&JC@WA KSW"$PD&VU@+C6JUSV<
MQJ[+=$\!6B,Q70P MRU.+=,* ^&#2Z'K@W^ 4"?81!Y1&Z]<GA2 T[>JG1R
M@\5T@>6)+S[6MG6TV9?+]6:S?!C1WM"*W[]D<T-^P([/8\LG)*P6IL'8VH%
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
M4K#(#$]!J9WVC\\473V[Q+3U4ZTP,B);.] []URY)3^A$_0_#8:E6A1.AEQ
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
MU"__DV!PL(@N#8+SSSBSR-%5UTIIXJ/"4L GLC:D0QFETB:)5D-KAE$Z=7+
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
M#9+VH55W0UC? 82>*@$+G!4I2,U;)=5-^YS@B$V)HW;>*]VJ8N5RJNX&2?F
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
MX^M-&PWCR"7)P4'R&.OE)L!SKB!@9M9@XF5W:,V9_-.#MW#1;NH0_ YU4]N
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
M;[/!99;?TC]X@"F6*!R7RD)DIK;TK"MKF0"F9<@V,B=;=?_M0MZXPY_&Q>&
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
ME+9R$%4-EJQMZRI>Y#S=U+'\-BOSQ9?UYP_L'3[U'2T<PIUY:NT#<IN8%"9
M-CJ3Y;(2O!&2KEAK2Y+<&M?&"6H?&%_,5M-<S\GT&W[ =+58OVAL)CA@WFQ+
M^O+U:K6=^/!3MFB]>RSGHK77=&*MKF<WU@WW%'\1FIBS*AG=R/0-RT>G7N0^
MZ'L\E#ZYHCNXPH_D^9?O#W_ >GUH*-&;; 5P5^?<1*_!%QX!I9(\&,1T?PGF
M0)AOR-2X!V!,K,[[!$ZW9^B/\.5ZZZFV+!0F+912W?I"(G8E&A ^HY,&=4QM
M6C6>HVQ<-'<#H9V@?: ^.\#G&W)GY]\1/ZSFZ9]_?JW2W"[*+3:KG+T%Z8T'
MQ8D'GWB"$"G,T$QHA6V*_AXEJ4=$'JKY^\^(@ZBAB]34>R3':YIJY%B9V;*A
M9$"4TH&H<TP4>5W$1O! 5TQD"@,KKLU^S ?)&3>MU!1)QXN_ ZMTI/5_>[.0
MQDM'L' (.CHZ/75\CK.Y#@[1AGMNN11MGA^&XF!<I+X<G_(P2)S_4=C,D)P$
MCZ@4<N L1F+5U/=DJ2$9R;,F@^(:5? /0GZ/%W]KY T+_P-@T-\C_P?\5%]"
MPBS_'>>?%N'KYVFZD]H\)%'[W$<>F9?=B^*!TK#;[WR/7^>+VI%YDPA#8ZTW
MC-$1]:(6EB2(RD3PPA$PM62BA"8VX#&*CD[#WOO<V\+AV[(6%GC@QE*$A]S6
MO;P2O!4!C"K)8@H\ES8/GCL0-W*^: B<_)0P'5@E9V>$#B^1W.V#VQJDAF63
MC\)-ZE+018IH59:@,A8()5L*<'FRC@!AL4V9<C.S=.,TO\=O.+O"9;V>WY 8
M%[-P^>IJN9I_(71>S/+;^>S36[K0\Z8QX9?OMTH)EQ=U:OS](CU._@(%_&!U
MS'0T1>VK#QQ,,<J&G+.R;1I)VO'4J1'<!Y6/OQJ-"H"SLYT#/\(?\6UMK>RI
M'^8?!;DI)<A0"A0M*IID#4@LW?DA,6^L$)C:9$=:F=Y7\UFBSUVL)?I^NOSG
M)N\@N$9F2P)KZQ2Y.B\V($;(13!46G/#VIC-A^GIU.3M@X;[)F\ P7>0:_F)
MBU^^_X*S]/E+6/QS_7+DHT_D%%N0SE+<[E!"X"0QC3XI%I+VH<WXC><H&Q=2
M0VC_.4 =HXHNH77-S3;G;YE!NL43.!>0' XFP',6($NN<E E8B/7[CG*.H/6
M43AX%F1'**4#D'T(EW7-U-KG_ -7V[<?%Y$+E2PD5#79*#,$GQ6XH 49?!<H
MIF]SRS]$3F]P.D;C]_W^H\7?Q0/N14KKO5/O,>'T6[7D6TXL9QD3!4$N*5V[
M) )$(364Z'SFSOC2:''=8Q2-^SC6%$N#**$#D_2 _?Y(_W1MNI,2&*5C%,SZ
M7.53<XQ<U2$/*B$*S:(^E3=U351GD&KB2!VD@!ZQ5!G9GK6L;-$I<M#&U(F3
ML:9JK ..+CG%E,R^S6Z")XCJ[:H[4/'/AGJ'::$'0&U3<3^Q=%U[E:PP##4D
M)1F0S.C6YDD"UR$&GK5)J<V+V3.$=0:L0P%P'U@#:F-41VJY6$U^#_\]7]RF
M>NNA*Q)SJ?,F1:B/_IY.7F", :/?TO\6*\).;3#T\7>01#_=1]'#WS]NX]J
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
M0'#"V.*35;'-!,F=R.L:D,>#Y"=0#JVQ#F#XP*WS]G9"!$O<ZQ2 Y3HF0IL
MH:1$5T^QIJ O7+<)2YZB:MP"H[$?)@Y33D= N_-@2 [R<DKJVFSY6H39<D,9
MGS"E?2QH(%E+O#FZ18(+'I(V*:3HD:Z34SU%/TIE=SGJ ['Q?'G),(KJ (3O
MPO=U&>C'^3:??\TL+O^^F"]K#HL9CXZ#=X;X,=Y1F!\9E)R2+"R2/6_S"OL<
M9>/&SLW -JA".@+8K_/%VEG O"Y%?;? ;]/YU5WY37R(QMFLH9!K *I8"3ZS
M C*)K(DYX6*;&2F[TSAN:-P<= ,KJ0/X/6R[ZS 9XO<'*_YV&N+T<KKZ/A$J
M.X\L@.!DO14BN2HD12C%<'0HF#1MACD>0.RXOM^)K]SAU-8!,G_[\C5,%_78
M_5GN1VHW+69_G\_SOZ:7EQ-1,$4F V15YSX4EL$K7?>),,V=UM&G-H]S>Y&Y
M$QKUV:&QG:HZQ^%M0N&R)A1^YM5D01%\XC6V)ZEB3G4D@0<N0J!S9Y,9 9;/
M4;T32LV+0NF@BNRO-OX]+E>+J[2Z6A!/KSZ'Q:?#EGL_^#E'5KD_3]M I>P_
M?-'U"QOFB[2:?B.8X6TU<@A&Z6!=W95<FY5C@1@*0I$YQY",+LXU.;4[DWA\
M5_XS7_3@QGOA<X@Z0N)%UN)&"3'Y DIQ)7,DF>DV.99#J!V[+[\%UGYNQ&^L
MQ?.P9.NTZ6#V;/MI#:S:0W2>W+:9.IG$! Y"*;K((D-PC/ F=<H\%T*C;//(
M?C+;=G>HRX-?^6J^7"UO#T3FK@1+<1$/]85'%@7>,0%2<18YLZXTFIFS)Z'G
M8M'V0=A3PV>'UET'L<0C[-7GP<4WW&RV^[-4'F]9%%RX6">BVU*+) TKX+6O
M0R^*<-(F^J'-K7L L6./)AD1HH/I\#SNW(N<UZ%9N+PSD_V(UMJ]OZ/!_;P[
M3R>_M87,)GLEZ)C639>>DY=(\2ADQV*.&"@:;K-C=NR(I)ZCZ^$L[^;;1_,W
ME],O->M92S@2?EV_,<Y?T\_;,1JU#<O**"P87Q\9C2L0F!:0O$W!>W)W&S4F
M#\G%N=SW^V!SQPBFO=8[< 8>,D$3H9 Q44B8EJXGI:.!:&O5N)0VTJUD%&_S
MMO)X:J?_ZWPP!!ZBA2ZFU1UVCB;5\TF)^,RU'U%99/6M',&$E'52L>!NT^A/
M9"?''DS6KT7<2Y/GX6'>7?!SYV_#CZ'@P"[G?E_:P <]@NN3.Z7%")5KC6+,
MHDY8YPX\?1Y$$0WG27@*L\[;*=TQ';%9W5AT]$45P(PD#<L,!%4\Q$!_S$E0
M.ITT3G^(R'-Q*?=!UH$II+UUUIW'2&RLF5KG'38-%.3G)B<1N$<'2HHZ9)=X
M4@91))==C*VF?S])6"^3808&Q).>Y'':Z0!LFSS6#TQM6R)T\"R1*PQ:RE"?
MK,C7D)+$E0NY.5HYQ]LD(QXEJ2.[=JSBYRVTT &<_ISAQ^D7_(B++]N"M5]P
MAF5ZTR^=DN#(2QVL6U/Y7CL(669R:*7*SLGL>9N<S7.4C0NN@0 P;ZB-#M!U
MW3E]AZ$M(]Y&'NJF6L%#JJY$A("10!"T*9$3)AI-27N4I'&S*FWP-(S\.P#2
M>H7,#]*Y7BFD'><\\UKV94$5D\%S4T 8FQ*/3/'8IB;H,8K&388T,DM#2+\#
M%#WA$;R]J65$).$$IR#7ET'%@Z4@Q]#Q<"B%<+Y@:#/I:A?J>AEQ-9K+?IB>
MNL/>-J&M4[#.%0.&U>ESM9W4&^G *D/_)SSSHM5&G0.?%<;PU@_4^2XO"OLH
MH,<-]WOD*K?"C.M*B/FZ$N(T6=HGOOATF=I=N3]YMI85FVS4"3PKY(@5Q\#I
MY( ;4;P47FAS@N10+]E:F;5QEB)QIQ72 ;<2(A,>>(I&J"(2=VW&9+S ;.T^
MR#HF6[N/SCJXB'\)EV&6\,-GQ-7;^E]?#PEFB P5.2L9Z^LR(L766B20.7KC
MN:@+L)M@[S&*SB<_NQ<$[O=,#J&/3G&UC;U0T<$KV8$R*8(*](OC)0#7/J!&
M77AJM)#A49I&GGDQB,YW -(!"N@ 2A<I+:[H6[<]PF34M_&V0Z%"3FQ;3L"4
M@&B0Q..]8YX7G;'-8^9C%/4'HT,T/F\@_@Y@]-P#B"PV1\T"A3Q!@1*6@A]E
M/<A@K1:A)'M_C75'[Y)=)#F.N?>&U$X'8'L\\R@ER46% &7=#$)Q.OA,OZ3L
MM&"V-M.UB7#.]%UR+\7O_"ZYCQ8Z@-.S+V$<65',.Z#_J57%*4.H>SVDKA6B
MC.>(;1KFSO5=<B\ [/LNN8\V.D#7X^]BR'F)*BHP0I!%M\9 \.1&L"!ULKXH
MW<C#.KMWR6/P-(S\.P#2HR]C3NGB&-=0A//$!Z]K:*4&9GSDG'EO5:.RB3-[
MESS*+ TA_0Y0M-/;!\7%V1L5@-E$/#%?("2T=#(",N=B3>GU_2YY@MGKH[GL
MA^FI-^QMF7D_O[S\=;[X5UCDB26*6;8!T!8#"NFDQH(1<@H68XQ!JS;3#9\A
MK%L?_D D/ 6U(]72*<HF9.:]"@XA)<QU71I"R%:#2Q3_%*,8QA.T.6VIZ0A/
MQZI[!RCM)?N#\?,5%]-Y_K *BU6[&@J&.CCG!.A:P:MRK!.ZLX8ZS(Z"$9MB
MH[WM!]=0G*8ULR6*#I%]%PV9=R;&_L#0Q"H6JL\(+"H)2N7:&TB_9.UYP6"=
M"6WJ"!^CJ*.FRH&1-(@.]D>3WZ!IAI^J1_BQZ=7V 5>K2\S_.5U]GE^M7H7E
M9S&)6BNZ]4WECLY*(320XTDN 2)+.C"5W EF13Q.X+@C>4]] 1ZKH;[QMW[!
M"I<7^;^OEJMZV/B$HPHBL @A>$UQ#V<0I&? 930V8$W2G:#4\%'ZQAW!>VKT
M':F?3AWZ]4*)S7J\6\XF)1C)6#9TEA@Q5K("'V0$X81,(:B2S G:D9\B<=S!
MNJ?&WO%:ZA1^$Q-=BHJ\45.7,2J7R!L548$SEF/@Q3-W.J3M!"K[4D"UE^R/
MC"??S'*+4NH/5W&)_W-%'_+F6W5/#ZF*_NDSCBQP?IJF@6J5[W_)30&I]XE@
M4"MGE*F%-(S4&8HB](ML,_.&Z38]>H]1='0E\KW/O9T$Z VWR62Z<U.RFX&5
M4=9)@%%'%F-VL=$E]2A)(Q=_#H&)GXJ*!Q%_?V-R[O-U1%O%8Q\UL!UIV?KP
M*'1DJ'ZLJONVJY*%M^ 8_<XH3*9$EXML5-M_&G.R>5]R7J,T*$!D]*!2K6#U
M3$+*4F=I6&&YS7O)0]1T:D3V0<(S1F1_H7?@O=[G@?[9NO++<BXU\4*"\+5C
M0SHRKK5;%R,77 FA=9L'D4<(Z@H^!VCZ&>@<(O8^T;.MI1!<BR(#HZBMD'!D
MH,M9Y4SNN/?<<:O%B6S/#4E](>@@A3\/H@.DWQ^,MI4SAEB(3$<*!PT))!H/
M/M4&_YP4F>R WK?)4C](3G?P.4353P/H +GW!YZW-S4/Q9"[7NVSRG6+6% :
M@M3T(_>1AU22""=Q\MYV,C&A\1UVF. [ -#KZ;=IIG!C^2Y\KT*Y^#*_FJW>
MX>+#9Q(L!80&HY D'>T*L102>"T+G;<@3/)2>M;F.?9INKJR1P?J?MY,$1W"
MJLXA?XWIDEC)K\/WW^>SU>>+6?XO#(M)M$*+1'>_M@[K,<S@4EV\Z9Q2F0Q[
MR6VNNCV([,IZM0'<4"KJ%'VU)C61HNZS9K55$K,&*YPCUHH!%T.!N@Z;(Y-!
MIS9CAO8@<N2JWE.A;P@5=9B5W!9%__;;?X3+J_4'A5G^OU?A<EJ^U^KHE*JE
M/RQ-N>MG'YNW/(B'(Q.9R\5J<O-U%P]]W>W"HN(P9()>23F",M9#<#*!"$76
MBJ7@W$X!-WWEG0-,/]T_O+O3=*@-J]]P6T?_]'<]M+]0IZQU\B0*E>JA](QB
MZN0@:1T=!41"Y)T:7G82Q1&$CN/"-<+4M74[I?+.U])M7CU:VKOM-YS(ZCW$
MS^ELGX@Q,NXLV%)Q*J4!7Z*'4@JW-G'AS$X.3">V;^=#LP[AN:P#5)6E8,C5
M;:W:@T?O ;-%%)A93CL]C0_ _#W2NK=O^^#FKGUKIZ .(H=;YBXOY_^J0TV6
MMQU%RYO$M6<A2N<36&6KOVMSK=<RM4BPN&Q=28T&">U&7Z_8.PH<\^::ZAY_
MVZRWE3RPD!%"JKGNF&N5!M,@?8A<EQRT;9/;W86Z<5-S+5"Q%_ .4%$'L/O'
M+,TO+S&MIK&Z>@FGW];+N+>/(KD$[FISKML,<=(%/$\>C+5%A\ EQ?Y- /<T
M73U#[1 <S)LII0.(?0A$^GM<72UF54ZW0MNR4[SFWEM.IU&L^\$5>!/I2#JC
M*?H)R&.;J8_/$#9NYK<YR(942P<H^UE>?Y;76U(^AK\NEDN\F97#3/"\&%Y]
MCGH):$-B2Z8N!LPBR<)2H]47>Q Y;N:W.?I:J6M$).[C!=^FTE/QQ9D*%:;I
MF&E/P1BY(E"2SS)ZU,;O-%1DT#CV[;AO]Z>))]KKJP.S^/O\&];VHM]F3Q_I
MNZTI0;$2,C$FN'6@K$7PC$5R-S17Y"0GE&V*( \@MO^ ]T#HS$^KQPZ@^C1C
MVTFS$Z=5??7+($M1=9^O)+<$"V1?9!1U:Y+()[J['R!OW,"D.4CV"H@/T5@W
M@TZ>9FTS?2-_G&\'#[WYZRO.ECB1*MJ2"#LDO5 CLUAGYVE(Z(SRRAHGVA1-
M'43NN %.7V =0J/=V] ;)M=C^ZZOJDF,C#&*YD 854"QE"#&7$ :EF,T/"35
M9J[=(=2.&Q=U"MK#]=D]9E]CODKU;Y<3KY.@"T-"X(Z3_Z0H(I2.T8_22^T"
MR7>,MY=;"L<=X-(7-@_4V[%374Z R-N9#>321X[2)4_(R9ZN!U[ E2)!.%6W
M%RN=L$V_S\XDCCO6I2],'JJY[HWDM:L=,I:<7 87:JVX$*9NY].U/\;9G$O=
MJ=UY<-1LRDM?4#Q$8Z>9VK']B_I+#$O\?_^?_P]02P,$%     @ X(!15*I;
MJQNS#P  ,#   !P   !C9VYX+3(P,C$Q,C,Q>&5X:&EB:70Q,&PN:'1MQ5M=
M4]M*$GW/KYAEMW:ARC88POT DBH")''M#5# _=C:VH>Q-+;G1I:\FI&!^^OW
M=/=(&MF&9%-)71YB6]+,]'2?[C[=HYR\O_OPT^L7)^\O3L]?G_REWU?G15+-
M3>[5U.2FU-ZD:ORH?BW*CW:IU2A/5+^/ 7>CNY\N7B?3_*&_O[<_'.X?#!_,
MP\R.K1_N92>[<O_%R2[/_.+DS=7YO]1XFA194;[:NI]9;[9P^7STB]*9G>:O
MMA(L:LKZHO./F7FU-=?EU.;]S$S\T=#,C^]MZF='P[W#P^,MD?<I$?;VAH/?
M%U.1-IIQH=/4YM.^+Q9'^YB1%AQ]>*=<F4"&YR?;4MYZFL1E-C7#+<7BO-HB
M>;;4S-CIS./7P7>'81NO3]Y>7=XI9__ (#P?9)@4N>_3Q:/APA^S3HZ"2BYD
M337<^TGA;TC_7%_<O+VZ^7!Z>7:A;BYN[VY&9W<7Y^KV[NKLG^KGR]&=.OWU
M].9<G;Z[N;CX<($%^>^Z*EVE84E?*#\SZJR8YN8!'^6B@&%MD:O]O;WOU:TO
MDH_J:L%7=)Z2D6$+NS3J.M.XY)0&(E(@P<_*HIK.%,^7 AS8=&F*B=JF"W__
MZP_[^WO'-(B_#H]W>#X_LTY=FW)2E'.-N=6-<;ZT"6%+%O\YQY9/[W69JM-I
M:0P#D.>L)VTNUS/W-NTG%N.LF"]T_MA(0I("R=,2*L&.L"]>#\+3( ^@&:_R
M:CXVI:*K&X5T*K..?<)DQ3U4XZHYT%0/7T2;W*XEIV4:*8(M;)[:I4TKG2F5
M0[OUA/6@=R2E,>UF28_A8KT3G21F 8E<E<R"\EPU_MTD;'&=9<W>3#EW/(-*
M"BQ,JG(\B\T'@I4+C3DVF\7-:*K29&1N3%SDAJZ5AJ:'DN?0.S_>4PM=JJ7.
M*J/^MC?8V]LG?81G.Z;AQQN5!"F#O5B@2ZB$KH<=']$U_J[.(07_O!.-7XK!
MGK07/5LK-0SI&H0<);+:!Z-=50H <=T6*6; KKM_PT&S'.L2*KB#>&XBHH@Q
M2.$K-UBPW5\P%*#!3N]F3SB#4P)47%QTW!B>)+//]:/*"P_<*%=D:4_YL$YI
M\&.1F71*7X!01%=,4T  J+F\MP[6,'G"BI,;J76+PAEV!@"+K!$T+\"#6<2,
MKMF$LH"^'F<&,=#/  ^W",!CK_T*,CXMHJH0G;(8X9,B@_>0(\8 UXA@8V-R
M-3?^*-AM^)S.!>KM.*-+$HM4L#3L]HB%B[* YX;+J2'GLO04?)I<LBA3!A*K
MI8[FIP-:>Y_7;KP8<_$J6DVJ+.M["\R;^2(K'HU9<0K2@";O=C:UNGQ<O0U)
MX;^I;FX\#^DFCM.C 8WL60-U5?8:"6,1H5=793Y*)TE8.ZU*&OZY$GQ:!);!
M;]94:DO K"A7%1"$^'IZ8+ <= PFJ:Q=DW&25MFC,@\FJ1@>+21UG; <G.._
ME24<:R_QF"Q=/\=N3NN&W^(YP0O#4CTUW &\DJPBZM)3X\JS7V5V;FE97_3B
MQ_^!Z'$1@-1#-E]2-B_RGKHL\OZY=4E6D")X0W2)AAG/7M.FWYZR3?R%LU/"
M? J=/8+G_O\IX5D+J&<6W8"[>-&#SUJTN^H$S@M]@'7ZQ\]000Q$EF@5@IW$
M-1R\5+<KD;*-)Q0S6:[NK.MQH\W:-8Z)B+5DJA&1%]T?J#N.0D*",$2L+WMH
M%)UP&#D/XKN976#TJ+-#RHK#[X]=L+1,T-I 9DBC&5IQHTA%H?2VCE46JO!!
M.GR=4"3#8R6<$;*J[<9^B*4:<TFLUV-+]ME!M+6X$C06NVB/IWDBD/L97(WU
M3GA0)[M$PU^?[!(E?W%R_?KD_0WN(-RGYC5^KA0(4],?0[Z/_;&!N.9(9_?Z
MT:%2^'L^=HOC>IKP\7P1LO\UBY#]]2)D_UL4(8 4X:K->8 4LTRF_)(E=>6+
M.0"7X(?X$4&A$!>TB6F-SC?'E*3+B2''%%*A<OQ LN_X0A[@@04)Y_A%3V#M
MQ#@'R/5H@_0AG,%Q% #+!)8TD=0%/ ^@U52]( K>6TA*BQ@]@3P""9I_4I6\
M=DG:XG4L59_8L"-_Y,U6>5# 9I#!>0X&:D0TB/R6W+WK^'C@%)RB*'*A#3HA
M;1%E:NG**JK5-@4Q2) 7RBPY7Q+O)B4A /C[(K!*TX<1)@K<V\\0E"8^Z-'D
M347S"/9",\&FR7J&4T62@%BBLNAXK]B6X]1JF*+O><.V5^D@4AP,$(;H*>+3
ME%:)1GS259^@7,_1*L2/J.2YUB6RKE[,*!FQ%N)025R\!7&=S.O=R<;7H()K
M_%B-DPG1,))^!CYKUFC(*A?F]415%*E?#JBVCNI5#*?(CGN7A:?!#E&6@R%F
M@_B$D)IMY2#/8'Y2MO56-R?RP\LZ-2 V.2V6AE5*%:-L,2H(([H<99I>FU7Y
MVJ*XAXLU">\TA6.C#,8FX#@.)15<&QN'I6Y-(HV%[?%./"-V>*87UB/K_D$9
MD 7 \QMWP:KGH7.C<Q*"%&HG5M#02EGE&<("Y^0)J@J:H1Z!:=M!;:E[B%2I
M']2O4#594*JP#LMC$7K"(R+/J_L=$@Q;GT(J-';A6[@Q?:. 0G>7P>,(-X '
M[%Z;/7IX;$"E#6W#ZP>.#^+YE"K?&J ,C@5[X!EZ0%%!2*60HWK[<845T<)S
M_1%REMC/-!!0![2YB::DW0SH&I'6HNG$443:L'8/@ _Y-E59D9";ZP<3T5H@
M*]/W-/%8''1F,BY]R6\KF9 ]H;M!:/Z6KMZWQFAA+");LTJ%.T]/RF(>1:(0
M5T2.S5Q+KX<P]EEJ!S5!ZZVVI?J@RX] ]B_<SN @I>Z+"OL2R42H6!@]Y[VF
M%54/IQF@DW,:RH2J4AA+Q=<Z5)B+Y!1(30V7D%R'%IE$*#W&5U061(F2TC!X
M**P$$5996S'.[%0B"QD4VNY+WP9^XPT\#KJD]@U7DU3 C2/.V*FCCT#,=M9U
MC=HW,29M0H'3F=F4#702H*&J!68/;K"+4 'F4F/,/UV(-\Q RC.MEE #TCK@
M*TO&]Z#!/-6,;;X9H+^&G&U(LJJQL>$\NM9C ;N9%:7]@[6S<TP+0B-VA\U(
M;L;R8>'<,/] P>';%4/$^V[0Q,.7>S^>MLDB-=S[V1S F8B QX3<QXZCZZ48
MB)R5N WA.'*SC:-<L:[FT)!"S8=2=8YPQ=:4^,66DCA!]@L"KTE,D2_TT1Q4
MX_L4PP%<ZN;HS(5^&CV5&F#5CD7\9Q2@OA\@[:FK%K20']4*M@*7^_P2YC+B
MD;6MB4=*V^K)GHEM_$4,1TY!01A QEJ=PHOAUK$6=0236E0F7I&XS]5+1:?>
MDJ :$V%>CZ7?F!H9')3J:B"B,FEK,&8IFUI'&Q71/$&P:<CZEV^&VAL\G9V3
M>7\@LN/-5*C.[BUB?AG*NG7TTRHH:RHJ$87'>EM&310XAK\G?LAT1".-"KU?
M;3TV297TZBJJ#)#%'+N,E))17X8;> BLE1,_BM=H%H%D"4(Y)R=F<X%>H?:!
MT@:A==YXXP;>V7BV![<,!16BEC-8HJ:B-D_-@LY82!>9KER !HE2Y29'.$],
MT%Z=GRF2R[,-.*AL($0H"\O:NB38.%A,)W%,9FF/!$:B Z$A$G*(O31[#(<^
MY$(3)#T2?PEFQXW:2-K,2*9K!S:J2$DW:4U!D0-"KC8/GDN8/&-8"@G4#W9>
MS;MA%H2CU1#BER8-ED]J7YY0(B57GY&4H;X($92+$N*GL.V/ RJ6M+HN[5+#
M 2@0"7,9452@%8EF!RH5N_!ZJT8N%62:.CC#RVGKB:=NW*3B#XK'OCZFZC"%
MGG"#N+'"'&$R@66YN<+J-*6GK>HI8UQ*&CZA*Z:&?LB<(93?F,PL*?')&IBS
M.1@A7L+YGAAV+B4^NU%=;5/E7183P]Y#!UE(PCHN'=;[<>JV2"P>15:H2D9C
MZ/@K:<I-4"!S)A"6AFJ?6"]X4RE2P&X>$B]FA/WZ&>;E=')A2V9R:3UESJU?
MR2P$8E@C-[0?#H(E)2I;AH)<3->8LNS0HMJBN^N)8'N3,D?MRK4Z 9DWCXJ/
MN+D\R07=\5S=IC?QKYJ%A* 8Q>L$1 U1J%=;J >$3P6"#+/ZS.G/;'T=?,W6
MU\%ZZ^O@V[2^#JCU%9C4NGNP"VPR]+'PPWO-G2>)EQ(T0N\@-BX[%Y>YFT[/
MGIQ^'1(;!"1@.61HTR)A3L>XE+QBET",,(2ALLAM0AXP/^81VW:YMHR/SC#9
M3S:)*!V'1_4[7-NE<C3:;4!MD):BOZ4XJA> ,E063E_62O+0D.%&('?VF^#/
MI(=\8D:TO_>D"@>1V!VYN4O(*0>9J7*;>TZ0+POM.^0>.L_;(_I*K4XG_1OZ
MQJFQXE34Y#IDGBP<8IH,Z"C;LK3V: I.GGJ$")YV@0"YR+3T%!%$G<WKZ/<Y
M<T9LC'MQ(7A236@SL]ZPQR0]!H.0T$0S]PB D4C:!&#'I(.HD=2ME(R0L!"\
M,NZI(G3.:CEDJ#S+,$# EW[+,#X^7Y(D(!J4[@9=NU,K;F*I4X0XN<NSH6RA
MLV$I\<?,/4+-5483 E5AQFYWBIZK#\:^_%QL_6!L]5PLB8ZHPK+1<=<SIUV?
M..YJY_J"0ZSG3[&:93A%L0NPDEM&_,0Q:+!9>YL6=C%K-'UJ6TU!2JA4#1W
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
M,+6.=J,L9V7\+$1'&4YVQ#)5KEC26>*Y^%N_#9-/:UD I-PE.Y*Y8\:8 >S
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
MXY=(K:W=^AK#M@\(6Q,-R#D3#/E#C<K<WA,UP#TL(Y!45+,*X$ Y0<=""KO
M5.NN:9'NC@L.YIZI-[JNE"$NP%Z5!N4%E,X&/ 2FAG&L-',*N()DPC/(^"2P
M#5IXCC3&+E!L>48!W44.,>Z-4UMQ*GX9G#J?45DXGXZ XTD"!828 53,'87
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
M<G4Z221>;MHMCXXSQ@UX'"*N)&7@B!<&EA)K:2<T@KJEZ.G)V],UIN"QTK;
M<10##"Z5[Y,;'8/ VY9M(OX$(* #R$XOXPG/QL".T+U^+A3VB+J\$?4W(6@1
M]46X"I>2RK L$('D,_+!"_P(>"5=UIXHN3%1@A.1G;=9@STH![I9N3P-$UX^
M:3;YUDK:/-B(4*0]JQTG8'%F!)#/%[Z.[CJE,C$O[/I#**<8 2*UG"ED*;HP
M* #=\E1:[^RQ%V1>#M7/UV%B,=084-Q#OTQ3KN%;+\,0-4H,&:B+U4H*OY%F
MBY&50G(CR0 9DBD?_#*25%A*<+RSL#X;\J%!6T"%'(8B&I1S>E*%XA31T"RO
MQ'6BA"-"VK68+>*W$5!'##HX'L1S!)E70*W1:Z36VFY]B6'K!X2UB8;DG$I!
M_.%69W[OB5OD'I411"IN1 5PI)SD(ZFDFU.J==>T1'?/!0_SP-0;71?*$!]@
M+TN#\@)+9XL>@E+#.-9&> 5\03*&##,^A6S#%LB)QM0%BZW **2[S#'&O7%J
M+4[%KX-3IU.N"N_3"7"0)%A R"E"Q=Y1"%SE@6O$J'!Y=VW@*80#,;[84(&,
M=.%6:[!.%.57O8'*J^3K53<;586;]PH05J+:=:()WECP-1:(U\&"DP"P9:#2
M=E19!/B6.]GP#?&$$C$=QX4A."YD/7=(3;5U>)]^14)9%M>'_5Y@TH2B-U<,
M29!7Z.EO]2X5QPH?_$X:;;+Y;=B@UU;0:L+M58I(,<+S$(0/GGX]RL V9TI>
M@"JWU6[UK__?2_1<W/M."=5__*V#/X%.#]X]\#\9B(J,]6L/30%CD1#7SIH@
M_0VIX%*=<Z4=QUK':6.OLB]_ T6FJ70.X)YP.-*8WU&[D*B?%[*)M,'H8RFZ
MX7^JN"JNP^^%1/4]KXLL]GMP6V^;!#_2)L&1PAP>YY:(?]HJHDVG6 *BM<R<
MKHKU&? +2H5"3N^3(5^-^!] JBW<;^) 65>'C;H[G#H7.-#"E4]?R9>RAL$A
MAHX<(%U]/F8Q&;-%FG*#"^*-*6/IG9O=;[G6CU;%'V%*E1ATKG5$(OB0@%CV
M/Z&5H*^'C$1F4ZVF0&E)QL?E+X&FC"*0YDK/ 5MG$QWB!K]!*:3 H^1LS65@
MMOPYD1M'C)[]N$EG>^\AQTUZS9V]U<<T'GJ$H[/7[.YN/TCL?6V=9KN]]P2G
M6-J=[J-+C=K-?K?W%$=N=E:W/G1A2=>'/:Y[==UK]OOK*;2F?[_#B?F#>7^V
M*SY!1[6<L+W(J/(11J:@4Q+13MT?@/V^8\SN6D:]VXBVV]_R<!X_.W@!1G^G
MB/PP?R)JO3V2ASZ2=QL]S)G\Y^U#NB\N;7\!*'@S^K4;758(=%P=#6'^AW56
M*?6=.X,W!_#&A3>C7W? _P=D4AOV+QD#.S=@I2B/87_T&R1A6^]X(J&Z0ULF
MG\)N/KTMM7D>CA/@W:7VK34V5"HK2Z5ZM"N2Z_!:X""<69K"RE?ERJV4]O40
M/D(76[C50U:]MK7RM;'R,[P"Z%]&//P?4$L#!!0    ( ." 450VANDZ> 4
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
M]>JT^BQOKO4=^N&_4$L! A0#%     @ X(!15)15F3XIEP, F= F !$
M         ( !     &-G;G@M,C R,3$R,S$N:'1M4$L! A0#%     @ X(!1
M5"C=QM*%&P  TB\! !$              ( !6)<# &-G;G@M,C R,3$R,S$N
M>'-D4$L! A0#%     @ X(!15)2T,\$C+@  )-P! !4              ( !
M#+,# &-G;G@M,C R,3$R,S%?8V%L+GAM;%!+ 0(4 Q0    ( ." 451:/<+P
M_H,  &S8!0 5              "  6+A P!C9VYX+3(P,C$Q,C,Q7V1E9BYX
M;6Q02P$"% ,4    " #@@%%4AS$4QXY* @#&S0( %               @ &3
M900 8V=N>"TR,#(Q,3(S,5]G,2YJ<&=02P$"% ,4    " #@@%%4Y %,F11Y
M 0"+E0\ %0              @ %3L 8 8V=N>"TR,#(Q,3(S,5]L86(N>&UL
M4$L! A0#%     @ X(!15 !N<L1BZ   NLP* !4              ( !FBD(
M &-G;G@M,C R,3$R,S%?<')E+GAM;%!+ 0(4 Q0    ( ." 452J6ZL;LP\
M # P   <              "  2\2"0!C9VYX+3(P,C$Q,C,Q>&5X:&EB:70Q
M,&PN:'1M4$L! A0#%     @ X(!15"L'_-8X!P  WGX  !L
M ( !'"() &-G;G@M,C R,3$R,S%X97AH:6)I=#(Q+FAT;5!+ 0(4 Q0    (
M ." 451(7#'A7@,   4+   <              "  8TI"0!C9VYX+3(P,C$Q
M,C,Q>&5X:&EB:70R,S$N:'1M4$L! A0#%     @ X(!15"#(K-A2"   H3@
M !P              ( !)2T) &-G;G@M,C R,3$R,S%X97AH:6)I=#,Q,2YH
M=&U02P$"% ,4    " #@@%%4Y#M*^%X(  #G.   '               @ &Q
M-0D 8V=N>"TR,#(Q,3(S,7AE>&AI8FET,S$R+FAT;5!+ 0(4 Q0    ( ."
M450VANDZ> 4  *$?   <              "  4D^"0!C9VYX+3(P,C$Q,C,Q
M>&5X:&EB:70S,C$N:'1M4$L! A0#%     @ X(!15(2F.VQU!0  GA\  !P
M             ( !^T,) &-G;G@M,C R,3$R,S%X97AH:6)I=#,R,BYH=&U0
52P4&      X #@#1 P  JDD)

end
</TEXT>
</DOCUMENT>
</SEC-DOCUMENT>
